diff --git a/code/ATMOSPHERICS/_atmospherics_helpers.dm b/code/ATMOSPHERICS/_atmospherics_helpers.dm index a724fa11f0b..76b520a45fa 100644 --- a/code/ATMOSPHERICS/_atmospherics_helpers.dm +++ b/code/ATMOSPHERICS/_atmospherics_helpers.dm @@ -468,6 +468,10 @@ return "REGULAR" if(PIPING_LAYER_SCRUBBER) return "SCRUBBER" + if(PIPING_LAYER_FUEL) + return "FUEL" + if(PIPING_LAYER_AUX) + return "AUX" /proc/atmos_pipe_flags_str(pipe_flags) var/list/dat = list() @@ -489,6 +493,10 @@ dat += "SUPPLY" if(connect_types & CONNECT_TYPE_SCRUBBER) dat += "SCRUBBER" + if(connect_types & CONNECT_TYPE_FUEL) + dat += "FUEL" + if(connect_types & CONNECT_TYPE_AUX) + dat += "AUX" if(connect_types & CONNECT_TYPE_HE) dat += "HE" return dat.Join("|") diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm index acb1da7b022..6559f28f267 100644 --- a/code/ATMOSPHERICS/atmospherics.dm +++ b/code/ATMOSPHERICS/atmospherics.dm @@ -209,8 +209,18 @@ Pipelines + Other Objects -> Pipe network connect_types = CONNECT_TYPE_SUPPLY layer = PIPES_SUPPLY_LAYER icon_connect_type = "-supply" + if(PIPING_LAYER_FUEL) + icon_state = "[icon_state]-fuel" + connect_types = CONNECT_TYPE_FUEL + layer = PIPES_FUEL_LAYER + icon_connect_type = "-fuel" + if(PIPING_LAYER_AUX) + icon_state = "[icon_state]-aux" + connect_types = CONNECT_TYPE_AUX + layer = PIPES_AUX_LAYER + icon_connect_type = "-aux" if(pipe_flags & PIPING_ALL_LAYER) - connect_types = CONNECT_TYPE_REGULAR|CONNECT_TYPE_SUPPLY|CONNECT_TYPE_SCRUBBER + connect_types = CONNECT_TYPE_REGULAR|CONNECT_TYPE_SUPPLY|CONNECT_TYPE_SCRUBBER|CONNECT_TYPE_FUEL|CONNECT_TYPE_AUX // Or if we were to do it the TG way... // pixel_x = PIPE_PIXEL_OFFSET_X(piping_layer) // pixel_y = PIPE_PIXEL_OFFSET_Y(piping_layer) diff --git a/code/ATMOSPHERICS/components/binary_devices/circulator.dm b/code/ATMOSPHERICS/components/binary_devices/circulator.dm index 044d6b0c13d..72e623351a2 100644 --- a/code/ATMOSPHERICS/components/binary_devices/circulator.dm +++ b/code/ATMOSPHERICS/components/binary_devices/circulator.dm @@ -6,8 +6,8 @@ /obj/machinery/atmospherics/binary/circulator name = "circulator" desc = "A gas circulator turbine and heat exchanger." - icon = 'icons/obj/pipes.dmi' - icon_state = "circ-off" + icon = 'icons/obj/power.dmi' + icon_state = "circ-unassembled" anchored = 0 pipe_flags = PIPING_DEFAULT_LAYER_ONLY|PIPING_ONE_PER_TURF @@ -22,6 +22,7 @@ var/last_stored_energy_transferred = 0 var/volume_capacity_used = 0 var/stored_energy = 0 + var/temperature_overlay density = 1 @@ -76,15 +77,19 @@ update_icon() /obj/machinery/atmospherics/binary/circulator/update_icon() - if(stat & (BROKEN|NOPOWER) || !anchored) - icon_state = "circ-p" - else if(last_pressure_delta > 0 && recent_moles_transferred > 0) - if(last_pressure_delta > 5*ONE_ATMOSPHERE) - icon_state = "circ-run" + icon_state = anchored ? "circ-assembled" : "circ-unassembled" + cut_overlays() + if (stat & (BROKEN|NOPOWER) || !anchored) + return 1 + if (last_pressure_delta > 0 && recent_moles_transferred > 0) + if (temperature_overlay) + add_overlay(temperature_overlay) + if (last_pressure_delta > 5*ONE_ATMOSPHERE) + add_overlay("circ-run") else - icon_state = "circ-slow" + add_overlay("circ-slow") else - icon_state = "circ-off" + add_overlay("circ-off") return 1 @@ -97,6 +102,7 @@ "You hear a ratchet.") if(anchored) + temperature_overlay = null if(dir & (NORTH|SOUTH)) initialize_directions = NORTH|SOUTH else if(dir & (EAST|WEST)) diff --git a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm index 2f276160fe7..809cc987ebb 100644 --- a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm @@ -176,7 +176,7 @@ return 0 var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal + signal.transmission_method = TRANSMISSION_RADIO //radio signal signal.source = src signal.data = list( diff --git a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm index 191e6291ea6..1c501e87f0f 100644 --- a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm +++ b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm @@ -151,7 +151,7 @@ return 0 var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal + signal.transmission_method = TRANSMISSION_RADIO //radio signal signal.source = src signal.data = list( diff --git a/code/ATMOSPHERICS/components/binary_devices/pump.dm b/code/ATMOSPHERICS/components/binary_devices/pump.dm index e241cc944b9..0df02174976 100644 --- a/code/ATMOSPHERICS/components/binary_devices/pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/pump.dm @@ -18,6 +18,7 @@ Thus, the two variables affect pump operation are set in New(): construction_type = /obj/item/pipe/directional pipe_state = "pump" level = 1 + var/base_icon = "pump" name = "gas pump" desc = "A pump that moves gas from one place to another." @@ -49,12 +50,31 @@ Thus, the two variables affect pump operation are set in New(): icon_state = "map_on" use_power = USE_POWER_IDLE +/obj/machinery/atmospherics/binary/pump/fuel + icon_state = "map_off-fuel" + base_icon = "pump-fuel" + icon_connect_type = "-fuel" + connect_types = CONNECT_TYPE_FUEL + +/obj/machinery/atmospherics/binary/pump/fuel/on + icon_state = "map_on-fuel" + use_power = USE_POWER_IDLE + +/obj/machinery/atmospherics/binary/pump/aux + icon_state = "map_off-aux" + base_icon = "pump-aux" + icon_connect_type = "-aux" + connect_types = CONNECT_TYPE_AUX + +/obj/machinery/atmospherics/binary/pump/aux/on + icon_state = "map_on-aux" + use_power = USE_POWER_IDLE /obj/machinery/atmospherics/binary/pump/update_icon() if(!powered()) - icon_state = "off" + icon_state = "[base_icon]-off" else - icon_state = "[use_power ? "on" : "off"]" + icon_state = "[use_power ? "[base_icon]-on" : "[base_icon]-off"]" /obj/machinery/atmospherics/binary/pump/update_underlays() if(..()) @@ -62,8 +82,8 @@ Thus, the two variables affect pump operation are set in New(): var/turf/T = get_turf(src) if(!istype(T)) return - add_underlay(T, node1, turn(dir, -180)) - add_underlay(T, node2, dir) + add_underlay(T, node1, turn(dir, -180), node1?.icon_connect_type) + add_underlay(T, node2, dir, node2?.icon_connect_type) /obj/machinery/atmospherics/binary/pump/hide(var/i) update_underlays() @@ -108,7 +128,7 @@ Thus, the two variables affect pump operation are set in New(): return 0 var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal + signal.transmission_method = TRANSMISSION_RADIO //radio signal signal.source = src signal.data = list( diff --git a/code/ATMOSPHERICS/components/portables_connector.dm b/code/ATMOSPHERICS/components/portables_connector.dm index fd5033100b1..5b489441db3 100644 --- a/code/ATMOSPHERICS/components/portables_connector.dm +++ b/code/ATMOSPHERICS/components/portables_connector.dm @@ -21,6 +21,20 @@ use_power = USE_POWER_OFF level = 1 +/obj/machinery/atmospherics/portables_connector/fuel + icon_state = "map_connector-fuel" + pipe_state = "connector-fuel" + icon_connect_type = "-fuel" + pipe_flags = PIPING_ONE_PER_TURF + connect_types = CONNECT_TYPE_FUEL + +/obj/machinery/atmospherics/portables_connector/aux + icon_state = "map_connector-aux" + pipe_state = "connector-aux" + icon_connect_type = "-aux" + pipe_flags = PIPING_ONE_PER_TURF + connect_types = CONNECT_TYPE_AUX + /obj/machinery/atmospherics/portables_connector/init_dir() initialize_directions = dir @@ -33,7 +47,7 @@ var/turf/T = get_turf(src) if(!istype(T)) return - add_underlay(T, node, dir) + add_underlay(T, node, dir, node?.icon_connect_type) /obj/machinery/atmospherics/portables_connector/hide(var/i) update_underlays() diff --git a/code/ATMOSPHERICS/components/unary/outlet_injector.dm b/code/ATMOSPHERICS/components/unary/outlet_injector.dm index 3c342c3cdbe..5eeab2c8e48 100644 --- a/code/ATMOSPHERICS/components/unary/outlet_injector.dm +++ b/code/ATMOSPHERICS/components/unary/outlet_injector.dm @@ -107,7 +107,7 @@ return 0 var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal + signal.transmission_method = TRANSMISSION_RADIO //radio signal signal.source = src signal.data = list( diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index 534d8e01305..194a28ddc93 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -53,6 +53,11 @@ use_power = USE_POWER_IDLE icon_state = "map_vent_out" +/obj/machinery/atmospherics/unary/vent_pump/aux + icon_state = "map_vent_aux" + icon_connect_type = "-aux" + connect_types = CONNECT_TYPE_AUX //connects to aux pipes + /obj/machinery/atmospherics/unary/vent_pump/siphon pump_direction = 0 @@ -80,7 +85,7 @@ icon = null initial_loc = get_area(loc) - area_uid = initial_loc.uid + area_uid = "\ref[initial_loc]" if (!id_tag) assign_uid() id_tag = num2text(uid) @@ -98,6 +103,11 @@ power_channel = EQUIP power_rating = 45000 //15 kW ~ 20 HP //VOREStation Edit - 45000 +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux + icon_state = "map_vent_aux" + icon_connect_type = "-aux" + connect_types = CONNECT_TYPE_AUX //connects to aux pipes + /obj/machinery/atmospherics/unary/vent_pump/high_volume/New() ..() air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP + 800 @@ -253,7 +263,7 @@ return 0 var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal + signal.transmission_method = TRANSMISSION_RADIO //radio signal signal.source = src signal.data = list( diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm index 6e3f9ef0422..1c1c696b989 100644 --- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm @@ -38,7 +38,7 @@ icon = null initial_loc = get_area(loc) - area_uid = initial_loc.uid + area_uid = "\ref[initial_loc]" if (!id_tag) assign_uid() id_tag = num2text(uid) @@ -93,7 +93,7 @@ return 0 var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal + signal.transmission_method = TRANSMISSION_RADIO //radio signal signal.source = src signal.data = list( "area" = area_uid, diff --git a/code/ATMOSPHERICS/pipes/cap.dm b/code/ATMOSPHERICS/pipes/cap.dm index 1e32aa62952..2a63bb3a20a 100644 --- a/code/ATMOSPHERICS/pipes/cap.dm +++ b/code/ATMOSPHERICS/pipes/cap.dm @@ -93,6 +93,26 @@ icon_connect_type = "-supply" color = PIPE_COLOR_BLUE +/obj/machinery/atmospherics/pipe/cap/visible/fuel + name = "fuel pipe endcap" + desc = "An endcap for fuel pipes" + icon_state = "cap-fuel" + connect_types = CONNECT_TYPE_FUEL + piping_layer = PIPING_LAYER_FUEL + layer = PIPES_FUEL_LAYER + icon_connect_type = "-fuel" + color = PIPE_COLOR_YELLOW + +/obj/machinery/atmospherics/pipe/cap/visible/aux + name = "aux pipe endcap" + desc = "An endcap for aux pipes" + icon_state = "cap-aux" + connect_types = CONNECT_TYPE_AUX + piping_layer = PIPING_LAYER_AUX + layer = PIPES_AUX_LAYER + icon_connect_type = "-aux" + color = PIPE_COLOR_CYAN + /obj/machinery/atmospherics/pipe/cap/hidden level = 1 icon_state = "cap" @@ -117,3 +137,23 @@ layer = PIPES_SUPPLY_LAYER icon_connect_type = "-supply" color = PIPE_COLOR_BLUE + +/obj/machinery/atmospherics/pipe/cap/visible/fuel + name = "fuel pipe endcap" + desc = "An endcap for fuel pipes" + icon_state = "cap-f-fuel" + connect_types = CONNECT_TYPE_FUEL + piping_layer = PIPING_LAYER_FUEL + layer = PIPES_FUEL_LAYER + icon_connect_type = "-fuel" + color = PIPE_COLOR_YELLOW + +/obj/machinery/atmospherics/pipe/cap/hidden/aux + name = "aux pipe endcap" + desc = "An endcap for aux pipes" + icon_state = "cap-f-aux" + connect_types = CONNECT_TYPE_AUX + piping_layer = PIPING_LAYER_AUX + layer = PIPES_AUX_LAYER + icon_connect_type = "-aux" + color = PIPE_COLOR_CYAN \ No newline at end of file diff --git a/code/ATMOSPHERICS/pipes/manifold.dm b/code/ATMOSPHERICS/pipes/manifold.dm index f44bfc56866..a17f78e50df 100644 --- a/code/ATMOSPHERICS/pipes/manifold.dm +++ b/code/ATMOSPHERICS/pipes/manifold.dm @@ -108,16 +108,23 @@ underlays.Cut() var/turf/T = get_turf(src) - var/list/directions = list(NORTH, SOUTH, EAST, WEST) - var/node1_direction = get_dir(src, node1) - var/node2_direction = get_dir(src, node2) - var/node3_direction = get_dir(src, node3) + // Unfortunately our nodes are not in consistent directions (see atmos_init()) so do the dance... + var/list/directions = list(NORTH, SOUTH, EAST, WEST) // UN-connected directions directions -= dir + if(node1) + var/node1_direction = get_dir(src, node1) + add_underlay(T, node1, node1_direction, icon_connect_type) + directions -= node1_direction + if(node2) + var/node2_direction = get_dir(src, node2) + add_underlay(T, node2, node2_direction, icon_connect_type) + directions -= node2_direction + if(node3) + var/node3_direction = get_dir(src, node3) + add_underlay(T, node3, node3_direction, icon_connect_type) + directions -= node3_direction - directions -= add_underlay(T,node1,node1_direction,icon_connect_type) - directions -= add_underlay(T,node2,node2_direction,icon_connect_type) - directions -= add_underlay(T,node3,node3_direction,icon_connect_type) for(var/D in directions) add_underlay(T,,D,icon_connect_type) @@ -195,6 +202,26 @@ icon_connect_type = "-supply" color = PIPE_COLOR_BLUE +/obj/machinery/atmospherics/pipe/manifold/visible/fuel + name="Fuel pipe manifold" + desc = "A manifold composed of fuel pipes" + icon_state = "map-fuel" + connect_types = CONNECT_TYPE_FUEL + piping_layer = PIPING_LAYER_FUEL + layer = PIPES_FUEL_LAYER + icon_connect_type = "-fuel" + color = PIPE_COLOR_YELLOW + +/obj/machinery/atmospherics/pipe/manifold/visible/aux + name="Aux pipe manifold" + desc = "A manifold composed of aux pipes" + icon_state = "map-aux" + connect_types = CONNECT_TYPE_AUX + piping_layer = PIPING_LAYER_AUX + layer = PIPES_AUX_LAYER + icon_connect_type = "-aux" + color = PIPE_COLOR_CYAN + /obj/machinery/atmospherics/pipe/manifold/visible/yellow color = PIPE_COLOR_YELLOW @@ -241,6 +268,26 @@ icon_connect_type = "-supply" color = PIPE_COLOR_BLUE +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel + name="Fuel pipe manifold" + desc = "A manifold composed of fuel pipes" + icon_state = "map-fuel" + connect_types = CONNECT_TYPE_FUEL + piping_layer = PIPING_LAYER_FUEL + layer = PIPES_FUEL_LAYER + icon_connect_type = "-fuel" + color = PIPE_COLOR_YELLOW + +/obj/machinery/atmospherics/pipe/manifold/hidden/aux + name="Aux pipe manifold" + desc = "A manifold composed of aux pipes" + icon_state = "map-aux" + connect_types = CONNECT_TYPE_AUX + piping_layer = PIPING_LAYER_AUX + layer = PIPES_AUX_LAYER + icon_connect_type = "-aux" + color = PIPE_COLOR_CYAN + /obj/machinery/atmospherics/pipe/manifold/hidden/yellow color = PIPE_COLOR_YELLOW diff --git a/code/ATMOSPHERICS/pipes/manifold4w.dm b/code/ATMOSPHERICS/pipes/manifold4w.dm index 197c1a090b7..7273ac5288e 100644 --- a/code/ATMOSPHERICS/pipes/manifold4w.dm +++ b/code/ATMOSPHERICS/pipes/manifold4w.dm @@ -107,36 +107,12 @@ overlays += icon_manager.get_atmos_icon("manifold", , , "clamps_4way" + icon_connect_type) underlays.Cut() - /* - var/list/directions = list(NORTH, SOUTH, EAST, WEST) - - - directions -= add_underlay(node1) - directions -= add_underlay(node2) - directions -= add_underlay(node3) - directions -= add_underlay(node4) - - for(var/D in directions) - add_underlay(,D) - */ - var/turf/T = get_turf(src) - var/list/directions = list(NORTH, SOUTH, EAST, WEST) - var/node1_direction = get_dir(src, node1) - var/node2_direction = get_dir(src, node2) - var/node3_direction = get_dir(src, node3) - var/node4_direction = get_dir(src, node4) - - directions -= dir - - directions -= add_underlay(T,node1,node1_direction,icon_connect_type) - directions -= add_underlay(T,node2,node2_direction,icon_connect_type) - directions -= add_underlay(T,node3,node3_direction,icon_connect_type) - directions -= add_underlay(T,node4,node4_direction,icon_connect_type) - - for(var/D in directions) - add_underlay(T,,D,icon_connect_type) - + // Take advantage of the fact that our nodes are *always* in the same directions (see atmos_init()) + add_underlay(T, node1, NORTH, icon_connect_type) + add_underlay(T, node2, SOUTH, icon_connect_type) + add_underlay(T, node3, EAST, icon_connect_type) + add_underlay(T, node4, WEST, icon_connect_type) /obj/machinery/atmospherics/pipe/manifold4w/update_underlays() ..() @@ -197,6 +173,26 @@ icon_connect_type = "-supply" color = PIPE_COLOR_BLUE +/obj/machinery/atmospherics/pipe/manifold4w/visible/fuel + name="4-way fuel pipe manifold" + desc = "A manifold composed of fuel pipes" + icon_state = "map_4way-fuel" + connect_types = CONNECT_TYPE_FUEL + piping_layer = PIPING_LAYER_FUEL + layer = PIPES_FUEL_LAYER + icon_connect_type = "-fuel" + color = PIPE_COLOR_YELLOW + +/obj/machinery/atmospherics/pipe/manifold4w/visible/aux + name="4-way aux pipe manifold" + desc = "A manifold composed of aux pipes" + icon_state = "map_4way-aux" + connect_types = CONNECT_TYPE_AUX + piping_layer = PIPING_LAYER_AUX + layer = PIPES_AUX_LAYER + icon_connect_type = "-aux" + color = PIPE_COLOR_CYAN + /obj/machinery/atmospherics/pipe/manifold4w/visible/yellow color = PIPE_COLOR_YELLOW @@ -243,6 +239,26 @@ icon_connect_type = "-supply" color = PIPE_COLOR_BLUE +/obj/machinery/atmospherics/pipe/manifold4w/hidden/fuel + name="4-way fuel pipe manifold" + desc = "A manifold composed of fuel pipes" + icon_state = "map_4way-fuel" + connect_types = CONNECT_TYPE_FUEL + piping_layer = PIPING_LAYER_FUEL + layer = PIPES_FUEL_LAYER + icon_connect_type = "-fuel" + color = PIPE_COLOR_YELLOW + +/obj/machinery/atmospherics/pipe/manifold4w/hidden/aux + name="4-way aux pipe manifold" + desc = "A manifold composed of aux pipes" + icon_state = "map_4way-aux" + connect_types = CONNECT_TYPE_AUX + piping_layer = PIPING_LAYER_AUX + layer = PIPES_AUX_LAYER + icon_connect_type = "-aux" + color = PIPE_COLOR_CYAN + /obj/machinery/atmospherics/pipe/manifold4w/hidden/yellow color = PIPE_COLOR_YELLOW diff --git a/code/ATMOSPHERICS/pipes/simple.dm b/code/ATMOSPHERICS/pipes/simple.dm index eb980c3b476..215f3498b78 100644 --- a/code/ATMOSPHERICS/pipes/simple.dm +++ b/code/ATMOSPHERICS/pipes/simple.dm @@ -203,6 +203,26 @@ icon_connect_type = "-supply" color = PIPE_COLOR_BLUE +/obj/machinery/atmospherics/pipe/simple/visible/fuel + name = "Fuel pipe" + desc = "A one meter section of fuel pipe" + icon_state = "intact-fuel" + connect_types = CONNECT_TYPE_FUEL + piping_layer = PIPING_LAYER_FUEL + layer = PIPES_FUEL_LAYER + icon_connect_type = "-fuel" + color = PIPE_COLOR_YELLOW + +/obj/machinery/atmospherics/pipe/simple/visible/aux + name = "Aux pipe" + desc = "A one meter section of aux pipe" + icon_state = "intact-aux" + connect_types = CONNECT_TYPE_AUX + piping_layer = PIPING_LAYER_AUX + layer = PIPES_AUX_LAYER + icon_connect_type = "-aux" + color = PIPE_COLOR_CYAN + /obj/machinery/atmospherics/pipe/simple/visible/yellow color = PIPE_COLOR_YELLOW @@ -249,6 +269,26 @@ icon_connect_type = "-supply" color = PIPE_COLOR_BLUE +/obj/machinery/atmospherics/pipe/simple/hidden/fuel + name = "Fuel pipe" + desc = "A one meter section of fuel pipe" + icon_state = "intact-fuel" + connect_types = CONNECT_TYPE_FUEL + piping_layer = PIPING_LAYER_FUEL + layer = PIPES_FUEL_LAYER + icon_connect_type = "-fuel" + color = PIPE_COLOR_YELLOW + +/obj/machinery/atmospherics/pipe/simple/hidden/aux + name = "Aux pipe" + desc = "A one meter section of aux pipe" + icon_state = "intact-aux" + connect_types = CONNECT_TYPE_AUX + piping_layer = PIPING_LAYER_AUX + layer = PIPES_AUX_LAYER + icon_connect_type = "-aux" + color = PIPE_COLOR_CYAN + /obj/machinery/atmospherics/pipe/simple/hidden/yellow color = PIPE_COLOR_YELLOW diff --git a/code/ATMOSPHERICS/pipes/tank.dm b/code/ATMOSPHERICS/pipes/tank.dm index 751c9ed6076..8a68ba369c5 100644 --- a/code/ATMOSPHERICS/pipes/tank.dm +++ b/code/ATMOSPHERICS/pipes/tank.dm @@ -136,6 +136,7 @@ /obj/machinery/atmospherics/pipe/tank/phoron name = "Pressure Tank (Phoron)" icon_state = "phoron_map" + connect_types = CONNECT_TYPE_REGULAR|CONNECT_TYPE_FUEL /obj/machinery/atmospherics/pipe/tank/phoron/New() air_temporary = new diff --git a/code/ATMOSPHERICS/pipes/universal.dm b/code/ATMOSPHERICS/pipes/universal.dm index 00d2746947a..a72ef219f78 100644 --- a/code/ATMOSPHERICS/pipes/universal.dm +++ b/code/ATMOSPHERICS/pipes/universal.dm @@ -4,7 +4,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/universal name="Universal pipe adapter" desc = "An adapter for regular, supply and scrubbers pipes" - connect_types = CONNECT_TYPE_REGULAR|CONNECT_TYPE_SUPPLY|CONNECT_TYPE_SCRUBBER + connect_types = CONNECT_TYPE_REGULAR|CONNECT_TYPE_SUPPLY|CONNECT_TYPE_SCRUBBER|CONNECT_TYPE_FUEL|CONNECT_TYPE_AUX icon_state = "map_universal" pipe_flags = PIPING_ALL_LAYER|PIPING_CARDINAL_AUTONORMALIZE construction_type = /obj/item/pipe/binary @@ -42,7 +42,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/universal name="Universal pipe adapter" desc = "An adapter for regular, supply and scrubbers pipes" - connect_types = CONNECT_TYPE_REGULAR|CONNECT_TYPE_SUPPLY|CONNECT_TYPE_SCRUBBER + connect_types = CONNECT_TYPE_REGULAR|CONNECT_TYPE_SUPPLY|CONNECT_TYPE_SCRUBBER|CONNECT_TYPE_FUEL|CONNECT_TYPE_AUX icon_state = "map_universal" pipe_flags = PIPING_ALL_LAYER|PIPING_CARDINAL_AUTONORMALIZE construction_type = /obj/item/pipe/binary @@ -81,21 +81,42 @@ var/turf/T = loc if(node) var/node_dir = get_dir(src,node) - if(node.icon_connect_type == "-supply") - add_underlay_adapter(T, , node_dir, "") - add_underlay_adapter(T, node, node_dir, "-supply") - add_underlay_adapter(T, , node_dir, "-scrubbers") - else if (node.icon_connect_type == "-scrubbers") - add_underlay_adapter(T, , node_dir, "") - add_underlay_adapter(T, , node_dir, "-supply") - add_underlay_adapter(T, node, node_dir, "-scrubbers") - else - add_underlay_adapter(T, node, node_dir, "") - add_underlay_adapter(T, , node_dir, "-supply") - add_underlay_adapter(T, , node_dir, "-scrubbers") + switch(node.icon_connect_type) + if("-supply") + add_underlay_adapter(T, , node_dir, "") + add_underlay_adapter(T, node, node_dir, "-supply") + add_underlay_adapter(T, , node_dir, "-scrubbers") + add_underlay_adapter(T, , node_dir, "-fuel") + add_underlay_adapter(T, , node_dir, "-aux") + if ("-scrubbers") + add_underlay_adapter(T, , node_dir, "") + add_underlay_adapter(T, , node_dir, "-supply") + add_underlay_adapter(T, node, node_dir, "-scrubbers") + add_underlay_adapter(T, , node_dir, "-fuel") + add_underlay_adapter(T, , node_dir, "-aux") + if ("-fuel") + add_underlay_adapter(T, , node_dir, "") + add_underlay_adapter(T, , node_dir, "-supply") + add_underlay_adapter(T, , node_dir, "-scrubbers") + add_underlay_adapter(T, node, node_dir, "-fuel") + add_underlay_adapter(T, , node_dir, "-aux") + if ("-aux") + add_underlay_adapter(T, , node_dir, "") + add_underlay_adapter(T, , node_dir, "-supply") + add_underlay_adapter(T, , node_dir, "-scrubbers") + add_underlay_adapter(T, , node_dir, "-fuel") + add_underlay_adapter(T, node, node_dir, "-aux") + else + add_underlay_adapter(T, node, node_dir, "") + add_underlay_adapter(T, , node_dir, "-supply") + add_underlay_adapter(T, , node_dir, "-scrubbers") + add_underlay_adapter(T, , node_dir, "-fuel") + add_underlay_adapter(T, , node_dir, "-aux") else add_underlay_adapter(T, , direction, "-supply") add_underlay_adapter(T, , direction, "-scrubbers") + add_underlay_adapter(T, , direction, "-fuel") + add_underlay_adapter(T, , direction, "-aux") add_underlay_adapter(T, , direction, "") /obj/machinery/atmospherics/proc/add_underlay_adapter(var/turf/T, var/obj/machinery/atmospherics/node, var/direction, var/icon_connect_type) //modified from add_underlay, does not make exposed underlays diff --git a/code/ATMOSPHERICS/pipes/vent.dm b/code/ATMOSPHERICS/pipes/vent.dm index 4a1dc5696dc..5090631a2be 100644 --- a/code/ATMOSPHERICS/pipes/vent.dm +++ b/code/ATMOSPHERICS/pipes/vent.dm @@ -16,7 +16,7 @@ initialize_directions = SOUTH pipe_flags = PIPING_DEFAULT_LAYER_ONLY construction_type = /obj/item/pipe/directional - pipe_state = "passive vent" + pipe_state = "passive_vent" var/build_killswitch = 1 diff --git a/code/__defines/MC.dm b/code/__defines/MC.dm index 6acc667f2d9..57161ffac8c 100644 --- a/code/__defines/MC.dm +++ b/code/__defines/MC.dm @@ -1,4 +1,5 @@ #define MC_TICK_CHECK ( ( TICK_USAGE > Master.current_ticklimit || src.state != SS_RUNNING ) ? pause() : 0 ) +#define CURRENT_RUNLEVEL (2 ** (Master.current_runlevel - 1)) #define MC_SPLIT_TICK_INIT(phase_count) var/original_tick_limit = Master.current_ticklimit; var/split_tick_phases = ##phase_count #define MC_SPLIT_TICK \ diff --git a/code/__defines/_tick.dm b/code/__defines/_tick.dm index 1f112f711ba..54ac7d398d9 100644 --- a/code/__defines/_tick.dm +++ b/code/__defines/_tick.dm @@ -1,5 +1,5 @@ -#define TICK_LIMIT_RUNNING 85 //VOREStation Emergency Edit +#define TICK_LIMIT_RUNNING 80 #define TICK_LIMIT_TO_RUN 70 #define TICK_LIMIT_MC 70 #define TICK_LIMIT_MC_INIT_DEFAULT 98 diff --git a/code/__defines/construction.dm b/code/__defines/construction.dm index f1488033225..5c0d6404477 100644 --- a/code/__defines/construction.dm +++ b/code/__defines/construction.dm @@ -34,19 +34,25 @@ #define PIPE_TRIN_T 7 //8 directions: N->S+E, S->N+E, N->S+W, S->N+W, E->W+S, W->E+S, E->W+N, W->E+N // Pipe connectivity bit flags -#define CONNECT_TYPE_REGULAR 1 -#define CONNECT_TYPE_SUPPLY 2 -#define CONNECT_TYPE_SCRUBBER 4 -#define CONNECT_TYPE_HE 8 -#define CONNECT_TYPE_FUEL 16 // TODO - Implement this! Its piping so better ask Leshana +#define CONNECT_TYPE_REGULAR 1 //Center of tile, 'normal' +#define CONNECT_TYPE_SUPPLY 2 //Atmos air supply pipes +#define CONNECT_TYPE_SCRUBBER 4 //Atmos air scrubber pipes +#define CONNECT_TYPE_HE 8 //Heat exchanger pipes +#define CONNECT_TYPE_FUEL 16 //Fuel pipes for overmap ships +#define CONNECT_TYPE_AUX 32 //Aux pipes for 'other' things (airlocks, etc) // We are based on the three named layers of supply, regular, and scrubber. #define PIPING_LAYER_SUPPLY 1 #define PIPING_LAYER_REGULAR 2 #define PIPING_LAYER_SCRUBBER 3 +#define PIPING_LAYER_FUEL 4 +#define PIPING_LAYER_AUX 5 #define PIPING_LAYER_DEFAULT PIPING_LAYER_REGULAR // We offset the layer values of the different pipe types to ensure they look nice +#define PIPES_SCRUBBER_LAYER (PIPES_LAYER - 0.05) +#define PIPES_AUX_LAYER (PIPES_LAYER - 0.04) +#define PIPES_FUEL_LAYER (PIPES_LAYER - 0.03) #define PIPES_SCRUBBER_LAYER (PIPES_LAYER - 0.02) #define PIPES_SUPPLY_LAYER (PIPES_LAYER - 0.01) #define PIPES_HE_LAYER (PIPES_LAYER + 0.01) diff --git a/code/__defines/gamemode.dm b/code/__defines/gamemode.dm index 59d2879ba54..02f1b11ee13 100644 --- a/code/__defines/gamemode.dm +++ b/code/__defines/gamemode.dm @@ -1,7 +1,16 @@ -#define GAME_STATE_PREGAME 1 -#define GAME_STATE_SETTING_UP 2 -#define GAME_STATE_PLAYING 3 -#define GAME_STATE_FINISHED 4 +// Ticker game states, turns out these are equivilent to runlevels1 +#define GAME_STATE_INIT 0 // RUNLEVEL_INIT +#define GAME_STATE_PREGAME 1 // RUNLEVEL_LOBBY +#define GAME_STATE_SETTING_UP 2 // RUNLEVEL_SETUP +#define GAME_STATE_PLAYING 3 // RUNLEVEL_GAME +#define GAME_STATE_FINISHED 4 // RUNLEVEL_POSTGAME + +//End game state, to manage round end. +#define END_GAME_NOT_OVER 1 // Still playing normally +#define END_GAME_MODE_FINISHED 2 // Mode has finished but game has not, wait for game to end too. +#define END_GAME_READY_TO_END 3 // Game and Mode have finished, do rounded stuff. +#define END_GAME_ENDING 4 // Just waiting for ending timer. +#define END_GAME_DELAYED 5 // Admin has delayed the round. // Security levels. #define SEC_LEVEL_GREEN 0 diff --git a/code/__defines/is_helpers.dm b/code/__defines/is_helpers.dm index 47226383ea8..e121f552168 100644 --- a/code/__defines/is_helpers.dm +++ b/code/__defines/is_helpers.dm @@ -52,3 +52,4 @@ //--------------- //#define isturf(D) istype(D, /turf) //Built in #define isopenspace(A) istype(A, /turf/simulated/open) +#define isspace(A) istype(A, /turf/space) diff --git a/code/__defines/machinery.dm b/code/__defines/machinery.dm index ed07f11c1e4..3c561cc291d 100644 --- a/code/__defines/machinery.dm +++ b/code/__defines/machinery.dm @@ -70,10 +70,27 @@ var/global/defer_powernet_rebuild = 0 // True if net rebuild will be called #define NETWORK_ALARM_ATMOS "Atmosphere Alarms" #define NETWORK_ALARM_POWER "Power Alarms" #define NETWORK_ALARM_FIRE "Fire Alarms" +#define NETWORK_TALON_HELMETS "TalonHelmets" //VOREStation Add +#define NETWORK_TALON_SHIP "TalonShip" //VOREStation Add // Those networks can only be accessed by pre-existing terminals. AIs and new terminals can't use them. var/list/restricted_camera_networks = list(NETWORK_ERT,NETWORK_MERCENARY,"Secret", NETWORK_COMMUNICATORS) +#define TRANSMISSION_WIRE 0 //Is this ever used? I don't think it is. +#define TRANSMISSION_RADIO 1 //Radio transmissions (like airlock controller to pump) +#define TRANSMISSION_SUBSPACE 2 //Like headsets +#define TRANSMISSION_BLUESPACE 3 //Point-to-point links + +#define SIGNAL_NORMAL 0 //Normal subspace signals +#define SIGNAL_SIMPLE 1 //Normal inter-machinery(?) signals +#define SIGNAL_FAKE 2 //Untrackable signals +#define SIGNAL_TEST 4 //Unlogged signals + +#define DATA_NORMAL 0 //Normal data +#define DATA_INTERCOM 1 //Intercoms only +#define DATA_LOCAL 2 //Intercoms and SBRs +#define DATA_ANTAG 3 //Antag interception +#define DATA_FAKE 4 //Not from a real mob //singularity defines #define STAGE_ONE 1 diff --git a/code/__defines/misc_vr.dm b/code/__defines/misc_vr.dm index e6a71a36144..bf6cb4d150a 100644 --- a/code/__defines/misc_vr.dm +++ b/code/__defines/misc_vr.dm @@ -55,4 +55,6 @@ #define PTO_SCIENCE "Science" #define PTO_EXPLORATION "Exploration" #define PTO_CARGO "Cargo" -#define PTO_CIVILIAN "Civilian" \ No newline at end of file +#define PTO_CIVILIAN "Civilian" + +#define DEPARTMENT_TALON "ITV Talon" diff --git a/code/__defines/preferences.dm b/code/__defines/preferences.dm new file mode 100644 index 00000000000..0bb289d2e14 --- /dev/null +++ b/code/__defines/preferences.dm @@ -0,0 +1,6 @@ +#define EXAMINE_MODE_DEFAULT 0 +#define EXAMINE_MODE_INCLUDE_USAGE 1 +#define EXAMINE_MODE_SWITCH_TO_PANEL 2 + +// Should be one higher than the above +#define EXAMINE_MODE_MAX 3 \ No newline at end of file diff --git a/code/__defines/shields.dm b/code/__defines/shields.dm new file mode 100644 index 00000000000..be892a1d6eb --- /dev/null +++ b/code/__defines/shields.dm @@ -0,0 +1,49 @@ + +#define SHIELD_DAMTYPE_PHYSICAL 1 // Physical damage - bullets, meteors, various hand objects - aka. "brute" damtype. +#define SHIELD_DAMTYPE_EM 2 // Electromagnetic damage - Ion weaponry, stun beams, ... +#define SHIELD_DAMTYPE_HEAT 3 // Heat damage - Lasers, fire + +// TODO - Thats power not energy you silly goose! I think we mean 45 kilojoules +#define ENERGY_PER_HP (45 KILOWATTS)// Base amount energy that will be deducted from the generator's internal reserve per 1 HP of damage taken +#define ENERGY_UPKEEP_PER_TILE (4 KILOWATTS) // Base upkeep per tile protected. Multiplied by various enabled shield modes. Without them the field does literally nothing. +#define ENERGY_UPKEEP_IDLE 45 // Base upkeep when idle; modified by other factors. + +// This shield model is slightly inspired by Sins of a Solar Empire series. In short, shields are designed to analyze what hits them, and adapt themselves against that type of damage. +// This means shields will become increasingly effective against things like emitters - as they will adapt to heat damage, however they will be vulnerable to brute and EM damage. +// In a theoretical assault scenario, it is best to combine all damage types, so mitigation can't build up. The value is capped to prevent full scale invulnerability. + +#define MAX_MITIGATION_BASE 40 // % Base maximal reachable mitigation. +#define MAX_MITIGATION_RESEARCH 10 // % Added to MAX_MITIGATION_BASE when generator is built using more advanced components. This value is added for each "tier" of used component, ie. basic one has 1, the best one has 5. Actual maximum should be 90% in this case (with best components). Make sure you won't get above 100%! +#define MITIGATION_HIT_GAIN 5 // Mitigation gain per hit of respective damage type. +#define MITIGATION_HIT_LOSS 4 // Mitigation loss per hit. If we get hit once by EM damage type, EM mitigation will grow, while Physical and Heat mitigation values drop. +#define MITIGATION_LOSS_PASSIVE 0.5 // Mitigation of all damage types will drop by this every tick, up to 0. + +// Shield modes allow you to calibrate the field to fit specific needs. It is, for example, possible to create a field that will block airflow, but let people pass. +// Relevant mode bitflags (maximal of 16 flags due to current BYOND limitations) +#define MODEFLAG_HYPERKINETIC 1 +#define MODEFLAG_PHOTONIC 2 +#define MODEFLAG_NONHUMANS 4 +#define MODEFLAG_HUMANOIDS 8 +#define MODEFLAG_ANORGANIC 16 +#define MODEFLAG_ATMOSPHERIC 32 +#define MODEFLAG_HULL 64 +#define MODEFLAG_BYPASS 128 +#define MODEFLAG_OVERCHARGE 256 +#define MODEFLAG_MODULATE 512 +#define MODEFLAG_MULTIZ 1024 +#define MODEFLAG_EM 2048 + +// Return codes for shield hits. +#define SHIELD_ABSORBED 1 // The shield has completely absorbed the hit +#define SHIELD_BREACHED_MINOR 2 // The hit was absorbed, but a small gap will be created in the field (1-3 tiles) +#define SHIELD_BREACHED_MAJOR 3 // Same as above, with 2-5 tile gap +#define SHIELD_BREACHED_CRITICAL 4 // Same as above, with 4-8 tile gap +#define SHIELD_BREACHED_FAILURE 5 // Same as above, with 8-16 tile gap. Occurs when the hit exhausts all remaining shield energy. + +#define SHIELD_OFF 0 // The shield is offline +#define SHIELD_DISCHARGING 1 // The shield is shutting down and discharging. +#define SHIELD_RUNNING 2 // The shield is running +#define SHIELD_IDLE 3 // The shield is being kept at an idle state +#define SHIELD_SPINNING_UP 4 // Going from idle to running + +#define SHIELD_SHUTDOWN_DISPERSION_RATE (10000 KILOWATTS) // The rate at which shield energy disperses when shutdown is initiated. diff --git a/code/__defines/species_languages.dm b/code/__defines/species_languages.dm index bacd4ebd370..656b0dff2ab 100644 --- a/code/__defines/species_languages.dm +++ b/code/__defines/species_languages.dm @@ -53,6 +53,7 @@ #define LANGUAGE_AKHANI "Akhani" #define LANGUAGE_ALAI "Alai" #define LANGUAGE_ZADDAT "Vedahq" +#define LANGUAGE_BLOB "Blob" #define LANGUAGE_GIBBERISH "Babel" // Language flags. diff --git a/code/__defines/subsystems.dm b/code/__defines/subsystems.dm index 1790890dfbb..37f4bff5f9d 100644 --- a/code/__defines/subsystems.dm +++ b/code/__defines/subsystems.dm @@ -57,6 +57,7 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G #define INIT_ORDER_SKYBOX 30 #define INIT_ORDER_MAPPING 25 #define INIT_ORDER_DECALS 20 +#define INIT_ORDER_JOB 17 #define INIT_ORDER_ATOMS 15 #define INIT_ORDER_MACHINES 10 #define INIT_ORDER_SHUTTLES 3 @@ -69,10 +70,12 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G #define INIT_ORDER_HOLOMAPS -5 #define INIT_ORDER_OVERLAY -6 #define INIT_ORDER_ALARM -7 +#define INIT_ORDER_OPENSPACE -10 #define INIT_ORDER_XENOARCH -20 #define INIT_ORDER_CIRCUIT -21 #define INIT_ORDER_AI -22 -#define INIT_ORDER_JOB -23 +#define INIT_ORDER_GAME_MASTER -24 +#define INIT_ORDER_TICKER -50 #define INIT_ORDER_CHAT -100 //Should be last to ensure chat remains smooth during init. @@ -91,6 +94,7 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G #define FIRE_PRIORITY_OBJ 40 #define FIRE_PRIORITY_PROCESS 45 #define FIRE_PRIORITY_DEFAULT 50 +#define FIRE_PRIORITY_TICKER 60 #define FIRE_PRIORITY_PLANETS 75 #define FIRE_PRIORITY_MACHINES 100 #define FIRE_PRIORITY_PROJECTILES 150 diff --git a/code/__defines/typeids.dm b/code/__defines/typeids.dm index 53028be2943..6ee99f62a05 100644 --- a/code/__defines/typeids.dm +++ b/code/__defines/typeids.dm @@ -2,5 +2,5 @@ #define TYPEID_NULL "0" #define TYPEID_NORMAL_LIST "f" //helper macros -#define GET_TYPEID(ref) ( ( (length(ref) <= 10) ? "TYPEID_NULL" : copytext(ref, 4, length(ref)-6) ) ) +#define GET_TYPEID(ref) ( ( (length(ref) <= 10) ? "TYPEID_NULL" : copytext(ref, 4, -7) ) ) #define IS_NORMAL_LIST(L) (GET_TYPEID("\ref[L]") == TYPEID_NORMAL_LIST) diff --git a/code/__defines/vv.dm b/code/__defines/vv.dm index 97e3a02e0d8..e71d6e2f8f1 100644 --- a/code/__defines/vv.dm +++ b/code/__defines/vv.dm @@ -27,7 +27,7 @@ #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)) +#define IS_VALID_ASSOC_KEY(V) (!isnum(V)) //Helpers for vv_get_dropdown() #define VV_DROPDOWN_OPTION(href_key, name) . += "" @@ -35,6 +35,16 @@ //Helpers for vv_do_topic(list/href_list) #define IF_VV_OPTION(href_key) if(href_list[href_key]) +// vv_do_list() keys +#define VV_HK_LIST_ADD "listadd" +#define VV_HK_LIST_EDIT "listedit" +#define VV_HK_LIST_CHANGE "listchange" +#define VV_HK_LIST_REMOVE "listremove" +#define VV_HK_LIST_ERASE_NULLS "listnulls" +#define VV_HK_LIST_ERASE_DUPES "listdupes" +#define VV_HK_LIST_SHUFFLE "listshuffle" +#define VV_HK_LIST_SET_LENGTH "listlen" + // /datum #define VV_HK_DELETE "delete" #define VV_HK_EXPOSE "expose" diff --git a/code/_helpers/events.dm b/code/_helpers/events.dm index e31d24783e8..2d15bb3aa9d 100644 --- a/code/_helpers/events.dm +++ b/code/_helpers/events.dm @@ -24,4 +24,16 @@ if(A == myarea) //The loc of a turf is the area it is in. return 1 return 0 - \ No newline at end of file + +// Returns a list of area instances, or a subtypes of them, that are mapped in somewhere. +// Avoid feeding it `/area`, as it will likely cause a lot of lag as it evaluates every single area coded in. +/proc/get_all_existing_areas_of_types(list/area_types) + . = list() + for(var/area_type in area_types) + var/list/types = typesof(area_type) + for(var/T in types) + // Test for existance. + var/area/A = locate(T) + if(!istype(A) || !A.contents.len) // Empty contents list means it's not on the map. + continue + . += A \ No newline at end of file diff --git a/code/_helpers/game.dm b/code/_helpers/game.dm index 6b924ef082b..17a25448500 100644 --- a/code/_helpers/game.dm +++ b/code/_helpers/game.dm @@ -246,7 +246,7 @@ var/turf/speaker = get_turf(R) if(speaker) for(var/turf/T in hear(R.canhear_range,speaker)) - speaker_coverage[T] = T + speaker_coverage[T] = R // Try to find all the players who can hear the message diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm index ae218f750ec..a0a38bf9d15 100644 --- a/code/_helpers/unsorted.dm +++ b/code/_helpers/unsorted.dm @@ -676,7 +676,7 @@ proc/GaussRandRound(var/sigma,var/roundto) //Returns: all the areas in the world /proc/return_areas() var/list/area/areas = list() - for(var/area/A in all_areas) + for(var/area/A in world) areas += A return areas @@ -694,7 +694,7 @@ proc/GaussRandRound(var/sigma,var/roundto) areatype = areatemp.type var/list/areas = new/list() - for(var/area/N in all_areas) + for(var/area/N in world) if(istype(N, areatype)) areas += N return areas @@ -708,7 +708,7 @@ proc/GaussRandRound(var/sigma,var/roundto) areatype = areatemp.type var/list/turfs = new/list() - for(var/area/N in all_areas) + for(var/area/N in world) if(istype(N, areatype)) for(var/turf/T in N) turfs += T return turfs @@ -723,7 +723,7 @@ proc/GaussRandRound(var/sigma,var/roundto) areatype = areatemp.type var/list/atoms = new/list() - for(var/area/N in all_areas) + for(var/area/N in world) if(istype(N, areatype)) for(var/atom/A in N) atoms += A diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index b9ce4c7f5aa..ea40e3dc0e0 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -43,7 +43,7 @@ next_click = world.time + 1 - if(client.buildmode) + if(client && client.buildmode) build_click(src, client.buildmode, params, A) return diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index e31dd5e56ab..8a61b872515 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -358,11 +358,13 @@ mymob.radio_use_icon.color = ui_color mymob.radio_use_icon.alpha = ui_alpha - mymob.client.screen = list() + if(mymob.client) + mymob.client.screen = list() + + mymob.client.screen += hud_elements + mymob.client.screen += src.adding + src.hotkeybuttons + mymob.client.screen += mymob.client.void - mymob.client.screen += hud_elements - mymob.client.screen += src.adding + src.hotkeybuttons - mymob.client.screen += mymob.client.void inventory_shown = 0 return diff --git a/code/_onclick/hud/skybox.dm b/code/_onclick/hud/skybox.dm index 492a11e5889..c6a3d5d2595 100644 --- a/code/_onclick/hud/skybox.dm +++ b/code/_onclick/hud/skybox.dm @@ -44,17 +44,10 @@ . = ..() client.update_skybox(TRUE) -/mob/Move() - var/old_z = get_z(src) - . = ..() - if(. && client) - client.update_skybox(old_z != get_z(src)) - -/mob/forceMove() - var/old_z = get_z(src) - . = ..() - if(. && client) - client.update_skybox(old_z != get_z(src)) +/mob/onTransitZ(old_z, new_z) + ..() + if(old_z != new_z) + client?.update_skybox(TRUE) /mob/set_viewsize() . = ..() diff --git a/code/controllers/Processes/emergencyShuttle.dm b/code/controllers/Processes/emergencyShuttle.dm deleted file mode 100644 index e7289311b95..00000000000 --- a/code/controllers/Processes/emergencyShuttle.dm +++ /dev/null @@ -1,9 +0,0 @@ -/datum/controller/process/emergencyShuttle/setup() - name = "emergency shuttle" - schedule_interval = 20 // every 2 seconds - - if(!emergency_shuttle) - emergency_shuttle = new - -/datum/controller/process/emergencyShuttle/doWork() - emergency_shuttle.process() diff --git a/code/controllers/Processes/game_master.dm b/code/controllers/Processes/game_master.dm deleted file mode 100644 index 7f89f3ab135..00000000000 --- a/code/controllers/Processes/game_master.dm +++ /dev/null @@ -1,6 +0,0 @@ -/datum/controller/process/game_master/setup() - name = "\improper GM controller" - schedule_interval = 600 // every 60 seconds - -/datum/controller/process/game_master/doWork() - game_master.process() \ No newline at end of file diff --git a/code/controllers/Processes/ticker.dm b/code/controllers/Processes/ticker.dm deleted file mode 100644 index a70bb74c5ff..00000000000 --- a/code/controllers/Processes/ticker.dm +++ /dev/null @@ -1,42 +0,0 @@ -var/global/datum/controller/process/ticker/tickerProcess - -/datum/controller/process/ticker - var/lastTickerTimeDuration - var/lastTickerTime - -/datum/controller/process/ticker/setup() - name = "ticker" - schedule_interval = 20 // every 2 seconds - - lastTickerTime = world.timeofday - - if(!ticker) - ticker = new - - tickerProcess = src - - spawn(0) - if(ticker) - ticker.pregame() - -/datum/controller/process/ticker/doWork() - var/currentTime = world.timeofday - - if(currentTime < lastTickerTime) // check for midnight rollover - lastTickerTimeDuration = (currentTime - (lastTickerTime - TICKS_IN_DAY)) / TICKS_IN_SECOND - else - lastTickerTimeDuration = (currentTime - lastTickerTime) / TICKS_IN_SECOND - - lastTickerTime = currentTime - - ticker.process() - -/datum/controller/process/ticker/proc/getLastTickerTimeDuration() - return lastTickerTimeDuration - -// Use these preferentially to directly examining ticker.current_state to help prepare for transition to ticker as subsystem! -/datum/controller/process/ticker/proc/HasRoundStarted() - return (ticker && ticker.current_state >= GAME_STATE_PLAYING) - -/datum/controller/process/ticker/proc/IsRoundInProgress() - return (ticker && ticker.current_state == GAME_STATE_PLAYING) diff --git a/code/controllers/communications.dm b/code/controllers/communications.dm index 0b53ed169d6..3b3512bbf92 100644 --- a/code/controllers/communications.dm +++ b/code/controllers/communications.dm @@ -125,6 +125,8 @@ var/const/EXP_FREQ = 1361 var/const/MED_I_FREQ = 1485 var/const/SEC_I_FREQ = 1475 +var/const/TALON_FREQ = 1481 //VOREStation Add + var/list/radiochannels = list( "Common" = PUB_FREQ, "Science" = SCI_FREQ, @@ -142,7 +144,8 @@ var/list/radiochannels = list( "AI Private" = AI_FREQ, "Entertainment" = ENT_FREQ, "Medical(I)" = MED_I_FREQ, - "Security(I)" = SEC_I_FREQ + "Security(I)" = SEC_I_FREQ, + "Talon" = TALON_FREQ //VOREStation Add ) // central command channels, i.e deathsquid & response teams @@ -154,6 +157,8 @@ var/list/ANTAG_FREQS = list(SYND_FREQ, RAID_FREQ) //Department channels, arranged lexically var/list/DEPT_FREQS = list(AI_FREQ, COMM_FREQ, ENG_FREQ, ENT_FREQ, MED_FREQ, SEC_FREQ, SCI_FREQ, SRV_FREQ, SUP_FREQ) +var/list/OFFMAP_FREQS = list(TALON_FREQ) //VOREStation Add + #define TRANSMISSION_WIRE 0 #define TRANSMISSION_RADIO 1 @@ -189,7 +194,10 @@ var/list/DEPT_FREQS = list(AI_FREQ, COMM_FREQ, ENG_FREQ, ENT_FREQ, MED_FREQ, SEC return "entradio" if(frequency in DEPT_FREQS) return "deptradio" - + //VOREStation Add + if(frequency in OFFMAP_FREQS) + return "expradio" + //VOREStation Add End return "radio" /* filters */ diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index b41bf83b45a..e1c50f90d19 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -264,10 +264,12 @@ var/list/gamemode_cache = list() var/sqlite_feedback_cooldown = 0 // How long one must wait, in days, to submit another feedback form. Used to help prevent spam, especially with privacy active. 0 = No limit. var/sqlite_feedback_min_age = 0 // Used to block new people from giving feedback. This metric is very bad but it can help slow down spammers. + var/defib_timer = 10 // How long until someone can't be defibbed anymore, in minutes. + var/defib_braindamage_timer = 2 // How long until someone will get brain damage when defibbed, in minutes. The closer to the end of the above timer, the more brain damage they get. + // disables the annoying "You have already logged in this round, disconnect or be banned" popup for multikeying, because it annoys the shit out of me when testing. var/disable_cid_warn_popup = FALSE - /datum/configuration/New() var/list/L = typesof(/datum/game_mode) - /datum/game_mode for (var/T in L) @@ -877,6 +879,12 @@ var/list/gamemode_cache = list() if("sqlite_feedback_cooldown") config.sqlite_feedback_cooldown = text2num(value) + if("defib_timer") + config.defib_timer = text2num(value) + + if("defib_braindamage_timer") + config.defib_braindamage_timer = text2num(value) + if("disable_cid_warn_popup") config.disable_cid_warn_popup = TRUE diff --git a/code/controllers/emergency_shuttle_controller.dm b/code/controllers/emergency_shuttle_controller.dm index 54f97e20606..d6e272f9c95 100644 --- a/code/controllers/emergency_shuttle_controller.dm +++ b/code/controllers/emergency_shuttle_controller.dm @@ -2,7 +2,7 @@ // Controls the emergency shuttle -var/global/datum/emergency_shuttle_controller/emergency_shuttle +var/global/datum/emergency_shuttle_controller/emergency_shuttle = new /datum/emergency_shuttle_controller var/datum/shuttle/autodock/ferry/emergency/shuttle // Set in shuttle_emergency.dm TODO - is it really? @@ -75,8 +75,10 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle /datum/emergency_shuttle_controller/proc/set_launch_countdown(var/seconds) wait_for_launch = 1 launch_time = world.time + seconds*10 + START_PROCESSING(SSprocessing, src) /datum/emergency_shuttle_controller/proc/stop_launch_countdown() + STOP_PROCESSING(SSprocessing, src) wait_for_launch = 0 //calls the shuttle for an emergency evacuation @@ -94,7 +96,7 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle evac = 1 emergency_shuttle_called.Announce(replacetext(using_map.emergency_shuttle_called_message, "%ETA%", "[estimated_time] minute\s")) - for(var/area/A in all_areas) + for(var/area/A in world) if(istype(A, /area/hallway)) A.readyalert() @@ -120,13 +122,13 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle /datum/emergency_shuttle_controller/proc/recall() if (!can_recall()) return - wait_for_launch = 0 + stop_launch_countdown() shuttle.cancel_launch(src) if (evac) emergency_shuttle_recalled.Announce(using_map.emergency_shuttle_recall_message) - for(var/area/A in all_areas) + for(var/area/A in world) if(istype(A, /area/hallway)) A.readyreset() evac = 0 diff --git a/code/controllers/master.dm b/code/controllers/master.dm index cc6b224b5bf..07cf0712461 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -50,8 +50,6 @@ GLOBAL_REAL(Master, /datum/controller/master) = new var/current_runlevel //for scheduling different subsystems for different stages of the round - var/dbg_is_running_subsystem = FALSE // TEMPORARY DEBUGGING - true only while we are actually waiting on a subsystem - var/static/restart_clear = 0 var/static/restart_timeout = 0 var/static/restart_count = 0 @@ -476,11 +474,9 @@ GLOBAL_REAL(Master, /datum/controller/master) = new queue_node.state = SS_RUNNING - dbg_is_running_subsystem = TRUE // TEMPORARY DEBUGGING tick_usage = TICK_USAGE var/state = queue_node.ignite(queue_node_paused) tick_usage = TICK_USAGE - tick_usage - dbg_is_running_subsystem = FALSE // TEMPORARY DEBUGGING if (state == SS_RUNNING) state = SS_IDLE diff --git a/code/controllers/subsystem.dm b/code/controllers/subsystem.dm index 8c0b6fa5de9..7115c77a61b 100644 --- a/code/controllers/subsystem.dm +++ b/code/controllers/subsystem.dm @@ -168,11 +168,12 @@ statclick = new/obj/effect/statclick/debug(null, "Initializing...", src) - - if(can_fire && !(SS_NO_FIRE & flags)) - msg = "[round(cost,1)]ms|[round(tick_usage,1)]%([round(tick_overrun,1)]%)|[round(ticks,0.1)]\t[msg]" - else + if(SS_NO_FIRE & flags) + msg = "NO FIRE\t[msg]" + else if(can_fire <= 0) msg = "OFFLINE\t[msg]" + else + msg = "[round(cost,1)]ms|[round(tick_usage,1)]%([round(tick_overrun,1)]%)|[round(ticks,0.1)]\t[msg]" var/title = name if (can_fire) @@ -202,3 +203,15 @@ //usually called via datum/controller/subsystem/New() when replacing a subsystem (i.e. due to a recurring crash) //should attempt to salvage what it can from the old instance of subsystem /datum/controller/subsystem/Recover() + +// Suspends this subsystem from being queued for running. If already in the queue, sleeps until idle. Returns FALSE if the subsystem was already suspended. +/datum/controller/subsystem/proc/suspend() + . = (can_fire > 0) // Return true if we were previously runnable, false if previously suspended. + can_fire = FALSE + // Safely sleep in a loop until the subsystem is idle, (or its been un-suspended somehow) + while(can_fire <= 0 && state != SS_IDLE) + stoplag() // Safely sleep in a loop until + +// Wakes a suspended subsystem. +/datum/controller/subsystem/proc/wake() + can_fire = TRUE diff --git a/code/controllers/subsystems/events.dm b/code/controllers/subsystems/events.dm index 6de40f464d5..226c09f4924 100644 --- a/code/controllers/subsystems/events.dm +++ b/code/controllers/subsystems/events.dm @@ -1,5 +1,5 @@ SUBSYSTEM_DEF(events) - name = "Events" + name = "Events" // VOREStation Edit - This is still the main events subsystem for us. wait = 2 SECONDS var/tmp/list/currentrun = null diff --git a/code/controllers/subsystems/events2.dm b/code/controllers/subsystems/events2.dm new file mode 100644 index 00000000000..2a73498b1d6 --- /dev/null +++ b/code/controllers/subsystems/events2.dm @@ -0,0 +1,37 @@ +// This is a simple ticker for the new event system. +// The logic that determines what events get chosen is held inside a seperate subsystem. + +SUBSYSTEM_DEF(event_ticker) + name = "Events (Ticker)" + wait = 2 SECONDS + runlevels = RUNLEVEL_GAME + + // List of `/datum/event2/event`s that are currently active, and receiving process() ticks. + var/list/active_events = list() + + // List of `/datum/event2/event`s that finished, and are here for showing at roundend, if that's desired. + var/list/finished_events = list() + +// Process active events. +/datum/controller/subsystem/event_ticker/fire(resumed) + for(var/E in active_events) + var/datum/event2/event/event = E + event.process() + if(event.finished) + event_finished(event) + +// Starts an event, independent of the GM system. +// This means it will always run, and won't affect the GM system in any way, e.g. not putting the event off limits after one use. +/datum/controller/subsystem/event_ticker/proc/start_event(event_type) + var/datum/event2/event/E = new event_type() + E.execute() + event_started(E) + +/datum/controller/subsystem/event_ticker/proc/event_started(datum/event2/event/E) + log_debug("Event [E.type] is now being ran.") + active_events += E + +/datum/controller/subsystem/event_ticker/proc/event_finished(datum/event2/event/E) + log_debug("Event [E.type] has finished.") + active_events -= E + finished_events += E \ No newline at end of file diff --git a/code/controllers/subsystems/game_master.dm b/code/controllers/subsystems/game_master.dm new file mode 100644 index 00000000000..d5326bfba61 --- /dev/null +++ b/code/controllers/subsystems/game_master.dm @@ -0,0 +1,369 @@ +// This is a sort of successor to the various event systems created over the years. It is designed to be just a tad smarter than the +// previous ones, checking various things like player count, department size and composition, individual player activity, +// individual player (IC) skill, and such, in order to try to choose the best events to take in order to add spice or variety to +// the round. + +// This subsystem holds the logic that chooses events. Actual event processing is handled in a seperate subsystem. +SUBSYSTEM_DEF(game_master) + name = "Events (Game Master)" + wait = 1 MINUTE + runlevels = RUNLEVEL_GAME + + // The GM object is what actually chooses events. + // It's held in a seperate object for better encapsulation, and allows for different 'flavors' of GMs to be made, that choose events differently. + var/datum/game_master/GM = null + var/game_master_type = /datum/game_master/default + + var/list/available_events = list() // A list of meta event objects. + + var/danger = 0 // The GM's best guess at how chaotic the round is. High danger makes it hold back. + var/staleness = -20 // Determines liklihood of the GM doing something, increases over time. + + var/next_event = 0 // Minimum amount of time of nothingness until the GM can pick something again. + + var/debug_messages = FALSE // If true, debug information is written to `log_debug()`. + +/datum/controller/subsystem/game_master/Initialize() + var/list/subtypes = subtypesof(/datum/event2/meta) + for(var/T in subtypes) + var/datum/event2/meta/M = new T() + if(!M.name) + continue + available_events += M + + GM = new game_master_type() + + if(config && !config.enable_game_master) + can_fire = FALSE + + return ..() + +/datum/controller/subsystem/game_master/fire(resumed) + adjust_staleness(1) + adjust_danger(-1) + + var/global_afk = metric.assess_all_living_mobs() + global_afk = abs(global_afk - 100) + global_afk = round(global_afk / 100, 0.1) + adjust_staleness(global_afk) // Staleness increases faster if more people are less active. + + if(GM.ignore_time_restrictions || next_event < world.time) + if(prob(staleness) && pre_event_checks()) + do_event_decision() + + +/datum/controller/subsystem/game_master/proc/do_event_decision() + log_game_master("Going to choose an event.") + var/datum/event2/meta/event_picked = GM.choose_event() + if(event_picked) + run_event(event_picked) + next_event = world.time + rand(GM.decision_cooldown_lower_bound, GM.decision_cooldown_upper_bound) + +/datum/controller/subsystem/game_master/proc/debug_gm() + can_fire = TRUE + staleness = 100 + debug_messages = TRUE + +/datum/controller/subsystem/game_master/proc/run_event(datum/event2/meta/chosen_event) + var/datum/event2/event/E = chosen_event.make_event() + + chosen_event.times_ran++ + + if(!chosen_event.reusable) + // Disable this event, so it only gets picked once. + chosen_event.enabled = FALSE + if(chosen_event.event_class) + // Disable similar events, too. + for(var/M in available_events) + var/datum/event2/meta/meta = M + if(meta.event_class == chosen_event.event_class) + meta.enabled = FALSE + + SSevent_ticker.event_started(E) + adjust_danger(chosen_event.chaos) + adjust_staleness(-(10 + chosen_event.chaos)) // More chaotic events reduce staleness more, e.g. a 25 chaos event will reduce it by 35. + + +// Tell the game master that something dangerous happened, e.g. someone dying, station explosions. +/datum/controller/subsystem/game_master/proc/adjust_danger(amount) + amount *= GM.danger_modifier + danger = round(between(0, danger + amount, 1000), 0.1) + +// Tell the game master that things are getting boring if positive, or something interesting if negative.. +/datum/controller/subsystem/game_master/proc/adjust_staleness(amount) + amount *= GM.staleness_modifier + staleness = round( between(-20, staleness + amount, 100), 0.1) + +// These are ran before committing to an event. +// Returns TRUE if the system is allowed to procede, otherwise returns FALSE. +/datum/controller/subsystem/game_master/proc/pre_event_checks(quiet = FALSE) + if(!ticker || ticker.current_state != GAME_STATE_PLAYING) + if(!quiet) + log_game_master("Unable to start event: Ticker is nonexistant, or the game is not ongoing.") + return FALSE + if(GM.ignore_time_restrictions) + return TRUE + if(next_event > world.time) // Sanity. + if(!quiet) + log_game_master("Unable to start event: Time until next event is approximately [round((next_event - world.time) / (1 MINUTE))] minute(s)") + return FALSE + + // Last minute antagging is bad for humans to do, so the GM will respect the start and end of the round. + var/mills = round_duration_in_ticks + var/mins = round((mills % 36000) / 600) + var/hours = round(mills / 36000) + +// if(hours < 1 && mins <= 20) // Don't do anything for the first twenty minutes of the round. +// if(!quiet) +// log_debug("Game Master unable to start event: It is too early.") +// return FALSE + if(hours >= 2 && mins >= 40) // Don't do anything in the last twenty minutes of the round, as well. + if(!quiet) + log_game_master("Unable to start event: It is too late.") + return FALSE + return TRUE + +/datum/controller/subsystem/game_master/proc/choose_game_master(mob/user) + var/list/subtypes = subtypesof(/datum/game_master) + var/new_gm_path = input(user, "What kind of Game Master do you want?", "New Game Master", /datum/game_master/default) as null|anything in subtypes + if(new_gm_path) + log_and_message_admins("has swapped the current GM ([GM.type]) for a new GM ([new_gm_path]).") + GM = new new_gm_path(src) + +/datum/controller/subsystem/game_master/proc/log_game_master(message) + if(debug_messages) + log_debug("GAME MASTER: [message]") + + +// This object makes the actual decisions. +/datum/game_master + // Multiplier for how much 'danger' is accumulated. Higer generally makes it possible for more dangerous events to be picked. + var/danger_modifier = 1.0 + + // Ditto. Higher numbers generally result in more events occuring in a round. + var/staleness_modifier = 1.0 + + var/decision_cooldown_lower_bound = 5 MINUTES // Lower bound for how long to wait until -the potential- for another event being decided. + var/decision_cooldown_upper_bound = 20 MINUTES // Same, but upper bound. + + var/ignore_time_restrictions = FALSE // Useful for debugging without needing to wait 20 minutes each time. + var/ignore_round_chaos = FALSE // If true, the system will happily choose back to back intense events like meteors and blobs, Dwarf Fortress style. + +/client/proc/show_gm_status() + set category = "Debug" + set name = "Show GM Status" + set desc = "Shows you what the GM is thinking. If only that existed in real life..." + + if(check_rights(R_ADMIN|R_EVENT|R_DEBUG)) + SSgame_master.interact(usr) + else + to_chat(usr, span("warning", "You do not have sufficent rights to view the GM panel, sorry.")) + +/datum/controller/subsystem/game_master/proc/interact(var/client/user) + if(!user) + return + + // Using lists for string tree conservation. + var/list/dat = list("Automated Game Master Event System") + + // Makes the system turn on or off. + dat += href(src, list("toggle" = 1), "\[Toggle GM\]") + dat += " | " + + // Makes the system not care about staleness or being near round-end. + dat += href(src, list("toggle_time_restrictions" = 1), "\[Toggle Time Restrictions\]") + dat += " | " + + // Makes the system not care about how chaotic the round might be. + dat += href(src, list("toggle_chaos_throttle" = 1), "\[Toggle Chaos Throttling\]") + dat += " | " + + // Makes the system immediately choose an event, while still bound to factors like danger, weights, and department staffing. + dat += href(src, list("force_choose_event" = 1), "\[Force Event Decision\]") + dat += "
" + + // Swaps out the current GM for a new one with different ideas on what a good event might be. + dat += href(src, list("change_gm" = 1), "\[Change GM\]") + dat += "
" + + dat += "Current GM Type: [GM.type]
" + dat += "State: [can_fire ? "Active": "Inactive"]
" + dat += "Status: [pre_event_checks(TRUE) ? "Ready" : "Suppressed"]

" + + dat += "Staleness: [staleness] " + dat += href(src, list("set_staleness" = 1), "\[Set\]") + dat += "
" + dat += "Staleness is an estimate of how boring the round might be, and if an event should be done. It is increased passively over time, \ + and increases faster if people are AFK. It deceases when events and certain 'interesting' things happen in the round.
" + + dat += "Danger: [danger] " + dat += href(src, list("set_danger" = 1), "\[Set\]") + dat += "
" + dat += "Danger is an estimate of how chaotic the round has been so far. It is decreased passively over time, and is increased by having \ + certain chaotic events be selected, or chaotic things happen in the round. A sufficently high amount of danger will make the system \ + avoid using destructive events, to avoid pushing the station over the edge.
" + + dat += "

Player Activity:

" + + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + + dat += "" + dat += "" + dat += "" + dat += "" + + dat += "" + dat += "" + dat += "" + dat += "" + + dat += "" + dat += "" + + for(var/D in metric.departments) + dat += "" + dat += "" + dat += "" + dat += "" + + dat += "" + dat += "" + + for(var/P in player_list) + var/mob/M = P + dat += "" + dat += "" + dat += "" + dat += "" + dat += "
CategoryActivity Percentage
All Living Mobs[metric.assess_all_living_mobs()]%
All Ghosts[metric.assess_all_dead_mobs()]%
Departments" + dat += "
[D][metric.assess_department(D)]%
Players" + dat += "
[M] ([M.ckey])[metric.assess_player_activity(M)]%
" + + dat += "

Events available:

" + + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + + for(var/E in available_events) + var/datum/event2/meta/event = E + dat += "" + if(!event.enabled) + dat += "" + else + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "
Event NameInvolved DepartmentsChaosChaotic ThresholdWeightButtons
[event.name][event.name][english_list(event.departments)][event.chaos][event.chaotic_threshold][event.get_weight()][href(event, list("force" = 1), "\[Force\]")] [href(event, list("toggle" = 1), "\[Toggle\]")]
" + + dat += "

Events active:

" + + dat += "Current time: [world.time]" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + + for(var/E in SSevent_ticker.active_events) + var/datum/event2/event/event = E + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "
Event TypeTime StartedTime to AnnounceTime to EndAnnouncedStartedEndedButtons
[event.type][event.time_started][event.time_to_announce ? event.time_to_announce : "NULL"][event.time_to_end ? event.time_to_end : "NULL"][event.announced ? "Yes" : "No"][event.started ? "Yes" : "No"][event.ended ? "Yes" : "No"][href(event, list("abort" = 1), "\[Abort\]")]
" + dat += "" + + dat += "

Events completed:

" + + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + + for(var/E in SSevent_ticker.finished_events) + var/datum/event2/event/event = E + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + + dat += "" + + var/datum/browser/popup = new(user, "game_master_debug", "Automated Game Master Event System", 800, 500, src) + popup.set_content(dat.Join()) + popup.open() + + +/datum/controller/subsystem/game_master/Topic(href, href_list) + if(..()) + return + + if(href_list["close"]) // Needed or the window re-opens after closing, making it last forever. + return + + if(!check_rights(R_ADMIN|R_EVENT|R_DEBUG)) + message_admins("[usr] has attempted to modify the Game Master values without sufficent privilages.") + return + + if(href_list["toggle"]) + can_fire = !can_fire + message_admins("GM was [!can_fire ? "dis" : "en"]abled by [usr.key].") + + if(href_list["toggle_time_restrictions"]) + GM.ignore_time_restrictions = !GM.ignore_time_restrictions + message_admins("GM event time restrictions was [GM.ignore_time_restrictions ? "dis" : "en"]abled by [usr.key].") + + if(href_list["toggle_chaos_throttle"]) + GM.ignore_round_chaos = !GM.ignore_round_chaos + message_admins("GM event chaos restrictions was [GM.ignore_round_chaos ? "dis" : "en"]abled by [usr.key].") + + if(href_list["force_choose_event"]) + do_event_decision() + message_admins("[usr.key] forced the Game Master to choose an event immediately.") + + if(href_list["change_gm"]) + choose_game_master(usr) + + if(href_list["set_staleness"]) + var/amount = input(usr, "How much staleness should there be?", "Game Master") as null|num + if(!isnull(amount)) + staleness = amount + message_admins("GM staleness was set to [amount] by [usr.key].") + + if(href_list["set_danger"]) + var/amount = input(usr, "How much danger should there be?", "Game Master") as null|num + if(!isnull(amount)) + danger = amount + message_admins("GM danger was set to [amount] by [usr.key].") + + interact(usr) // To refresh the UI. \ No newline at end of file diff --git a/code/controllers/subsystems/open_space.dm b/code/controllers/subsystems/open_space.dm new file mode 100644 index 00000000000..dfc13190094 --- /dev/null +++ b/code/controllers/subsystems/open_space.dm @@ -0,0 +1,123 @@ +// +// Controller handling icon updates of open space turfs +// + +GLOBAL_VAR_INIT(open_space_initialised, FALSE) + +SUBSYSTEM_DEF(open_space) + name = "Open Space" + wait = 2 // 5 times per second. + init_order = INIT_ORDER_OPENSPACE + var/list/turfs_to_process = list() // List of turfs queued for update. + var/list/turfs_to_process_old = null // List of turfs currently being updated. + var/counter = 1 // Can't use .len because we need to iterate in order + var/static/image/over_OS_darkness // Image overlayed over the bottom turf with stuff in it. + +/datum/controller/subsystem/open_space/Initialize(timeofday) + over_OS_darkness = image('icons/turf/open_space.dmi', "black_open") + over_OS_darkness.plane = OVER_OPENSPACE_PLANE + over_OS_darkness.layer = MOB_LAYER + initialize_open_space() + // Pre-process open space turfs once before the round starts. + fire(FALSE, TRUE) + return ..() + +/datum/controller/subsystem/open_space/Recover() + flags |= SS_NO_INIT // Make extra sure we don't initialize twice. + . = ..() + +/datum/controller/subsystem/open_space/fire(resumed = 0, init_tick_checks = FALSE) + // We use a different list so any additions to the update lists during a delay from MC_TICK_CHECK + // don't cause things to be cut from the list without being updated. + + //If we're not resuming, this must mean it's a new iteration so we have to grab the turfs + if (!resumed) + src.counter = 1 + src.turfs_to_process_old = turfs_to_process + turfs_to_process = list() + + //cache for sanic speed (lists are references anyways) + var/list/turfs_to_process_old = src.turfs_to_process_old + var/counter = src.counter + while(counter <= turfs_to_process_old.len) + var/turf/T = turfs_to_process_old[counter] + counter += 1 + if(!QDELETED(T)) + update_turf(T) + if (init_tick_checks) + CHECK_TICK // Used during initialization processing + else if (MC_TICK_CHECK) + src.counter = counter // Save for when we're resumed + return // Used during normal MC processing. + +/datum/controller/subsystem/open_space/proc/update_turf(var/turf/T) + for(var/atom/movable/A in T) + A.fall() + T.update_icon() + +/datum/controller/subsystem/open_space/proc/add_turf(var/turf/T, var/recursive = 0) + ASSERT(isturf(T)) + // Check for multiple additions + // Pointless to process the same turf twice. But we need to push it to the end of the list + // because any turfs below it need to process first. + turfs_to_process -= T + turfs_to_process += T + if(recursive > 0) + var/turf/above = GetAbove(T) + if(above && isopenspace(above)) + add_turf(above, recursive) + +// Queue the initial updates of open space turfs when the game starts. This will lag! +/datum/controller/subsystem/open_space/proc/initialize_open_space() + // Do initial setup from bottom to top. + for(var/zlevel = 1 to world.maxz) + for(var/turf/simulated/open/T in block(locate(1, 1, zlevel), locate(world.maxx, world.maxy, zlevel))) + add_turf(T) + CHECK_TICK + GLOB.open_space_initialised = TRUE + +/datum/controller/subsystem/open_space/stat_entry(msg_prefix) + return ..("T [turfs_to_process.len]") + +/turf/Entered(atom/movable/AM) + . = ..() + if(GLOB.open_space_initialised && !AM.invisibility && isobj(AM)) + var/turf/T = GetAbove(src) + if(isopenspace(T)) + // log_debug("[T] ([T.x],[T.y],[T.z]) queued for update for [src].Entered([AM])") + SSopen_space.add_turf(T, 1) + +/turf/Exited(atom/movable/AM) + . = ..() + if(GLOB.open_space_initialised && !AM.invisibility && isobj(AM)) + var/turf/T = GetAbove(src) + if(isopenspace(T)) + // log_debug("[T] ([T.x],[T.y],[T.z]) queued for update for [src].Exited([AM])") + SSopen_space.add_turf(T, 1) + +/obj/update_icon() + . = ..() + if(GLOB.open_space_initialised && !invisibility && isturf(loc)) + var/turf/T = GetAbove(src) + if(isopenspace(T)) + // log_debug("[T] ([T.x],[T.y],[T.z]) queued for update for [src].update_icon()") + SSopen_space.add_turf(T, 1) + +// Ouch... this is painful. But is there any other way? +/* - No for now +/obj/New() + . = ..() + if(open_space_initialised && !invisibility) + var/turf/T = GetAbove(src) + if(isopenspace(T)) + // log_debug("[T] ([T.x],[T.y],[T.z]) queued for update for [src]New()") + OS_controller.add_turf(T, 1) +*/ + +// We probably should hook Destroy() If we can think of something more efficient, lets hear it. +/obj/Destroy() + if(GLOB.open_space_initialised && !invisibility && isturf(loc)) + var/turf/T = GetAbove(src) + if(isopenspace(T)) + SSopen_space.add_turf(T, 1) + . = ..() // Important that this be at the bottom, or we will have been moved to nullspace. diff --git a/code/controllers/subsystems/shuttles.dm b/code/controllers/subsystems/shuttles.dm index 27bbbae0275..0bce9403851 100644 --- a/code/controllers/subsystems/shuttles.dm +++ b/code/controllers/subsystems/shuttles.dm @@ -84,6 +84,7 @@ SUBSYSTEM_DEF(shuttles) if(shuttle) shuttles_made += shuttle hook_up_motherships(shuttles_made) + hook_up_shuttle_objects(shuttles_made) shuttles_to_initialize = null /datum/controller/subsystem/shuttles/proc/initialize_sectors() @@ -103,7 +104,7 @@ SUBSYSTEM_DEF(shuttles) try_add_landmark_tag(shuttle_landmark_tag, O) landmarks_still_needed -= shuttle_landmark_tag else if(istype(shuttle_landmark, /obj/effect/shuttle_landmark/automatic)) //These find their sector automatically - O = map_sectors["[shuttle_landmark.z]"] + O = get_overmap_sector(get_z(shuttle_landmark)) O ? O.add_landmark(shuttle_landmark, shuttle_landmark.shuttle_restricted) : (landmarks_awaiting_sector += shuttle_landmark) /datum/controller/subsystem/shuttles/proc/get_landmark(var/shuttle_landmark_tag) @@ -165,6 +166,11 @@ SUBSYSTEM_DEF(shuttles) else error("Shuttle [S] was unable to find mothership [mothership]!") +// Let shuttles scan their owned areas for objects they want to configure (Called after mothership hookup) +/datum/controller/subsystem/shuttles/proc/hook_up_shuttle_objects(shuttles_list) + for(var/datum/shuttle/S in shuttles_list) + S.populate_shuttle_objects() + // Admin command to halt/resume overmap /datum/controller/subsystem/shuttles/proc/toggle_overmap(new_setting) if(overmap_halted == new_setting) diff --git a/code/controllers/subsystems/skybox.dm b/code/controllers/subsystems/skybox.dm index 6f96830c563..bf44a8f2ef2 100644 --- a/code/controllers/subsystems/skybox.dm +++ b/code/controllers/subsystems/skybox.dm @@ -68,11 +68,6 @@ SUBSYSTEM_DEF(skybox) /datum/controller/subsystem/skybox/proc/get_skybox(z) if(!skybox_cache["[z]"]) skybox_cache["[z]"] = generate_skybox(z) - if(global.using_map.use_overmap) - var/obj/effect/overmap/visitable/O = map_sectors["[z]"] - if(istype(O)) - for(var/zlevel in O.map_z) - skybox_cache["[zlevel]"] = skybox_cache["[z]"] return skybox_cache["[z]"] /datum/controller/subsystem/skybox/proc/generate_skybox(z) @@ -92,7 +87,7 @@ SUBSYSTEM_DEF(skybox) res.overlays += base if(global.using_map.use_overmap && settings.use_overmap_details) - var/obj/effect/overmap/visitable/O = map_sectors["[z]"] + var/obj/effect/overmap/visitable/O = get_overmap_sector(z) if(istype(O)) var/image/overmap = image(settings.icon) overmap.overlays += O.generate_skybox() @@ -114,7 +109,11 @@ SUBSYSTEM_DEF(skybox) skybox_cache["[z]"] = generate_skybox(z) for(var/client/C) - C.update_skybox(1) + var/their_z = get_z(C.mob) + if(!their_z) //Nullspace + continue + if(their_z in zlevels) + C.update_skybox(1) // Settings datum that maps can override to play with their skyboxes /datum/skybox_settings diff --git a/code/controllers/subsystems/ticker.dm b/code/controllers/subsystems/ticker.dm new file mode 100644 index 00000000000..a51a409b303 --- /dev/null +++ b/code/controllers/subsystems/ticker.dm @@ -0,0 +1,560 @@ +// +// Ticker controls the state of the game, being responsible for round start, game mode, and round end. +// +SUBSYSTEM_DEF(ticker) + name = "Gameticker" + wait = 2 SECONDS + init_order = INIT_ORDER_TICKER + priority = FIRE_PRIORITY_TICKER + flags = SS_NO_TICK_CHECK | SS_KEEP_TIMING + runlevels = RUNLEVEL_LOBBY | RUNLEVEL_SETUP | RUNLEVEL_GAME | RUNLEVEL_POSTGAME // Every runlevel! + + var/const/restart_timeout = 3 MINUTES // Default time to wait before rebooting in desiseconds. + var/current_state = GAME_STATE_INIT // We aren't even at pregame yet // TODO replace with CURRENT_GAME_STATE + + /* Relies upon the following globals (TODO move those in here) */ + // var/master_mode = "extended" //The underlying game mode (so "secret" or the voted mode). + // Set by SSvote when VOTE_GAMEMODE finishes. + // var/round_progressing = 1 //Whether the lobby clock is ticking down. + + var/pregame_timeleft = 0 // Time remaining until game starts in seconds. Set by config + var/start_immediately = FALSE // If true there is no lobby phase, the game starts immediately. + + var/hide_mode = FALSE // If the true game mode should be hidden (because we chose "secret") + var/datum/game_mode/mode = null // The actual gamemode, if selected. + + var/end_game_state = END_GAME_NOT_OVER // Track where we are ending game/round + var/restart_timeleft // Time remaining until restart in desiseconds + var/last_restart_notify // world.time of last restart warning. + var/delay_end = FALSE // If set, the round will not restart on its own. + + // var/login_music // music played in pregame lobby // VOREStation Edit - We do music differently + + var/list/datum/mind/minds = list() // The people in the game. Used for objective tracking. + + // TODO - I am sure there is a better place these can go. + var/Bible_icon_state // icon_state the chaplain has chosen for his bible + var/Bible_item_state // item_state the chaplain has chosen for his bible + var/Bible_name // name of the bible + var/Bible_deity_name + + var/random_players = FALSE // If set to nonzero, ALL players who latejoin or declare-ready join will have random appearances/genders + + // TODO - Should this go here or in the job subsystem? + var/triai = FALSE // Global flag for Triumvirate AI being enabled + + //station_explosion used to be a variable for every mob's hud. Which was a waste! + //Now we have a general cinematic centrally held within the gameticker....far more efficient! + var/obj/screen/cinematic = null + +// This global variable exists for legacy support so we don't have to rename every 'ticker' to 'SSticker' yet. +var/global/datum/controller/subsystem/ticker/ticker +/datum/controller/subsystem/ticker/PreInit() + global.ticker = src // TODO - Remove this! Change everything to point at SSticker intead + +/datum/controller/subsystem/ticker/Initialize() + pregame_timeleft = config.pregame_time + send2mainirc("Server lobby is loaded and open at byond://[config.serverurl ? config.serverurl : (config.server ? config.server : "[world.address]:[world.port]")]") + return ..() + +/datum/controller/subsystem/ticker/fire(resumed = FALSE) + switch(current_state) + if(GAME_STATE_INIT) + pregame_welcome() + current_state = GAME_STATE_PREGAME + if(GAME_STATE_PREGAME) + pregame_tick() + if(GAME_STATE_SETTING_UP) + setup_tick() + if(GAME_STATE_PLAYING) + playing_tick() + if(GAME_STATE_FINISHED) + post_game_tick() + +/datum/controller/subsystem/ticker/proc/pregame_welcome() + to_chat(world, "Welcome to the pregame lobby!") + to_chat(world, "Please set up your character and select ready. The round will start in [pregame_timeleft] seconds.") + +// Called during GAME_STATE_PREGAME (RUNLEVEL_LOBBY) +/datum/controller/subsystem/ticker/proc/pregame_tick() + if(round_progressing && last_fire) + pregame_timeleft -= (world.time - last_fire) / (1 SECOND) + + if(start_immediately) + pregame_timeleft = 0 + else if(SSvote.time_remaining) + return // vote still going, wait for it. + + // Time to start the game! + if(pregame_timeleft <= 0) + current_state = GAME_STATE_SETTING_UP + Master.SetRunLevel(RUNLEVEL_SETUP) + if(start_immediately) + fire() // Don't wait for next tick, do it now! + return + + if(pregame_timeleft <= config.vote_autogamemode_timeleft && !SSvote.gamemode_vote_called) + SSvote.autogamemode() // Start the game mode vote (if we haven't had one already) + +// Called during GAME_STATE_SETTING_UP (RUNLEVEL_SETUP) +/datum/controller/subsystem/ticker/proc/setup_tick(resumed = FALSE) + if(!setup_choose_gamemode()) + // It failed, go back to lobby state and re-send the welcome message + pregame_timeleft = config.pregame_time + SSvote.gamemode_vote_called = FALSE // Allow another autogamemode vote + current_state = GAME_STATE_PREGAME + Master.SetRunLevel(RUNLEVEL_LOBBY) + pregame_welcome() + return + // If we got this far we succeeded in picking a game mode. Punch it! + setup_startgame() + return + +// Formerly the first half of setup() - The part that chooses the game mode. +// Returns 0 if failed to pick a mode, otherwise 1 +/datum/controller/subsystem/ticker/proc/setup_choose_gamemode() + //Create and announce mode + if(master_mode == "secret") + src.hide_mode = TRUE + + var/list/runnable_modes = config.get_runnable_modes() + if((master_mode == "random") || (master_mode == "secret")) + if(!runnable_modes.len) + to_chat(world, "Unable to choose playable game mode. Reverting to pregame lobby.") + return 0 + if(secret_force_mode != "secret") + src.mode = config.pick_mode(secret_force_mode) + if(!src.mode) + var/list/weighted_modes = list() + for(var/datum/game_mode/GM in runnable_modes) + weighted_modes[GM.config_tag] = config.probabilities[GM.config_tag] + src.mode = gamemode_cache[pickweight(weighted_modes)] + else + src.mode = config.pick_mode(master_mode) + + if(!src.mode) + to_chat(world, "Serious error in mode setup! Reverting to pregame lobby.") //Uses setup instead of set up due to computational context. + return 0 + + job_master.ResetOccupations() + src.mode.create_antagonists() + src.mode.pre_setup() + job_master.DivideOccupations() // Apparently important for new antagonist system to register specific job antags properly. + + if(!src.mode.can_start()) + to_world("Unable to start [mode.name]. Not enough players readied, [config.player_requirements[mode.config_tag]] players needed. Reverting to pregame lobby.") + mode.fail_setup() + mode = null + job_master.ResetOccupations() + return 0 + + if(hide_mode) + to_world("The current game mode is - Secret!") + if(runnable_modes.len) + var/list/tmpmodes = new + for (var/datum/game_mode/M in runnable_modes) + tmpmodes+=M.name + tmpmodes = sortList(tmpmodes) + if(tmpmodes.len) + to_chat(world, "Possibilities: [english_list(tmpmodes, and_text= "; ", comma_text = "; ")]") + else + src.mode.announce() + return 1 + +// Formerly the second half of setup() - The part that actually initializes everything and starts the game. +/datum/controller/subsystem/ticker/proc/setup_startgame() + setup_economy() + create_characters() //Create player characters and transfer them. + collect_minds() + equip_characters() + //data_core.manifest() //VOREStation Removal + + callHook("roundstart") + + spawn(0)//Forking here so we dont have to wait for this to finish + mode.post_setup() + //Cleanup some stuff + for(var/obj/effect/landmark/start/S in landmarks_list) + //Deleting Startpoints but we need the ai point to AI-ize people later + if (S.name != "AI") + qdel(S) + to_chat(world, "Enjoy the game!") + world << sound('sound/AI/welcome.ogg') // Skie + //Holiday Round-start stuff ~Carn + Holiday_Game_Start() + + var/list/adm = get_admin_counts() + if(adm["total"] == 0) + send2adminirc("A round has started with no admins online.") + +/* supply_controller.process() //Start the supply shuttle regenerating points -- TLE // handled in scheduler + master_controller.process() //Start master_controller.process() + lighting_controller.process() //Start processing DynamicAreaLighting updates + */ + + processScheduler.start() + current_state = GAME_STATE_PLAYING + Master.SetRunLevel(RUNLEVEL_GAME) + + if(config.sql_enabled) + statistic_cycle() // Polls population totals regularly and stores them in an SQL DB -- TLE + + return 1 + + +// Called during GAME_STATE_PLAYING (RUNLEVEL_GAME) +/datum/controller/subsystem/ticker/proc/playing_tick(resumed = FALSE) + mode.process() // So THIS is where we run mode.process() huh? Okay + + if(mode.explosion_in_progress) + return // wait until explosion is done. + + // Calculate if game and/or mode are finished (Complicated by the continuous_rounds config option) + var/game_finished = FALSE + var/mode_finished = FALSE + if (config.continous_rounds) // Game keeps going after mode ends. + game_finished = (emergency_shuttle.returned() || mode.station_was_nuked) + mode_finished = ((end_game_state >= END_GAME_MODE_FINISHED) || mode.check_finished()) // Short circuit if already finished. + else // Game ends when mode does + game_finished = (mode.check_finished() || (emergency_shuttle.returned() && emergency_shuttle.evac == 1)) || universe_has_ended + mode_finished = game_finished + + if(game_finished && mode_finished) + end_game_state = END_GAME_READY_TO_END + current_state = GAME_STATE_FINISHED + Master.SetRunLevel(RUNLEVEL_POSTGAME) + INVOKE_ASYNC(src, .proc/declare_completion) + else if (mode_finished && (end_game_state < END_GAME_MODE_FINISHED)) + end_game_state = END_GAME_MODE_FINISHED // Only do this cleanup once! + mode.cleanup() + //call a transfer shuttle vote + to_chat(world, "The round has ended!") + SSvote.autotransfer() + +// Called during GAME_STATE_FINISHED (RUNLEVEL_POSTGAME) +/datum/controller/subsystem/ticker/proc/post_game_tick() + switch(end_game_state) + if(END_GAME_READY_TO_END) + callHook("roundend") + + if (mode.station_was_nuked) + feedback_set_details("end_proper", "nuke") + restart_timeleft = 1 MINUTE // No point waiting five minutes if everyone's dead. + if(!delay_end) + to_chat(world, "Rebooting due to destruction of [station_name()] in [round(restart_timeleft/600)] minute\s.") + last_restart_notify = world.time + else + feedback_set_details("end_proper", "proper completion") + restart_timeleft = restart_timeout + + if(blackbox) + blackbox.save_all_data_to_sql() // TODO - Blackbox or statistics subsystem + + end_game_state = END_GAME_ENDING + return + if(END_GAME_ENDING) + restart_timeleft -= (world.time - last_fire) + if(delay_end) + to_chat(world, "An admin has delayed the round end.") + end_game_state = END_GAME_DELAYED + else if(restart_timeleft <= 0) + world.Reboot() + else if (world.time - last_restart_notify >= 1 MINUTE) + to_chat(world, "Restarting in [round(restart_timeleft/600, 1)] minute\s.") + last_restart_notify = world.time + return + if(END_GAME_DELAYED) + restart_timeleft -= (world.time - last_fire) + if(!delay_end) + end_game_state = END_GAME_ENDING + else + log_error("Ticker arrived at round end in an unexpected endgame state '[end_game_state]'.") + end_game_state = END_GAME_READY_TO_END + + +// ---------------------------------------------------------------------- +// These two below are not used! But they could be + +// Use these preferentially to directly examining ticker.current_state to help prepare for transition to ticker as subsystem! + +/datum/controller/subsystem/ticker/proc/PreRoundStart() + return (current_state < GAME_STATE_PLAYING) + +/datum/controller/subsystem/ticker/proc/IsSettingUp() + return (current_state == GAME_STATE_SETTING_UP) + +/datum/controller/subsystem/ticker/proc/IsRoundInProgress() + return (current_state == GAME_STATE_PLAYING) + +/datum/controller/subsystem/ticker/proc/HasRoundStarted() + return (current_state >= GAME_STATE_PLAYING) + +// ------------------------------------------------------------------------ +// HELPER PROCS! +// ------------------------------------------------------------------------ + +//Plus it provides an easy way to make cinematics for other events. Just use this as a template :) +/datum/controller/subsystem/ticker/proc/station_explosion_cinematic(var/station_missed=0, var/override = null) + if( cinematic ) return //already a cinematic in progress! + + //initialise our cinematic screen object + cinematic = new(src) + cinematic.icon = 'icons/effects/station_explosion.dmi' + cinematic.icon_state = "station_intact" + cinematic.layer = 100 + cinematic.plane = PLANE_PLAYER_HUD + cinematic.mouse_opacity = 0 + cinematic.screen_loc = "1,0" + + var/obj/structure/bed/temp_buckle = new(src) + //Incredibly hackish. It creates a bed within the gameticker (lol) to stop mobs running around + if(station_missed) + for(var/mob/living/M in living_mob_list) + M.buckled = temp_buckle //buckles the mob so it can't do anything + if(M.client) + M.client.screen += cinematic //show every client the cinematic + else //nuke kills everyone on z-level 1 to prevent "hurr-durr I survived" + for(var/mob/living/M in living_mob_list) + M.buckled = temp_buckle + if(M.client) + M.client.screen += cinematic + + switch(M.z) + if(0) //inside a crate or something + var/turf/T = get_turf(M) + if(T && T.z in using_map.station_levels) //we don't use M.death(0) because it calls a for(/mob) loop and + M.health = 0 + M.set_stat(DEAD) + if(1) //on a z-level 1 turf. + M.health = 0 + M.set_stat(DEAD) + + //Now animate the cinematic + switch(station_missed) + if(1) //nuke was nearby but (mostly) missed + if( mode && !override ) + override = mode.name + switch( override ) + if("mercenary") //Nuke wasn't on station when it blew up + flick("intro_nuke",cinematic) + sleep(35) + world << sound('sound/effects/explosionfar.ogg') + flick("station_intact_fade_red",cinematic) + cinematic.icon_state = "summary_nukefail" + else + flick("intro_nuke",cinematic) + sleep(35) + world << sound('sound/effects/explosionfar.ogg') + //flick("end",cinematic) + + + if(2) //nuke was nowhere nearby //TODO: a really distant explosion animation + sleep(50) + world << sound('sound/effects/explosionfar.ogg') + + + else //station was destroyed + if( mode && !override ) + override = mode.name + switch( override ) + if("mercenary") //Nuke Ops successfully bombed the station + flick("intro_nuke",cinematic) + sleep(35) + flick("station_explode_fade_red",cinematic) + world << sound('sound/effects/explosionfar.ogg') + cinematic.icon_state = "summary_nukewin" + if("AI malfunction") //Malf (screen,explosion,summary) + flick("intro_malf",cinematic) + sleep(76) + flick("station_explode_fade_red",cinematic) + world << sound('sound/effects/explosionfar.ogg') + cinematic.icon_state = "summary_malf" + if("blob") //Station nuked (nuke,explosion,summary) + flick("intro_nuke",cinematic) + sleep(35) + flick("station_explode_fade_red",cinematic) + world << sound('sound/effects/explosionfar.ogg') + cinematic.icon_state = "summary_selfdes" + else //Station nuked (nuke,explosion,summary) + flick("intro_nuke",cinematic) + sleep(35) + flick("station_explode_fade_red", cinematic) + world << sound('sound/effects/explosionfar.ogg') + cinematic.icon_state = "summary_selfdes" + for(var/mob/living/M in living_mob_list) + if(M.loc.z in using_map.station_levels) + M.death()//No mercy + //If its actually the end of the round, wait for it to end. + //Otherwise if its a verb it will continue on afterwards. + sleep(300) + + if(cinematic) qdel(cinematic) //end the cinematic + if(temp_buckle) qdel(temp_buckle) //release everybody + return + + +/datum/controller/subsystem/ticker/proc/create_characters() + for(var/mob/new_player/player in player_list) + if(player && player.ready && player.mind) + if(player.mind.assigned_role=="AI") + player.close_spawn_windows() + player.AIize() + else if(!player.mind.assigned_role) + continue + else + //VOREStation Edit Start + var/mob/living/carbon/human/new_char = player.create_character() + if(new_char) + qdel(player) + if(istype(new_char) && !(new_char.mind.assigned_role=="Cyborg")) + data_core.manifest_inject(new_char) + //VOREStation Edit End + + +/datum/controller/subsystem/ticker/proc/collect_minds() + for(var/mob/living/player in player_list) + if(player.mind) + minds += player.mind + + +/datum/controller/subsystem/ticker/proc/equip_characters() + var/captainless=1 + for(var/mob/living/carbon/human/player in player_list) + if(player && player.mind && player.mind.assigned_role) + if(player.mind.assigned_role == "Colony Director") + captainless=0 + if(!player_is_antag(player.mind, only_offstation_roles = 1)) + job_master.EquipRank(player, player.mind.assigned_role, 0) + UpdateFactionList(player) + //equip_custom_items(player) //VOREStation Removal + //player.apply_traits() //VOREStation Removal + if(captainless) + for(var/mob/M in player_list) + if(!istype(M,/mob/new_player)) + to_chat(M, "Colony Directorship not forced on anyone.") + + +/datum/controller/subsystem/ticker/proc/declare_completion() + to_world("


A round of [mode.name] has ended!

") + for(var/mob/Player in player_list) + if(Player.mind && !isnewplayer(Player)) + if(Player.stat != DEAD) + var/turf/playerTurf = get_turf(Player) + if(emergency_shuttle.departed && emergency_shuttle.evac) + if(isNotAdminLevel(playerTurf.z)) + to_chat(Player, "You survived the round, but remained on [station_name()] as [Player.real_name].") + else + to_chat(Player, "You managed to survive the events on [station_name()] as [Player.real_name].") + else if(isAdminLevel(playerTurf.z)) + to_chat(Player, "You successfully underwent crew transfer after events on [station_name()] as [Player.real_name].") + else if(issilicon(Player)) + to_chat(Player, "You remain operational after the events on [station_name()] as [Player.real_name].") + else + to_chat(Player, "You missed the crew transfer after the events on [station_name()] as [Player.real_name].") + else + if(istype(Player,/mob/observer/dead)) + var/mob/observer/dead/O = Player + if(!O.started_as_observer) + to_chat(Player, "You did not survive the events on [station_name()]...") + else + to_chat(Player, "You did not survive the events on [station_name()]...") + to_world("
") + + for (var/mob/living/silicon/ai/aiPlayer in mob_list) + if (aiPlayer.stat != 2) + to_world("[aiPlayer.name] (Played by: [aiPlayer.key])'s laws at the end of the round were:") + else + to_world("[aiPlayer.name] (Played by: [aiPlayer.key])'s laws when it was deactivated were:") + aiPlayer.show_laws(1) + + if (aiPlayer.connected_robots.len) + var/robolist = "The AI's loyal minions were: " + for(var/mob/living/silicon/robot/robo in aiPlayer.connected_robots) + robolist += "[robo.name][robo.stat?" (Deactivated) (Played by: [robo.key]), ":" (Played by: [robo.key]), "]" + to_world("[robolist]") + + var/dronecount = 0 + + for (var/mob/living/silicon/robot/robo in mob_list) + + if(istype(robo,/mob/living/silicon/robot/drone) && !istype(robo,/mob/living/silicon/robot/drone/swarm)) + dronecount++ + continue + + if (!robo.connected_ai) + if (robo.stat != 2) + to_world("[robo.name] (Played by: [robo.key]) survived as an AI-less stationbound synthetic! Its laws were:") + else + to_world("[robo.name] (Played by: [robo.key]) was unable to survive the rigors of being a stationbound synthetic without an AI. Its laws were:") + + if(robo) //How the hell do we lose robo between here and the world messages directly above this? + robo.laws.show_laws(world) + + if(dronecount) + to_world("There [dronecount>1 ? "were" : "was"] [dronecount] industrious maintenance [dronecount>1 ? "drones" : "drone"] at the end of this round.") + + mode.declare_completion()//To declare normal completion. + + //Ask the event manager to print round end information + SSevents.RoundEnd() + + //Print a list of antagonists to the server log + var/list/total_antagonists = list() + //Look into all mobs in world, dead or alive + for(var/datum/mind/Mind in minds) + var/temprole = Mind.special_role + if(temprole) //if they are an antagonist of some sort. + if(temprole in total_antagonists) //If the role exists already, add the name to it + total_antagonists[temprole] += ", [Mind.name]([Mind.key])" + else + total_antagonists.Add(temprole) //If the role doesnt exist in the list, create it and add the mob + total_antagonists[temprole] += ": [Mind.name]([Mind.key])" + + //Now print them all into the log! + log_game("Antagonists at round end were...") + for(var/i in total_antagonists) + log_game("[i]s[total_antagonists[i]].") + + return 1 + +/datum/controller/subsystem/ticker/stat_entry() + switch(current_state) + if(GAME_STATE_INIT) + ..() + if(GAME_STATE_PREGAME) // RUNLEVEL_LOBBY + ..("START [round_progressing ? "[round(pregame_timeleft)]s" : "(PAUSED)"]") + if(GAME_STATE_SETTING_UP) // RUNLEVEL_SETUP + ..("SETUP") + if(GAME_STATE_PLAYING) // RUNLEVEL_GAME + ..("GAME") + if(GAME_STATE_FINISHED) // RUNLEVEL_POSTGAME + switch(end_game_state) + if(END_GAME_MODE_FINISHED) + ..("MODE OVER, WAITING") + if(END_GAME_READY_TO_END) + ..("ENDGAME PROCESSING") + if(END_GAME_ENDING) + ..("END IN [round(restart_timeleft/10)]s") + if(END_GAME_DELAYED) + ..("END PAUSED") + else + ..("ENDGAME ERROR:[end_game_state]") + +/datum/controller/subsystem/ticker/Recover() + flags |= SS_NO_INIT // Don't initialize again + + current_state = SSticker.current_state + mode = SSticker.mode + pregame_timeleft = SSticker.pregame_timeleft + + end_game_state = SSticker.end_game_state + delay_end = SSticker.delay_end + restart_timeleft = SSticker.restart_timeleft + + minds = SSticker.minds + + Bible_icon_state = SSticker.Bible_icon_state + Bible_item_state = SSticker.Bible_item_state + Bible_name = SSticker.Bible_name + Bible_deity_name = SSticker.Bible_deity_name + random_players = SSticker.random_players diff --git a/code/controllers/subsystems/vote.dm b/code/controllers/subsystems/vote.dm index e3eca943bf4..210d97a2a23 100644 --- a/code/controllers/subsystems/vote.dm +++ b/code/controllers/subsystems/vote.dm @@ -13,6 +13,7 @@ SUBSYSTEM_DEF(vote) var/duration var/mode var/question + var/gamemode_vote_called = FALSE // Have we had a gamemode vote this round? Only auto-call if we haven't var/list/choices = list() var/list/gamemode_names = list() var/list/voted = list() @@ -257,6 +258,7 @@ SUBSYSTEM_DEF(vote) world << sound('sound/ambience/alarm4.ogg', repeat = 0, wait = 0, volume = 50, channel = 3) if(mode == VOTE_GAMEMODE && round_progressing) + gamemode_vote_called = TRUE round_progressing = 0 to_world("Round start has been delayed.") diff --git a/code/controllers/subsystems/xenoarch.dm b/code/controllers/subsystems/xenoarch.dm index c8184d783e0..2e22213ee6b 100644 --- a/code/controllers/subsystems/xenoarch.dm +++ b/code/controllers/subsystems/xenoarch.dm @@ -99,6 +99,9 @@ SUBSYSTEM_DEF(xenoarch) if(isnull(M.artifact_find) && digsite != DIGSITE_GARDEN && digsite != DIGSITE_ANIMAL) artifact_spawning_turfs.Add(archeo_turf) + //Larger maps will convince byond this is an infinite loop, so let go for a second + CHECK_TICK + //create artifact machinery var/num_artifacts_spawn = rand(ARTIFACTSPAWNNUM_LOWER, ARTIFACTSPAWNNUM_UPPER) while(artifact_spawning_turfs.len > num_artifacts_spawn) diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm index 5ef802f6746..3e294eccc2c 100644 --- a/code/controllers/verbs.dm +++ b/code/controllers/verbs.dm @@ -89,8 +89,6 @@ //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 diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 414a2d092a7..be5f6b33db3 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -5,11 +5,16 @@ /datum/datacore var/name = "datacore" - var/medical[] = list() - var/general[] = list() - var/security[] = list() + //For general station crew + var/static/list/medical = list() + var/static/list/general = list() + var/static/list/security = list() + //For offmap spawns so they can have records accessible by certain things + var/static/list/hidden_medical = list() + var/static/list/hidden_general = list() + var/static/list/hidden_security = list() //This list tracks characters spawned in the world and cannot be modified in-game. Currently referenced by respawn_character(). - var/locked[] = list() + var/static/list/locked = list() /datum/datacore/proc/get_manifest(monochrome, OOC) @@ -22,6 +27,7 @@ var/list/pla = new() //VOREStation Edit var/list/civ = new() var/list/bot = new() + var/list/off = new() var/list/misc = new() var/list/isactive = new() var/dat = {" @@ -46,7 +52,7 @@ if(OOC) var/active = 0 for(var/mob/M in player_list) - if(M.real_name == name && M.client && M.client.inactivity <= 10 * 60 * 10) + if(M.real_name == name && M.client && M.client.inactivity <= 10 MINUTES) active = 1 break isactive[name] = active ? "Active" : "Inactive" @@ -84,6 +90,24 @@ if(!department && !(name in heads)) misc[name] = rank + //For the offmap spawns + if(OOC) + for(var/datum/data/record/t in hidden_general) + var/name = t.fields["name"] + var/rank = t.fields["rank"] + var/real_rank = make_list_rank(t.fields["real_rank"]) + + var/active = 0 + for(var/mob/M in player_list) + if(M.real_name == name && M.client && M.client.inactivity <= 10 MINUTES) + active = 1 + break + isactive[name] = active ? "Active" : "Inactive" + + var/datum/job/J = SSjob.get_job(real_rank) + if(J?.offmap_spawn) + off[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) bot[ai.name] = "Artificial Intelligence" @@ -142,6 +166,12 @@ for(name in bot) dat += "" even = !even + // offmap spawners + if(off.len > 0) + dat += "" + for(name in off) + dat += "" + even = !even // misc guys if(misc.len > 0) dat += "" @@ -154,6 +184,117 @@ dat = replacetext(dat, "\t", "") return dat +/* +We can't just insert in HTML into the nanoUI so we need the raw data to play with. +Instead of creating this list over and over when someone leaves their PDA open to the page +we'll only update it when it changes. The PDA_Manifest global list is zeroed out upon any change +using /datum/datacore/proc/manifest_inject( ), or manifest_insert( ) +*/ + +var/global/list/PDA_Manifest = list() + +/datum/datacore/proc/get_manifest_list() + if(PDA_Manifest.len) + return + var/list/heads = list() + var/list/sec = list() + var/list/eng = list() + var/list/med = list() + var/list/sci = list() + var/list/car = list() + var/list/pla = list() // Planetside crew: Explorers, Pilots, S&S + var/list/civ = list() + var/list/bot = list() + var/list/misc = list() + for(var/datum/data/record/t in data_core.general) + var/name = sanitize(t.fields["name"]) + var/rank = sanitize(t.fields["rank"]) + var/real_rank = make_list_rank(t.fields["real_rank"]) + + var/isactive = t.fields["p_stat"] + var/department = 0 + var/depthead = 0 // Department Heads will be placed at the top of their lists. + if(SSjob.is_job_in_department(real_rank, DEPARTMENT_COMMAND)) + heads[++heads.len] = list("name" = name, "rank" = rank, "active" = isactive) + department = 1 + depthead = 1 + if(rank=="Colony Director" && heads.len != 1) + heads.Swap(1,heads.len) + + if(SSjob.is_job_in_department(real_rank, DEPARTMENT_SECURITY)) + sec[++sec.len] = list("name" = name, "rank" = rank, "active" = isactive) + department = 1 + if(depthead && sec.len != 1) + sec.Swap(1,sec.len) + + if(SSjob.is_job_in_department(real_rank, DEPARTMENT_ENGINEERING)) + eng[++eng.len] = list("name" = name, "rank" = rank, "active" = isactive) + department = 1 + if(depthead && eng.len != 1) + eng.Swap(1,eng.len) + + if(SSjob.is_job_in_department(real_rank, DEPARTMENT_MEDICAL)) + med[++med.len] = list("name" = name, "rank" = rank, "active" = isactive) + department = 1 + if(depthead && med.len != 1) + med.Swap(1,med.len) + + if(SSjob.is_job_in_department(real_rank, DEPARTMENT_RESEARCH)) + sci[++sci.len] = list("name" = name, "rank" = rank, "active" = isactive) + department = 1 + if(depthead && sci.len != 1) + sci.Swap(1,sci.len) + + if(SSjob.is_job_in_department(real_rank, DEPARTMENT_PLANET)) + pla[++pla.len] = list("name" = name, "rank" = rank, "active" = isactive) + department = 1 + + if(SSjob.is_job_in_department(real_rank, DEPARTMENT_CARGO)) + car[++car.len] = list("name" = name, "rank" = rank, "active" = isactive) + department = 1 + if(depthead && car.len != 1) + car.Swap(1,car.len) + + if(SSjob.is_job_in_department(real_rank, DEPARTMENT_CIVILIAN)) + civ[++civ.len] = list("name" = name, "rank" = rank, "active" = isactive) + department = 1 + if(depthead && civ.len != 1) + civ.Swap(1,civ.len) + + if(SSjob.is_job_in_department(real_rank, DEPARTMENT_SYNTHETIC)) + bot[++bot.len] = list("name" = name, "rank" = rank, "active" = isactive) + department = 1 + + if(!department && !(name in heads)) + misc[++misc.len] = list("name" = name, "rank" = rank, "active" = isactive) + + // Synthetics don't have actual records, so we will pull them from here. + // Synths don't have records, which is the means by which isactive is retrieved, so I'm hardcoding it to active, don't really have any better means + for(var/mob/living/silicon/ai/ai in mob_list) + bot[++bot.len] = list("name" = ai.real_name, "rank" = "Artificial Intelligence", "active" = "Active") + + for(var/mob/living/silicon/robot/robot in mob_list) + // No combat/syndicate cyborgs, no drones, and no AI shells. + if(robot.scrambledcodes || robot.shell || (robot.module && robot.module.hide_on_manifest)) + continue + + bot[++bot.len] = list("name" = robot.real_name, "rank" = "[robot.modtype] [robot.braintype]", "active" = "Active") + + + PDA_Manifest = list( + list("cat" = "Command", "elems" = heads), + list("cat" = "Security", "elems" = sec), + list("cat" = "Engineering", "elems" = eng), + list("cat" = "Medical", "elems" = med), + list("cat" = "Science", "elems" = sci), + list("cat" = "Cargo", "elems" = car), + list("cat" = "Exploration", "elems" = pla), // VOREStation Edit + list("cat" = "Civilian", "elems" = civ), + list("cat" = "Silicon", "elems" = bot), + list("cat" = "Miscellaneous", "elems" = misc) + ) + return + /datum/datacore/proc/manifest() spawn() for(var/mob/living/carbon/human/H in player_list) @@ -187,10 +328,13 @@ /datum/datacore/proc/manifest_inject(var/mob/living/carbon/human/H) if(H.mind && !player_is_antag(H.mind, only_offstation_roles = 1)) var/assignment = GetAssignment(H) + var/hidden + var/datum/job/J = SSjob.get_job(assignment) + hidden = J?.offmap_spawn var/id = generate_record_id() //General Record - var/datum/data/record/G = CreateGeneralRecord(H, id) + var/datum/data/record/G = CreateGeneralRecord(H, id, hidden) G.fields["name"] = H.real_name G.fields["real_rank"] = H.mind.assigned_role G.fields["rank"] = assignment @@ -212,7 +356,7 @@ G.fields["notes"] = H.gen_record //Medical Record - var/datum/data/record/M = CreateMedicalRecord(H.real_name, id) + var/datum/data/record/M = CreateMedicalRecord(H.real_name, id, hidden) M.fields["b_type"] = H.b_type M.fields["b_dna"] = H.dna.unique_enzymes M.fields["id_gender"] = gender2text(H.identifying_gender) @@ -224,7 +368,7 @@ M.fields["notes"] = H.med_record //Security Record - var/datum/data/record/S = CreateSecurityRecord(H.real_name, id) + var/datum/data/record/S = CreateSecurityRecord(H.real_name, id, hidden) if(H.get_FBP_type()) S.fields["brain_type"] = H.get_FBP_type() else @@ -257,6 +401,7 @@ L.fields["image"] = icon(cached_character_icon(H), dir = SOUTH) L.fields["antagfac"] = H.antag_faction L.fields["antagvis"] = H.antag_vis + L.fields["offmap"] = hidden if(H.exploit_record && !jobban_isbanned(H, "Records")) L.fields["exploit_record"] = H.exploit_record else @@ -267,7 +412,7 @@ /proc/generate_record_id() return add_zero(num2hex(rand(1, 65535)), 4) //no point generating higher numbers because of the limitations of num2hex -/datum/datacore/proc/CreateGeneralRecord(var/mob/living/carbon/human/H, var/id) +/datum/datacore/proc/CreateGeneralRecord(var/mob/living/carbon/human/H, var/id, var/hidden) ResetPDAManifest() var/icon/front var/icon/side @@ -301,11 +446,14 @@ G.fields["photo_front"] = front G.fields["photo_side"] = side G.fields["notes"] = "No notes found." - general += G + if(hidden) + hidden_general += G + else + general += G return G -/datum/datacore/proc/CreateSecurityRecord(var/name, var/id) +/datum/datacore/proc/CreateSecurityRecord(var/name, var/id, var/hidden) ResetPDAManifest() var/datum/data/record/R = new /datum/data/record() R.name = "Security Record #[id]" @@ -319,11 +467,14 @@ R.fields["ma_crim_d"] = "No major crime convictions." R.fields["notes"] = "No notes." R.fields["notes"] = "No notes." - data_core.security += R + if(hidden) + hidden_security += R + else + security += R return R -/datum/datacore/proc/CreateMedicalRecord(var/name, var/id) +/datum/datacore/proc/CreateMedicalRecord(var/name, var/id, var/hidden) ResetPDAManifest() var/datum/data/record/M = new() M.name = "Medical Record #[id]" @@ -342,7 +493,10 @@ M.fields["cdi"] = "None" M.fields["cdi_d"] = "No diseases have been diagnosed at the moment." M.fields["notes"] = "No notes found." - data_core.medical += M + if(hidden) + hidden_medical += M + else + medical += M return M diff --git a/code/datums/game_masters/_common.dm b/code/datums/game_masters/_common.dm new file mode 100644 index 00000000000..84efe57c73d --- /dev/null +++ b/code/datums/game_masters/_common.dm @@ -0,0 +1,6 @@ +// Push button, receive event. +// Returns a selected event datum. +/datum/game_master/proc/choose_event() + +/datum/game_master/proc/log_game_master(message) + // SSgame_master.log_game_master(message) // VOREStation Edit - We don't use SSgame_master yet. \ No newline at end of file diff --git a/code/datums/game_masters/default.dm b/code/datums/game_masters/default.dm new file mode 100644 index 00000000000..d380476df2f --- /dev/null +++ b/code/datums/game_masters/default.dm @@ -0,0 +1,89 @@ +// The default game master tries to choose events with these goals in mind. +// * Don't choose an event if the crew can't take it. E.g. no meteors after half of the crew died. +// * Try to involve lots of people, particuarly in active departments. +// * Avoid giving events to the same department multiple times in a row. +/datum/game_master/default + // If an event was done for a specific department, it is written here, so it doesn't do it again. + var/last_department_used = null + + +/datum/game_master/default/choose_event() + log_game_master("Now starting event decision.") + + var/list/most_active_departments = metric.assess_all_departments(3, list(last_department_used)) + var/list/best_events = decide_best_events(most_active_departments) + + if(LAZYLEN(best_events)) + log_game_master("Got [best_events.len] choice\s for the next event.") + var/list/weighted_events = list() + + for(var/E in best_events) + var/datum/event2/meta/event = E + var/weight = event.get_weight() + if(weight <= 0) + continue + weighted_events[event] = weight + log_game_master("Filtered down to [weighted_events.len] choice\s.") + + var/datum/event2/meta/choice = pickweight(weighted_events) + + if(choice) + log_game_master("[choice.name] was chosen, and is now being ran.") + last_department_used = LAZYACCESS(choice.departments, 1) + return choice + +/datum/game_master/default/proc/decide_best_events(list/most_active_departments) + if(!LAZYLEN(most_active_departments)) // Server's empty? + log_game_master("Game Master failed to find any active departments.") + return list() + + var/list/best_events = list() + if(most_active_departments.len >= 2) + var/list/top_two = list(most_active_departments[1], most_active_departments[2]) + best_events = filter_events_by_departments(top_two) + + if(LAZYLEN(best_events)) // We found something for those two, let's do it. + return best_events + + // Otherwise we probably couldn't find something for the second highest group, so let's ignore them. + best_events = filter_events_by_departments(most_active_departments[1]) + + if(LAZYLEN(best_events)) + return best_events + + // At this point we should expand our horizons. + best_events = filter_events_by_departments(list(DEPARTMENT_EVERYONE)) + + if(LAZYLEN(best_events)) + return best_events + + // Just give a random event if for some reason it still can't make up its mind. + best_events = filter_events_by_departments() + + if(LAZYLEN(best_events)) + return best_events + + log_game_master("Game Master failed to find a suitable event, something very wrong is going on.") + return list() + +// Filters the available events down to events for specific departments. +// Pass DEPARTMENT_EVERYONE if you want events that target the general population, like gravity failure. +// If no list is passed, all the events will be returned. +/datum/game_master/default/proc/filter_events_by_departments(list/departments) + . = list() + for(var/E in SSgame_master.available_events) + var/datum/event2/meta/event = E + if(!event.enabled) + continue + if(event.chaotic_threshold && !ignore_round_chaos) + if(SSgame_master.danger > event.chaotic_threshold) + continue + // An event has to involve all of these departments to pass. + var/viable = TRUE + if(LAZYLEN(departments)) + for(var/department in departments) + if(!LAZYFIND(departments, department)) + viable = FALSE + break + if(viable) + . += event diff --git a/code/datums/game_masters/other_game_masters.dm b/code/datums/game_masters/other_game_masters.dm new file mode 100644 index 00000000000..f62d83cfe37 --- /dev/null +++ b/code/datums/game_masters/other_game_masters.dm @@ -0,0 +1,44 @@ +// The `classic` game master tries to act like the old system, choosing events without any specific goals. +// * Has no goals, and instead operates purely off of the weights of the events it has. +// * Does not react to danger at all. +/datum/game_master/classic/choose_event() + var/list/weighted_events = list() + for(var/E in SSgame_master.available_events) + var/datum/event2/meta/event = E + if(!event.enabled) + continue + weighted_events[event] = event.get_weight() + + var/datum/event2/meta/choice = pickweight(weighted_events) + + if(choice) + log_game_master("[choice.name] was chosen, and is now being ran.") + return choice + + +// The `super_random` game master chooses events purely at random, ignoring weights entirely. +// * Has no goals, and instead chooses randomly, ignoring weights. +// * Does not react to danger at all. +/datum/game_master/super_random/choose_event() + return pick(SSgame_master.available_events) + + +// The `brutal` game master tries to run dangerous events frequently. +// * Chaotic events have their weights artifically boosted. +// * Ignores accumulated danger. +/datum/game_master/brutal + ignore_round_chaos = TRUE + +/datum/game_master/brutal/choose_event() + var/list/weighted_events = list() + for(var/E in SSgame_master.available_events) + var/datum/event2/meta/event = E + if(!event.enabled) + continue + weighted_events[event] = event.get_weight() + (event.chaos * 2) + + var/datum/event2/meta/choice = pickweight(weighted_events) + + if(choice) + log_game_master("[choice.name] was chosen, and is now being ran.") + return choice diff --git a/code/datums/repositories/cameras.dm b/code/datums/repositories/cameras.dm index 7bac2a4634d..d5161133948 100644 --- a/code/datums/repositories/cameras.dm +++ b/code/datums/repositories/cameras.dm @@ -14,10 +14,25 @@ var/global/datum/repository/cameras/camera_repository = new() networks = list() ..() -/datum/repository/cameras/proc/cameras_in_network(var/network) +/datum/repository/cameras/proc/cameras_in_network(var/network, var/list/zlevels) setup_cache() var/list/network_list = networks[network] - return network_list + if(LAZYLEN(zlevels)) + var/list/filtered_cameras = list() + for(var/list/C in network_list) + //Camera is marked as always-visible + if(C["omni"]) + filtered_cameras[++filtered_cameras.len] = C + continue + //Camera might be in an adjacent zlevel + var/camz = C["z"] + if(!camz) //It's inside something (helmet, communicator, etc) or nullspace or who knows + camz = get_z(locate(C["camera"]) in cameranet.cameras) + if(camz in zlevels) + filtered_cameras[++filtered_cameras.len] = C //Can't add lists to lists with += + return filtered_cameras + else + return network_list /datum/repository/cameras/proc/setup_cache() if(!invalidated) diff --git a/code/datums/supplypacks/engineering.dm b/code/datums/supplypacks/engineering.dm index e387309da7a..5ffa26d7117 100644 --- a/code/datums/supplypacks/engineering.dm +++ b/code/datums/supplypacks/engineering.dm @@ -35,48 +35,6 @@ containertype = /obj/structure/closet/crate/engineering containername = "Superconducting Transmission Coil crate" -/datum/supply_pack/eng/shield_capacitor - name = "Shield Capacitor" - contains = list(/obj/machinery/shield_capacitor) - cost = 20 - containertype = /obj/structure/closet/crate/engineering - containername = "shield capacitor crate" - -/datum/supply_pack/eng/shield_capacitor/advanced - name = "Advanced Shield Capacitor" - contains = list(/obj/machinery/shield_capacitor/advanced) - cost = 30 - containertype = /obj/structure/closet/crate/engineering - containername = "advanced shield capacitor crate" - -/datum/supply_pack/eng/bubble_shield - name = "Bubble Shield Generator" - contains = list(/obj/machinery/shield_gen) - cost = 40 - containertype = /obj/structure/closet/crate/engineering - containername = "shield bubble generator crate" - -/datum/supply_pack/eng/bubble_shield/advanced - name = "Advanced Bubble Shield Generator" - contains = list(/obj/machinery/shield_gen/advanced) - cost = 60 - containertype = /obj/structure/closet/crate/engineering - containername = "advanced bubble shield generator crate" - -/datum/supply_pack/eng/hull_shield - name = "Hull Shield Generator" - contains = list(/obj/machinery/shield_gen/external) - cost = 80 - containertype = /obj/structure/closet/crate/engineering - containername = "shield hull generator crate" - -/datum/supply_pack/eng/hull_shield/advanced - name = "Advanced Hull Shield Generator" - contains = list(/obj/machinery/shield_gen/external/advanced) - cost = 120 - containertype = /obj/structure/closet/crate/engineering - containername = "advanced hull shield generator crate" - /datum/supply_pack/eng/electrical name = "Electrical maintenance crate" contains = list( @@ -173,29 +131,19 @@ containername = "Particle Accelerator crate" access = access_ce -/datum/supply_pack/eng/shield_gen - contains = list(/obj/item/weapon/circuitboard/shield_gen) - name = "Bubble shield generator circuitry" - cost = 30 - containertype = /obj/structure/closet/crate/secure/engineering - containername = "bubble shield generator circuitry crate" - access = access_ce - -/datum/supply_pack/eng/shield_gen_ex - contains = list(/obj/item/weapon/circuitboard/shield_gen_ex) - name = "Hull shield generator circuitry" - cost = 30 - containertype = /obj/structure/closet/crate/secure/engineering - containername = "hull shield generator circuitry crate" - access = access_ce - -/datum/supply_pack/eng/shield_cap - contains = list(/obj/item/weapon/circuitboard/shield_cap) - name = "Bubble shield capacitor circuitry" - cost = 30 - containertype = /obj/structure/closet/crate/secure/engineering - containername = "shield capacitor circuitry crate" - access = access_ce +/datum/supply_pack/eng/shield_generator + name = "Shield Generator Construction Kit" + contains = list( + /obj/item/weapon/circuitboard/shield_generator, + /obj/item/weapon/stock_parts/capacitor, + /obj/item/weapon/stock_parts/micro_laser, + /obj/item/weapon/smes_coil, + /obj/item/weapon/stock_parts/console_screen, + /obj/item/weapon/stock_parts/subspace/amplifier + ) + cost = 80 + containertype = /obj/structure/closet/crate/engineering + containername = "shield generator construction kit crate" /datum/supply_pack/eng/smbig name = "Supermatter Core" diff --git a/code/datums/supplypacks/munitions_vr.dm b/code/datums/supplypacks/munitions_vr.dm index 8a86c73ad5d..e8674dd390c 100644 --- a/code/datums/supplypacks/munitions_vr.dm +++ b/code/datums/supplypacks/munitions_vr.dm @@ -1,8 +1,8 @@ /datum/supply_pack/munitions/expeditionguns name = "Frontier phaser (station-locked) crate" contains = list( - /obj/item/weapon/gun/energy/frontier/locked = 2, - /obj/item/weapon/gun/energy/frontier/locked/holdout = 1, + /obj/item/weapon/gun/energy/locked/frontier = 2, + /obj/item/weapon/gun/energy/locked/frontier/holdout = 1, ) cost = 35 containertype = /obj/structure/closet/crate/secure diff --git a/code/datums/uplink/tools.dm b/code/datums/uplink/tools.dm index 6f70c1111c2..51d7ec7cd22 100644 --- a/code/datums/uplink/tools.dm +++ b/code/datums/uplink/tools.dm @@ -53,6 +53,12 @@ name = "Black Ammunition Duffle Bag" path = /obj/item/weapon/storage/backpack/dufflebag/syndie/ammo +/datum/uplink_item/item/tools/shield_diffuser + name = "Handheld Shield Diffuser" + desc = "A small device used to disrupt energy barriers, and allow passage through them." + item_cost = 16 + path = /obj/item/weapon/shield_diffuser + /datum/uplink_item/item/tools/space_suit name = "Space Suit" item_cost = 15 diff --git a/code/datums/wires/shield_generator.dm b/code/datums/wires/shield_generator.dm new file mode 100644 index 00000000000..201109de359 --- /dev/null +++ b/code/datums/wires/shield_generator.dm @@ -0,0 +1,46 @@ +/datum/wires/shield_generator + holder_type = /obj/machinery/power/shield_generator + wire_count = 5 + +var/const/SHIELDGEN_WIRE_POWER = 1 // Cut to disable power input into the generator. Pulse does nothing. Mend to restore. +var/const/SHIELDGEN_WIRE_HACK = 2 // Pulse to hack the generator, enabling hacked modes. Cut to unhack. Mend does nothing. +var/const/SHIELDGEN_WIRE_CONTROL = 4 // Cut to lock most shield controls. Mend to unlock them. Pulse does nothing. +var/const/SHIELDGEN_WIRE_AICONTROL = 8 // Cut to disable AI control. Mend to restore. +var/const/SHIELDGEN_WIRE_NOTHING = 16 // A blank wire that doesn't have any specific function + +/datum/wires/shield_generator/CanUse(var/mob/living/L) + var/obj/machinery/power/shield_generator/S = holder + if(S.panel_open) + return 1 + return 0 + +/datum/wires/shield_generator/GetInteractWindow() + var/obj/machinery/power/shield_generator/S = holder + . += ..() + . += show_hint(0x1, S.mode_changes_locked, "The orange light is on.", "The orange light is off.") + . += show_hint(0x2, S.ai_control_disabled, "The blue light is off.", "The blue light is blinking.") + . += show_hint(0x4, S.hacked, "The violet light is pulsing.", "The violet light is steady.") + . += show_hint(0x8, S.input_cut, "The red light is off.", "The red light is on.") + +/datum/wires/shield_generator/UpdateCut(index, mended) + var/obj/machinery/power/shield_generator/S = holder + switch(index) + if(SHIELDGEN_WIRE_POWER) + S.input_cut = !mended + if(SHIELDGEN_WIRE_HACK) + if(!mended) + S.hacked = 0 + if(S.check_flag(MODEFLAG_BYPASS)) + S.toggle_flag(MODEFLAG_BYPASS) + if(S.check_flag(MODEFLAG_OVERCHARGE)) + S.toggle_flag(MODEFLAG_OVERCHARGE) + if(SHIELDGEN_WIRE_CONTROL) + S.mode_changes_locked = !mended + if(SHIELDGEN_WIRE_AICONTROL) + S.ai_control_disabled = !mended + +/datum/wires/shield_generator/UpdatePulsed(var/index) + var/obj/machinery/power/shield_generator/S = holder + switch(index) + if(SHIELDGEN_WIRE_HACK) + S.hacked = 1 \ No newline at end of file diff --git a/code/defines/obj.dm b/code/defines/obj.dm index 293ea99e7f8..187b69e0216 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -52,120 +52,6 @@ return copytext(rank, 2+length(prefix)) return rank - -/* -We can't just insert in HTML into the nanoUI so we need the raw data to play with. -Instead of creating this list over and over when someone leaves their PDA open to the page -we'll only update it when it changes. The PDA_Manifest global list is zeroed out upon any change -using /datum/datacore/proc/manifest_inject( ), or manifest_insert( ) -*/ - -var/global/list/PDA_Manifest = list() - -/datum/datacore/proc/get_manifest_list() - if(PDA_Manifest.len) - return - var/list/heads = list() - var/list/sec = list() - var/list/eng = list() - var/list/med = list() - var/list/sci = list() - var/list/car = list() - var/list/pla = list() // Planetside crew: Explorers, Pilots, S&S - var/list/civ = list() - var/list/bot = list() - var/list/misc = list() - for(var/datum/data/record/t in data_core.general) - var/name = sanitize(t.fields["name"]) - var/rank = sanitize(t.fields["rank"]) - var/real_rank = make_list_rank(t.fields["real_rank"]) - - var/isactive = t.fields["p_stat"] - var/department = 0 - var/depthead = 0 // Department Heads will be placed at the top of their lists. - if(SSjob.is_job_in_department(real_rank, DEPARTMENT_COMMAND)) - heads[++heads.len] = list("name" = name, "rank" = rank, "active" = isactive) - department = 1 - depthead = 1 - if(rank=="Colony Director" && heads.len != 1) - heads.Swap(1,heads.len) - - if(SSjob.is_job_in_department(real_rank, DEPARTMENT_SECURITY)) - sec[++sec.len] = list("name" = name, "rank" = rank, "active" = isactive) - department = 1 - if(depthead && sec.len != 1) - sec.Swap(1,sec.len) - - if(SSjob.is_job_in_department(real_rank, DEPARTMENT_ENGINEERING)) - eng[++eng.len] = list("name" = name, "rank" = rank, "active" = isactive) - department = 1 - if(depthead && eng.len != 1) - eng.Swap(1,eng.len) - - if(SSjob.is_job_in_department(real_rank, DEPARTMENT_MEDICAL)) - med[++med.len] = list("name" = name, "rank" = rank, "active" = isactive) - department = 1 - if(depthead && med.len != 1) - med.Swap(1,med.len) - - if(SSjob.is_job_in_department(real_rank, DEPARTMENT_RESEARCH)) - sci[++sci.len] = list("name" = name, "rank" = rank, "active" = isactive) - department = 1 - if(depthead && sci.len != 1) - sci.Swap(1,sci.len) - - if(SSjob.is_job_in_department(real_rank, DEPARTMENT_PLANET)) - pla[++pla.len] = list("name" = name, "rank" = rank, "active" = isactive) - department = 1 - - if(SSjob.is_job_in_department(real_rank, DEPARTMENT_CARGO)) - car[++car.len] = list("name" = name, "rank" = rank, "active" = isactive) - department = 1 - if(depthead && car.len != 1) - car.Swap(1,car.len) - - if(SSjob.is_job_in_department(real_rank, DEPARTMENT_CIVILIAN)) - civ[++civ.len] = list("name" = name, "rank" = rank, "active" = isactive) - department = 1 - if(depthead && civ.len != 1) - civ.Swap(1,civ.len) - - if(SSjob.is_job_in_department(real_rank, DEPARTMENT_SYNTHETIC)) - bot[++bot.len] = list("name" = name, "rank" = rank, "active" = isactive) - department = 1 - - if(!department && !(name in heads)) - misc[++misc.len] = list("name" = name, "rank" = rank, "active" = isactive) - - // Synthetics don't have actual records, so we will pull them from here. - // Synths don't have records, which is the means by which isactive is retrieved, so I'm hardcoding it to active, don't really have any better means - for(var/mob/living/silicon/ai/ai in mob_list) - bot[++bot.len] = list("name" = ai.real_name, "rank" = "Artificial Intelligence", "active" = "Active") - - for(var/mob/living/silicon/robot/robot in mob_list) - // No combat/syndicate cyborgs, no drones, and no AI shells. - if(robot.scrambledcodes || robot.shell || (robot.module && robot.module.hide_on_manifest)) - continue - - bot[++bot.len] = list("name" = robot.real_name, "rank" = "[robot.modtype] [robot.braintype]", "active" = "Active") - - - PDA_Manifest = list( - list("cat" = "Command", "elems" = heads), - list("cat" = "Security", "elems" = sec), - list("cat" = "Engineering", "elems" = eng), - list("cat" = "Medical", "elems" = med), - list("cat" = "Science", "elems" = sci), - list("cat" = "Cargo", "elems" = car), - list("cat" = "Exploration", "elems" = pla), // VOREStation Edit - list("cat" = "Civilian", "elems" = civ), - list("cat" = "Silicon", "elems" = bot), - list("cat" = "Miscellaneous", "elems" = misc) - ) - return - - - /obj/effect/laser name = "laser" desc = "IT BURNS!!!" diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm index c68acc43a46..c739ffbf852 100644 --- a/code/defines/procs/announce.dm +++ b/code/defines/procs/announce.dm @@ -32,7 +32,7 @@ title = "Security Announcement" announcement_type = "Security Announcement" -/datum/announcement/proc/Announce(var/message as text, var/new_title = "", var/new_sound = null, var/do_newscast = newscast, var/msg_sanitized = 0) +/datum/announcement/proc/Announce(var/message as text, var/new_title = "", var/new_sound = null, var/do_newscast = newscast, var/msg_sanitized = 0, zlevel) if(!message) return var/message_title = new_title ? new_title : title @@ -42,28 +42,32 @@ message = sanitize(message, extra = 0) message_title = sanitizeSafe(message_title) - Message(message, message_title) + var/list/zlevels + if(zlevel) + zlevels = using_map.get_map_levels(zlevel, TRUE) + + Message(message, message_title, zlevels) if(do_newscast) NewsCast(message, message_title) - Sound(message_sound) + Sound(message_sound, zlevels) Log(message, message_title) -datum/announcement/proc/Message(message as text, message_title as text) - global_announcer.autosay("[message_title]: [message]", announcer ? announcer : ANNOUNCER_NAME) +datum/announcement/proc/Message(var/message as text, var/message_title as text, var/list/zlevels) + global_announcer.autosay("[message_title]: [message]", announcer ? announcer : ANNOUNCER_NAME, zlevels) -datum/announcement/minor/Message(message as text, message_title as text) - global_announcer.autosay(message, announcer ? announcer : ANNOUNCER_NAME) +datum/announcement/minor/Message(var/message as text, var/message_title as text, var/list/zlevels) + global_announcer.autosay(message, announcer ? announcer : ANNOUNCER_NAME, zlevels) -datum/announcement/priority/Message(message as text, message_title as text) - global_announcer.autosay("[message_title]: [message]", announcer ? announcer : ANNOUNCER_NAME) +datum/announcement/priority/Message(var/message as text, var/message_title as text, var/list/zlevels) + global_announcer.autosay("[message_title]: [message]", announcer ? announcer : ANNOUNCER_NAME, zlevels) -datum/announcement/priority/command/Message(message as text, message_title as text) - global_announcer.autosay("[command_name()] - [message_title]: [message]", ANNOUNCER_NAME) +datum/announcement/priority/command/Message(var/message as text, var/message_title as text, var/list/zlevels) + global_announcer.autosay("[command_name()] - [message_title]: [message]", ANNOUNCER_NAME, zlevels) -datum/announcement/priority/security/Message(message as text, message_title as text) - global_announcer.autosay("[message_title]: [message]", ANNOUNCER_NAME) +datum/announcement/priority/security/Message(var/message as text, var/message_title as text, var/list/zlevels) + global_announcer.autosay("[message_title]: [message]", ANNOUNCER_NAME, zlevels) -datum/announcement/proc/NewsCast(message as text, message_title as text) +datum/announcement/proc/NewsCast(var/message as text, var/message_title as text) if(!newscast) return @@ -75,15 +79,18 @@ datum/announcement/proc/NewsCast(message as text, message_title as text) news.can_be_redacted = 0 announce_newscaster_news(news) -datum/announcement/proc/PlaySound(var/message_sound) +datum/announcement/proc/PlaySound(var/message_sound, var/list/zlevels) if(!message_sound) return + for(var/mob/M in player_list) + if(zlevels && !(M.z in zlevels)) + continue if(!istype(M,/mob/new_player) && !isdeaf(M)) M << message_sound -datum/announcement/proc/Sound(var/message_sound) - PlaySound(message_sound) +datum/announcement/proc/Sound(var/message_sound, var/list/zlevels) + PlaySound(message_sound, zlevels) datum/announcement/priority/Sound(var/message_sound) if(message_sound) @@ -107,11 +114,12 @@ datum/announcement/proc/Log(message as text, message_title as text) /proc/ion_storm_announcement() command_announcement.Announce("It has come to our attention that \the [station_name()] passed through an ion storm. Please monitor all electronic equipment for malfunctions.", "Anomaly Alert") -/proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank, var/join_message) +/proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank, var/join_message, var/channel = "Common", var/zlevel) if (ticker.current_state == GAME_STATE_PLAYING) + var/list/zlevels = zlevel ? using_map.get_map_levels(zlevel, TRUE) : null if(character.mind.role_alt_title) rank = character.mind.role_alt_title - AnnounceArrivalSimple(character.real_name, rank, join_message) + AnnounceArrivalSimple(character.real_name, rank, join_message, channel, zlevels) -/proc/AnnounceArrivalSimple(var/name, var/rank = "visitor", var/join_message = "will arrive at the station shortly", new_sound = 'sound/misc/notice3.ogg') //VOREStation Edit - Remove shuttle reference - global_announcer.autosay("[name], [rank], [join_message].", "Arrivals Announcement Computer") +/proc/AnnounceArrivalSimple(var/name, var/rank = "visitor", var/join_message = "will arrive at the station shortly", var/channel = "Common", var/list/zlevels) + global_announcer.autosay("[name], [rank], [join_message].", "Arrivals Announcement Computer", channel, zlevels) diff --git a/code/defines/procs/statistics.dm b/code/defines/procs/statistics.dm index a41fddeb0a0..3d05d5ba9ee 100644 --- a/code/defines/procs/statistics.dm +++ b/code/defines/procs/statistics.dm @@ -94,6 +94,7 @@ proc/sql_report_cyborg_death(var/mob/living/silicon/robot/H) proc/statistic_cycle() + set waitfor = 0 if(!sqllogging) return while(1) diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 839ab27a318..067f71a6e28 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -70,6 +70,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station flags = RAD_SHIELDED sound_env = SMALL_ENCLOSED base_turf = /turf/space + forbid_events = TRUE /area/shuttle/arrival name = "\improper Arrival Shuttle" @@ -807,6 +808,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "\improper Construction Area" icon_state = "construction" +/area/hallway/secondary/entry + forbid_events = TRUE + /area/hallway/secondary/entry/fore name = "\improper Shuttle Dock Hallway - Mid" icon_state = "entry_1" @@ -981,6 +985,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station icon_state = "Sleep" flags = RAD_SHIELDED ambience = AMBIENCE_GENERIC + forbid_events = TRUE /area/crew_quarters/toilet name = "\improper Dormitory Toilets" @@ -1281,6 +1286,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station icon_state = "Holodeck" dynamic_lighting = 0 sound_env = LARGE_ENCLOSED + forbid_events = TRUE /area/holodeck/alphadeck name = "\improper Holodeck Alpha" @@ -1380,6 +1386,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "\improper Engine Room" icon_state = "engine" sound_env = LARGE_ENCLOSED + forbid_events = TRUE /area/engineering/engine_airlock name = "\improper Engine Room Airlock" diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 8b7950dd482..6c7cb1597b3 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -40,14 +40,7 @@ var/list/forced_ambience = null var/sound_env = STANDARD_STATION var/turf/base_turf //The base turf type of the area, which can be used to override the z-level's base turf - var/global/global_uid = 0 - var/uid - -/area/New() - uid = ++global_uid - all_areas += src //Replace with /area in world? Byond optimizes X in world loops. - - ..() + var/forbid_events = FALSE // If true, random events will not start inside this area. /area/Initialize() . = ..() @@ -366,6 +359,8 @@ var/list/mob/living/forced_ambiance_list = new temp_airlock.prison_open() for(var/obj/machinery/door/window/temp_windoor in src) temp_windoor.open() + for(var/obj/machinery/door/blast/temp_blast in src) + temp_blast.open() /area/has_gravity() return has_gravity @@ -398,7 +393,7 @@ var/list/mob/living/forced_ambiance_list = new var/list/teleportlocs = list() /hook/startup/proc/setupTeleportLocs() - for(var/area/AR in all_areas) + for(var/area/AR in world) if(istype(AR, /area/shuttle) || istype(AR, /area/syndicate_station) || istype(AR, /area/wizard_station)) continue if(teleportlocs.Find(AR.name)) continue var/turf/picked = pick(get_area_turfs(AR.type)) @@ -413,7 +408,7 @@ var/list/teleportlocs = list() var/list/ghostteleportlocs = list() /hook/startup/proc/setupGhostTeleportLocs() - for(var/area/AR in all_areas) + for(var/area/AR in world) if(ghostteleportlocs.Find(AR.name)) continue if(istype(AR, /area/aisat) || istype(AR, /area/derelict) || istype(AR, /area/tdome) || istype(AR, /area/shuttle/specops/centcom)) ghostteleportlocs += AR.name diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 35ff527da48..26d8506bf95 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -185,6 +185,12 @@ to_chat(user, "[bicon(src)] That's [f_name] [suffix]") to_chat(user,desc) + if(user.client?.examine_text_mode == EXAMINE_MODE_INCLUDE_USAGE) + to_chat(user, description_info) + + if(user.client?.examine_text_mode == EXAMINE_MODE_SWITCH_TO_PANEL) + user.client.statpanel = "Examine" // Switch to stat panel + return distance == -1 || (get_dist(src, user) <= distance) // called by mobs when e.g. having the atom as their machine, pulledby, loc (AKA mob being inside the atom) or buckled var set. @@ -197,6 +203,20 @@ . = new_dir != dir dir = new_dir +// Called to set the atom's density and used to add behavior to density changes. +/atom/proc/set_density(var/new_density) + if(density == new_density) + return FALSE + density = !!new_density // Sanitize to be strictly 0 or 1 + return TRUE + +// Called to set the atom's invisibility and usd to add behavior to invisibility changes. +/atom/proc/set_invisibility(var/new_invisibility) + if(invisibility == new_invisibility) + return FALSE + invisibility = new_invisibility + return TRUE + /atom/proc/ex_act() return diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 846eb269610..fa0c99dcb64 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -538,7 +538,8 @@ cloak_animation(animation_time) //Needs to be last so people can actually see the effect before we become invisible - plane = CLOAKED_PLANE + if(cloaked) // Ensure we are still cloaked after the animation delay + plane = CLOAKED_PLANE /atom/movable/proc/uncloak() if(!cloaked) @@ -573,7 +574,7 @@ sleep(length+5) //Remove those - filters -= filters[our_filter] + filters -= filter(type="wave", x = 0, y = 16, size = 8, offset = 1, flags = WAVE_SIDEWAYS) //Back to original alpha alpha = initial_alpha @@ -597,7 +598,7 @@ sleep(length+5) //Remove those - filters -= filters[our_filter] + filters -= filter(type="wave", x=0, y = 16, size = 0, offset = 0, flags = WAVE_SIDEWAYS) // So cloaked things can see themselves, if necessary diff --git a/code/game/gamemodes/cult/hell_universe.dm b/code/game/gamemodes/cult/hell_universe.dm index 27dd86df135..f67f6892889 100644 --- a/code/game/gamemodes/cult/hell_universe.dm +++ b/code/game/gamemodes/cult/hell_universe.dm @@ -54,7 +54,7 @@ In short: /datum/universal_state/hell/proc/AreaSet() - for(var/area/A in all_areas) + for(var/area/A in world) if(!istype(A,/area) || istype(A, /area/space)) continue diff --git a/code/game/gamemodes/endgame/supermatter_cascade/universe.dm b/code/game/gamemodes/endgame/supermatter_cascade/universe.dm index 8f4f861b425..f8a85810758 100644 --- a/code/game/gamemodes/endgame/supermatter_cascade/universe.dm +++ b/code/game/gamemodes/endgame/supermatter_cascade/universe.dm @@ -84,7 +84,7 @@ The access requirements on the Asteroid Shuttles' consoles have now been revoked return /datum/universal_state/supermatter_cascade/proc/AreaSet() - for(var/area/A in all_areas) + for(var/area/A in world) if(!istype(A,/area) || istype(A, /area/space) || istype(A,/area/beach)) continue diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index 8c5b58cfbab..1cb4e8a2dc6 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -169,7 +169,7 @@ var/hadevent = 0 var/list/area/areas = list() - for(var/area/A in all_areas) + for(var/area/A in world) if(istype(A, /area/security/prison) || istype(A, /area/security/brig)) areas += A diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm deleted file mode 100644 index bf05da7a3bb..00000000000 --- a/code/game/gamemodes/gameticker.dm +++ /dev/null @@ -1,467 +0,0 @@ -var/global/datum/controller/gameticker/ticker - -/datum/controller/gameticker - var/const/restart_timeout = 3 MINUTES //One minute is 600. - var/current_state = GAME_STATE_PREGAME - - var/hide_mode = 0 - var/datum/game_mode/mode = null - var/post_game = 0 - var/event_time = null - var/event = 0 - - // var/login_music // music played in pregame lobby // VOREStation Edit - We do music differently - - var/list/datum/mind/minds = list()//The people in the game. Used for objective tracking. - - var/Bible_icon_state // icon_state the chaplain has chosen for his bible - var/Bible_item_state // item_state the chaplain has chosen for his bible - var/Bible_name // name of the bible - var/Bible_deity_name - - var/random_players = 0 // if set to nonzero, ALL players who latejoin or declare-ready join will have random appearances/genders - - var/list/syndicate_coalition = list() // list of traitor-compatible factions - var/list/factions = list() // list of all factions - var/list/availablefactions = list() // list of factions with openings - - var/pregame_timeleft = 0 - - var/delay_end = 0 //if set to nonzero, the round will not restart on it's own - - var/triai = 0//Global holder for Triumvirate - - var/round_end_announced = 0 // Spam Prevention. Announce round end only once. - -/datum/controller/gameticker/proc/pregame() - /* VOREStation Edit - We do music differently - login_music = pick(\ - 'sound/music/halloween/skeletons.ogg',\ - 'sound/music/halloween/halloween.ogg',\ - 'sound/music/halloween/ghosts.ogg' - 'sound/music/space.ogg',\ - 'sound/music/traitor.ogg',\ - 'sound/music/title2.ogg',\ - 'sound/music/clouds.s3m',\ - 'sound/music/space_oddity.ogg') //Ground Control to Major Tom, this song is cool, what's going on? - */ //VOREStation Edit End - - send2mainirc("Server lobby is loaded and open at byond://[config.serverurl ? config.serverurl : (config.server ? config.server : "[world.address]:[world.port]")]") - - - do - pregame_timeleft = config.pregame_time - to_chat(world, "Welcome to the pregame lobby!") - to_chat(world, "Please set up your character and select ready. The round will start in [pregame_timeleft] seconds.") - while(current_state == GAME_STATE_PREGAME) - if(round_progressing) - pregame_timeleft-- - if(pregame_timeleft == config.vote_autogamemode_timeleft) - if(!SSvote.time_remaining) - SSvote.autogamemode() //Quit calling this over and over and over and over. - while(SSvote.time_remaining) - sleep(1) - if(pregame_timeleft <= 0) - current_state = GAME_STATE_SETTING_UP - Master.SetRunLevel(RUNLEVEL_SETUP) - sleep(10) - while (!setup()) - - -/datum/controller/gameticker/proc/setup() - //Create and announce mode - if(master_mode=="secret") - src.hide_mode = 1 - - var/list/runnable_modes = config.get_runnable_modes() - if((master_mode=="random") || (master_mode=="secret")) - if(!runnable_modes.len) - current_state = GAME_STATE_PREGAME - Master.SetRunLevel(RUNLEVEL_LOBBY) - to_chat(world, "Unable to choose playable game mode. Reverting to pregame lobby.") - return 0 - if(secret_force_mode != "secret") - src.mode = config.pick_mode(secret_force_mode) - if(!src.mode) - var/list/weighted_modes = list() - for(var/datum/game_mode/GM in runnable_modes) - weighted_modes[GM.config_tag] = config.probabilities[GM.config_tag] - src.mode = gamemode_cache[pickweight(weighted_modes)] - else - src.mode = config.pick_mode(master_mode) - - if(!src.mode) - current_state = GAME_STATE_PREGAME - Master.SetRunLevel(RUNLEVEL_LOBBY) - to_chat(world, "Serious error in mode setup! Reverting to pregame lobby.") //Uses setup instead of set up due to computational context. - return 0 - - job_master.ResetOccupations() - src.mode.create_antagonists() - src.mode.pre_setup() - job_master.DivideOccupations() // Apparently important for new antagonist system to register specific job antags properly. - - if(!src.mode.can_start()) - to_world("Unable to start [mode.name]. Not enough players readied, [config.player_requirements[mode.config_tag]] players needed. Reverting to pregame lobby.") - current_state = GAME_STATE_PREGAME - Master.SetRunLevel(RUNLEVEL_LOBBY) - mode.fail_setup() - mode = null - job_master.ResetOccupations() - return 0 - - if(hide_mode) - to_world("The current game mode is - Secret!") - if(runnable_modes.len) - var/list/tmpmodes = new - for (var/datum/game_mode/M in runnable_modes) - tmpmodes+=M.name - tmpmodes = sortList(tmpmodes) - if(tmpmodes.len) - to_chat(world, "Possibilities: [english_list(tmpmodes, and_text= "; ", comma_text = "; ")]") - else - src.mode.announce() - - setup_economy() - current_state = GAME_STATE_PLAYING - create_characters() //Create player characters and transfer them. - collect_minds() - equip_characters() - //data_core.manifest() //VOREStation Removal - - callHook("roundstart") - - // TODO - Leshana - Dear God Fix This. Fix all of this. Not just this line, this entire proc. This entire file! - spawn(0)//Forking here so we dont have to wait for this to finish - mode.post_setup() - //Cleanup some stuff - for(var/obj/effect/landmark/start/S in landmarks_list) - //Deleting Startpoints but we need the ai point to AI-ize people later - if (S.name != "AI") - qdel(S) - to_chat(world, "Enjoy the game!") - world << sound('sound/AI/welcome.ogg') // Skie - //Holiday Round-start stuff ~Carn - Holiday_Game_Start() - - //start_events() //handles random events and space dust. - //new random event system is handled from the MC. - - var/admins_number = 0 - for(var/client/C) - if(C.holder) - admins_number++ - if(admins_number == 0) - send2adminirc("A round has started with no admins online.") - -/* supply_controller.process() //Start the supply shuttle regenerating points -- TLE // handled in scheduler - master_controller.process() //Start master_controller.process() - lighting_controller.process() //Start processing DynamicAreaLighting updates - */ - - processScheduler.start() - Master.SetRunLevel(RUNLEVEL_GAME) - - if(config.sql_enabled) - statistic_cycle() // Polls population totals regularly and stores them in an SQL DB -- TLE - - return 1 - -/datum/controller/gameticker - //station_explosion used to be a variable for every mob's hud. Which was a waste! - //Now we have a general cinematic centrally held within the gameticker....far more efficient! - var/obj/screen/cinematic = null - - //Plus it provides an easy way to make cinematics for other events. Just use this as a template :) - proc/station_explosion_cinematic(var/station_missed=0, var/override = null) - if( cinematic ) return //already a cinematic in progress! - - //initialise our cinematic screen object - cinematic = new(src) - cinematic.icon = 'icons/effects/station_explosion.dmi' - cinematic.icon_state = "station_intact" - cinematic.layer = 100 - cinematic.plane = PLANE_PLAYER_HUD - cinematic.mouse_opacity = 0 - cinematic.screen_loc = "1,0" - - var/obj/structure/bed/temp_buckle = new(src) - //Incredibly hackish. It creates a bed within the gameticker (lol) to stop mobs running around - if(station_missed) - for(var/mob/living/M in living_mob_list) - M.buckled = temp_buckle //buckles the mob so it can't do anything - if(M.client) - M.client.screen += cinematic //show every client the cinematic - else //nuke kills everyone on z-level 1 to prevent "hurr-durr I survived" - for(var/mob/living/M in living_mob_list) - M.buckled = temp_buckle - if(M.client) - M.client.screen += cinematic - - switch(M.z) - if(0) //inside a crate or something - var/turf/T = get_turf(M) - if(T && T.z in using_map.station_levels) //we don't use M.death(0) because it calls a for(/mob) loop and - M.health = 0 - M.set_stat(DEAD) - if(1) //on a z-level 1 turf. - M.health = 0 - M.set_stat(DEAD) - - //Now animate the cinematic - switch(station_missed) - if(1) //nuke was nearby but (mostly) missed - if( mode && !override ) - override = mode.name - switch( override ) - if("mercenary") //Nuke wasn't on station when it blew up - flick("intro_nuke",cinematic) - sleep(35) - world << sound('sound/effects/explosionfar.ogg') - flick("station_intact_fade_red",cinematic) - cinematic.icon_state = "summary_nukefail" - else - flick("intro_nuke",cinematic) - sleep(35) - world << sound('sound/effects/explosionfar.ogg') - //flick("end",cinematic) - - - if(2) //nuke was nowhere nearby //TODO: a really distant explosion animation - sleep(50) - world << sound('sound/effects/explosionfar.ogg') - - - else //station was destroyed - if( mode && !override ) - override = mode.name - switch( override ) - if("mercenary") //Nuke Ops successfully bombed the station - flick("intro_nuke",cinematic) - sleep(35) - flick("station_explode_fade_red",cinematic) - world << sound('sound/effects/explosionfar.ogg') - cinematic.icon_state = "summary_nukewin" - if("AI malfunction") //Malf (screen,explosion,summary) - flick("intro_malf",cinematic) - sleep(76) - flick("station_explode_fade_red",cinematic) - world << sound('sound/effects/explosionfar.ogg') - cinematic.icon_state = "summary_malf" - if("blob") //Station nuked (nuke,explosion,summary) - flick("intro_nuke",cinematic) - sleep(35) - flick("station_explode_fade_red",cinematic) - world << sound('sound/effects/explosionfar.ogg') - cinematic.icon_state = "summary_selfdes" - else //Station nuked (nuke,explosion,summary) - flick("intro_nuke",cinematic) - sleep(35) - flick("station_explode_fade_red", cinematic) - world << sound('sound/effects/explosionfar.ogg') - cinematic.icon_state = "summary_selfdes" - for(var/mob/living/M in living_mob_list) - if(M.loc.z in using_map.station_levels) - M.death()//No mercy - //If its actually the end of the round, wait for it to end. - //Otherwise if its a verb it will continue on afterwards. - sleep(300) - - if(cinematic) qdel(cinematic) //end the cinematic - if(temp_buckle) qdel(temp_buckle) //release everybody - return - - - proc/create_characters() - for(var/mob/new_player/player in player_list) - if(player && player.ready && player.mind) - if(player.mind.assigned_role=="AI") - player.close_spawn_windows() - player.AIize() - else if(!player.mind.assigned_role) - continue - else - //VOREStation Edit Start - var/mob/living/carbon/human/new_char = player.create_character() - if(new_char) - qdel(player) - if(istype(new_char) && !(new_char.mind.assigned_role=="Cyborg")) - data_core.manifest_inject(new_char) - //VOREStation Edit End - - - proc/collect_minds() - for(var/mob/living/player in player_list) - if(player.mind) - ticker.minds += player.mind - - - proc/equip_characters() - var/captainless=1 - for(var/mob/living/carbon/human/player in player_list) - if(player && player.mind && player.mind.assigned_role) - if(player.mind.assigned_role == "Colony Director") - captainless=0 - if(!player_is_antag(player.mind, only_offstation_roles = 1)) - job_master.EquipRank(player, player.mind.assigned_role, 0) - UpdateFactionList(player) - //equip_custom_items(player) //VOREStation Removal - //player.apply_traits() //VOREStation Removal - if(captainless) - for(var/mob/M in player_list) - if(!istype(M,/mob/new_player)) - to_chat(M, "Colony Directorship not forced on anyone.") - - - process() - if(current_state != GAME_STATE_PLAYING) - return 0 - - mode.process() - -// emergency_shuttle.process() //handled in scheduler - - var/game_finished = 0 - var/mode_finished = 0 - if (config.continous_rounds) - game_finished = (emergency_shuttle.returned() || mode.station_was_nuked) - mode_finished = (!post_game && mode.check_finished()) - else - game_finished = (mode.check_finished() || (emergency_shuttle.returned() && emergency_shuttle.evac == 1)) || universe_has_ended - mode_finished = game_finished - - if(!mode.explosion_in_progress && game_finished && (mode_finished || post_game)) - current_state = GAME_STATE_FINISHED - Master.SetRunLevel(RUNLEVEL_POSTGAME) - - spawn - declare_completion() - - spawn(50) - callHook("roundend") - - var/time_left - - if (mode.station_was_nuked) - feedback_set_details("end_proper","nuke") - time_left = 1 MINUTE //No point waiting five minutes if everyone's dead. - if(!delay_end) - to_chat(world, "Rebooting due to destruction of station in [round(time_left/600)] minutes.") - else - feedback_set_details("end_proper","proper completion") - time_left = round(restart_timeout) - - - if(blackbox) - blackbox.save_all_data_to_sql() - - if(!delay_end) - while(time_left > 0) - if(delay_end) - break - to_chat(world, "Restarting in [round(time_left/600)] minute\s.") - time_left -= 1 MINUTES - sleep(600) - if(!delay_end) - world.Reboot() - else - to_chat(world, "An admin has delayed the round end.") - else - to_chat(world, "An admin has delayed the round end.") - - else if (mode_finished) - post_game = 1 - - mode.cleanup() - - //call a transfer shuttle vote - spawn(50) - if(!round_end_announced) // Spam Prevention. Now it should announce only once. - to_chat(world, "The round has ended!") - round_end_announced = 1 - SSvote.autotransfer() - - return 1 - -/datum/controller/gameticker/proc/declare_completion() - to_world("


A round of [mode.name] has ended!

") - for(var/mob/Player in player_list) - if(Player.mind && !isnewplayer(Player)) - if(Player.stat != DEAD) - var/turf/playerTurf = get_turf(Player) - if(emergency_shuttle.departed && emergency_shuttle.evac) - if(isNotAdminLevel(playerTurf.z)) - to_chat(Player, "You survived the round, but remained on [station_name()] as [Player.real_name].") - else - to_chat(Player, "You managed to survive the events on [station_name()] as [Player.real_name].") - else if(isAdminLevel(playerTurf.z)) - to_chat(Player, "You successfully underwent crew transfer after events on [station_name()] as [Player.real_name].") - else if(issilicon(Player)) - to_chat(Player, "You remain operational after the events on [station_name()] as [Player.real_name].") - else - to_chat(Player, "You missed the crew transfer after the events on [station_name()] as [Player.real_name].") - else - if(istype(Player,/mob/observer/dead)) - var/mob/observer/dead/O = Player - if(!O.started_as_observer) - to_chat(Player, "You did not survive the events on [station_name()]...") - else - to_chat(Player, "You did not survive the events on [station_name()]...") - to_world("
") - - for (var/mob/living/silicon/ai/aiPlayer in mob_list) - if (aiPlayer.stat != 2) - to_world("[aiPlayer.name] (Played by: [aiPlayer.key])'s laws at the end of the round were:") - else - to_world("[aiPlayer.name] (Played by: [aiPlayer.key])'s laws when it was deactivated were:") - aiPlayer.show_laws(1) - - if (aiPlayer.connected_robots.len) - var/robolist = "The AI's loyal minions were: " - for(var/mob/living/silicon/robot/robo in aiPlayer.connected_robots) - robolist += "[robo.name][robo.stat?" (Deactivated) (Played by: [robo.key]), ":" (Played by: [robo.key]), "]" - to_world("[robolist]") - - var/dronecount = 0 - - for (var/mob/living/silicon/robot/robo in mob_list) - - if(istype(robo,/mob/living/silicon/robot/drone) && !istype(robo,/mob/living/silicon/robot/drone/swarm)) - dronecount++ - continue - - if (!robo.connected_ai) - if (robo.stat != 2) - to_world("[robo.name] (Played by: [robo.key]) survived as an AI-less stationbound synthetic! Its laws were:") - else - to_world("[robo.name] (Played by: [robo.key]) was unable to survive the rigors of being a stationbound synthetic without an AI. Its laws were:") - - if(robo) //How the hell do we lose robo between here and the world messages directly above this? - robo.laws.show_laws(world) - - if(dronecount) - to_world("There [dronecount>1 ? "were" : "was"] [dronecount] industrious maintenance [dronecount>1 ? "drones" : "drone"] at the end of this round.") - - mode.declare_completion()//To declare normal completion. - - //Ask the event manager to print round end information - SSevents.RoundEnd() - - //Print a list of antagonists to the server log - var/list/total_antagonists = list() - //Look into all mobs in world, dead or alive - for(var/datum/mind/Mind in minds) - var/temprole = Mind.special_role - if(temprole) //if they are an antagonist of some sort. - if(temprole in total_antagonists) //If the role exists already, add the name to it - total_antagonists[temprole] += ", [Mind.name]([Mind.key])" - else - total_antagonists.Add(temprole) //If the role doesnt exist in the list, create it and add the mob - total_antagonists[temprole] += ": [Mind.name]([Mind.key])" - - //Now print them all into the log! - log_game("Antagonists at round end were...") - for(var/i in total_antagonists) - log_game("[i]s[total_antagonists[i]].") - - return 1 diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index c49a4d693b8..de4bf442afc 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -183,6 +183,8 @@ var/turf/simulated/wall/W = T W.take_damage(wall_power) // Stronger walls can halt asteroids. +/obj/effect/meteor/proc/get_shield_damage() + return max(((max(hits, 2)) * (heavy + 1) * rand(6, 12)) / hitpwr , 0) //process getting 'hit' by colliding with a dense object //or randomly when ramming turfs @@ -307,6 +309,9 @@ // Worst case scenario: Comparable to a standard yield EMP grenade. empulse(src, rand(1, 3), rand(2, 4), rand(3, 7), rand(5, 10)) +/obj/effect/meteor/emp/get_shield_damage() + return ..() * rand(2,4) + //Station buster Tunguska /obj/effect/meteor/tunguska name = "tunguska meteor" diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm index a38ccf59ca4..b2bd6b80e48 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/game/gamemodes/nuclear/pinpointer.dm @@ -12,45 +12,51 @@ var/obj/item/weapon/disk/nuclear/the_disk = null var/active = 0 - - attack_self() - if(!active) - active = 1 - workdisk() - to_chat(usr, "You activate the pinpointer") - else - active = 0 - icon_state = "pinoff" - to_chat(usr, "You deactivate the pinpointer") - - proc/workdisk() - if(!active) return - if(!the_disk) - the_disk = locate() - if(!the_disk) - icon_state = "pinonnull" - return - set_dir(get_dir(src,the_disk)) - switch(get_dist(src,the_disk)) - if(0) - icon_state = "pinondirect" - if(1 to 8) - icon_state = "pinonclose" - if(9 to 16) - icon_state = "pinonmedium" - if(16 to INFINITY) - icon_state = "pinonfar" - spawn(5) .() - - examine(mob/user) - ..(user) - for(var/obj/machinery/nuclearbomb/bomb in machines) - if(bomb.timing) - to_chat(user, "Extreme danger. Arming signal detected. Time remaining: [bomb.timeleft]") - /obj/item/weapon/pinpointer/Destroy() active = 0 - ..() + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/item/weapon/pinpointer/attack_self() + if(!active) + active = 1 + START_PROCESSING(SSobj, src) + to_chat(usr, "You activate the pinpointer") + else + active = 0 + STOP_PROCESSING(SSobj, src) + icon_state = "pinoff" + to_chat(usr, "You deactivate the pinpointer") + +/obj/item/weapon/pinpointer/process() + if(!active) + return PROCESS_KILL + + if(!the_disk) + the_disk = locate() + if(!the_disk) + icon_state = "pinonnull" + return + + set_dir(get_dir(src,the_disk)) + + switch(get_dist(src,the_disk)) + if(0) + icon_state = "pinondirect" + if(1 to 8) + icon_state = "pinonclose" + if(9 to 16) + icon_state = "pinonmedium" + if(16 to INFINITY) + icon_state = "pinonfar" + +/obj/item/weapon/pinpointer/examine(mob/user) + ..(user) + for(var/obj/machinery/nuclearbomb/bomb in machines) + if(bomb.timing) + to_chat(user, "Extreme danger. Arming signal detected. Time remaining: [bomb.timeleft]") + + /obj/item/weapon/pinpointer/advpinpointer name = "Advanced Pinpointer" @@ -60,58 +66,49 @@ var/turf/location = null var/obj/target = null - attack_self() - if(!active) - active = 1 - if(mode == 0) - workdisk() - if(mode == 1) - worklocation() - if(mode == 2) - workobj() - to_chat(usr, "You activate the pinpointer") - else - active = 0 - icon_state = "pinoff" - to_chat(usr, "You deactivate the pinpointer") +/obj/item/weapon/pinpointer/advpinpointer/process() + if(!active) + return PROCESS_KILL + if(mode == 0) + ..() + if(mode == 1) + worklocation() + if(mode == 2) + workobj() +/obj/item/weapon/pinpointer/advpinpointer/proc/worklocation() + if(!location) + icon_state = "pinonnull" + return - proc/worklocation() - if(!active) - return - if(!location) - icon_state = "pinonnull" - return - set_dir(get_dir(src,location)) - switch(get_dist(src,location)) - if(0) - icon_state = "pinondirect" - if(1 to 8) - icon_state = "pinonclose" - if(9 to 16) - icon_state = "pinonmedium" - if(16 to INFINITY) - icon_state = "pinonfar" - spawn(5) .() + set_dir(get_dir(src,location)) + switch(get_dist(src,location)) + if(0) + icon_state = "pinondirect" + if(1 to 8) + icon_state = "pinonclose" + if(9 to 16) + icon_state = "pinonmedium" + if(16 to INFINITY) + icon_state = "pinonfar" - proc/workobj() - if(!active) - return - if(!target) - icon_state = "pinonnull" - return - set_dir(get_dir(src,target)) - switch(get_dist(src,target)) - if(0) - icon_state = "pinondirect" - if(1 to 8) - icon_state = "pinonclose" - if(9 to 16) - icon_state = "pinonmedium" - if(16 to INFINITY) - icon_state = "pinonfar" - spawn(5) .() +/obj/item/weapon/pinpointer/advpinpointer/proc/workobj() + if(!target) + icon_state = "pinonnull" + return + + set_dir(get_dir(src,target)) + + switch(get_dist(src,target)) + if(0) + icon_state = "pinondirect" + if(1 to 8) + icon_state = "pinonclose" + if(9 to 16) + icon_state = "pinonmedium" + if(16 to INFINITY) + icon_state = "pinonfar" /obj/item/weapon/pinpointer/advpinpointer/verb/toggle_mode() set category = "Object" @@ -140,7 +137,6 @@ to_chat(usr, "You set the pinpointer to locate [locationx],[locationy]") - return attack_self() if("Disk Recovery") @@ -150,9 +146,10 @@ if("Other Signature") mode = 2 switch(alert("Search for item signature or DNA fragment?" , "Signature Mode Select" , "" , "Item" , "DNA")) + if("Item") var/datum/objective/steal/itemlist - itemlist = itemlist // To supress a 'variable defined but not used' error. + itemlist = itemlist var/targetitem = input("Select item to search for.", "Item Mode Select","") as null|anything in itemlist.possible_items if(!targetitem) return @@ -161,6 +158,7 @@ to_chat(usr, "Failed to locate [targetitem]!") return to_chat(usr, "You set the pinpointer to locate [targetitem]") + if("DNA") var/DNAstring = input("Input DNA string to search for." , "Please Enter String." , "") if(!DNAstring) @@ -187,6 +185,7 @@ /obj/item/weapon/pinpointer/nukeop/attack_self(mob/user as mob) if(!active) active = 1 + START_PROCESSING(SSobj, src) if(!mode) workdisk() to_chat(user, "Authentication Disk Locator active.") @@ -195,30 +194,35 @@ to_chat(user, "Shuttle Locator active.") else active = 0 + STOP_PROCESSING(SSobj, src) icon_state = "pinoff" to_chat(user, "You deactivate the pinpointer.") +/obj/item/weapon/pinpointer/nukeop/process() + if(!active) + return PROCESS_KILL -/obj/item/weapon/pinpointer/nukeop/workdisk() - if(!active) return - if(mode) //Check in case the mode changes while operating - worklocation() - return + switch(mode) + if(0) + workdisk() + if(1) + worklocation() + +/obj/item/weapon/pinpointer/nukeop/proc/workdisk() if(bomb_set) //If the bomb is set, lead to the shuttle mode = 1 //Ensures worklocation() continues to work - worklocation() playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) //Plays a beep - visible_message("Shuttle Locator active.") //Lets the mob holding it know that the mode has changed + visible_message("Shuttle Locator active.") //Lets the mob holding it know that the mode has changed return //Get outta here + if(!the_disk) the_disk = locate() if(!the_disk) icon_state = "pinonnull" return -// if(loc.z != the_disk.z) //If you are on a different z-level from the disk -// icon_state = "pinonnull" -// else + set_dir(get_dir(src, the_disk)) + switch(get_dist(src, the_disk)) if(0) icon_state = "pinondirect" @@ -229,29 +233,25 @@ if(16 to INFINITY) icon_state = "pinonfar" - spawn(5) .() - - /obj/item/weapon/pinpointer/nukeop/proc/worklocation() - if(!active) return - if(!mode) - workdisk() - return if(!bomb_set) mode = 0 - workdisk() playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) visible_message("Authentication Disk Locator active.") return + if(!home) home = locate() if(!home) icon_state = "pinonnull" return + if(loc.z != home.z) //If you are on a different z-level from the shuttle icon_state = "pinonnull" + else set_dir(get_dir(src, home)) + switch(get_dist(src, home)) if(0) icon_state = "pinondirect" @@ -262,8 +262,6 @@ if(16 to INFINITY) icon_state = "pinonfar" - spawn(5) .() - // This one only points to the ship. Useful if there is no nuking to occur today. /obj/item/weapon/pinpointer/shuttle @@ -273,16 +271,17 @@ /obj/item/weapon/pinpointer/shuttle/attack_self(mob/user as mob) if(!active) active = TRUE - find_shuttle() + START_PROCESSING(SSobj, src) to_chat(user, "Shuttle Locator active.") else active = FALSE + STOP_PROCESSING(SSobj, src) icon_state = "pinoff" to_chat(user, "You deactivate the pinpointer.") -/obj/item/weapon/pinpointer/shuttle/proc/find_shuttle() +/obj/item/weapon/pinpointer/shuttle/process() if(!active) - return + return PROCESS_KILL if(!our_shuttle) for(var/obj/machinery/computer/shuttle_control/S in machines) @@ -296,8 +295,10 @@ if(loc.z != our_shuttle.z) //If you are on a different z-level from the shuttle icon_state = "pinonnull" + else set_dir(get_dir(src, our_shuttle)) + switch(get_dist(src, our_shuttle)) if(0) icon_state = "pinondirect" @@ -308,9 +309,6 @@ if(16 to INFINITY) icon_state = "pinonfar" - spawn(5) - .() - /obj/item/weapon/pinpointer/shuttle/merc shuttle_comp_id = "Mercenary" diff --git a/code/game/gamemodes/technomancer/catalog.dm b/code/game/gamemodes/technomancer/catalog.dm index f86f89779b1..7d0ddc6c2ef 100644 --- a/code/game/gamemodes/technomancer/catalog.dm +++ b/code/game/gamemodes/technomancer/catalog.dm @@ -25,7 +25,7 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) - /obj/item/weapon/technomancer_catalog name = "catalog" desc = "A \"book\" featuring a holographic display, metal cover, and miniaturized teleportation device, allowing the user to \ - requisition various things from.. where ever they came from." + requisition various things from... wherever they came from." icon = 'icons/obj/storage.dmi' icon_state ="scientology" //placeholder w_class = ITEMSIZE_SMALL @@ -40,6 +40,7 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) - var/tab = 4 // Info tab, so new players can read it before doing anything. var/spell_tab = ALL_SPELLS var/show_scepter_text = 0 + var/universal = FALSE //VOREStation Add - Allows non-technomancers to use this catalog /obj/item/weapon/technomancer_catalog/apprentice name = "apprentice's catalog" @@ -51,12 +52,22 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) - budget = 2000 max_budget = 2000 +//VOREStation Add +/obj/item/weapon/technomancer_catalog/universal + name = "universal catalog" + desc = "A catalog to be used with the KHI 'Universal Core', shamelessly \ + copied by a Kitsuhana designer from some group of 'technomancers' or another.
\ + The back of the book has 'Export Edition' stamped on it." + budget = 700 + max_budget = 700 + universal = TRUE +//VOREStation Add End // Proc: bind_to_owner() // Parameters: 1 (new_owner - mob that the book is trying to bind to) // Description: Links the catalog to hopefully the technomancer, so that only they can access it. /obj/item/weapon/technomancer_catalog/proc/bind_to_owner(var/mob/living/carbon/human/new_owner) - if(!owner && technomancers.is_antagonist(new_owner.mind)) + if(!owner && (technomancers.is_antagonist(new_owner.mind) || universal)) //VOREStation Edit - Universal catalogs owner = new_owner // Proc: New() diff --git a/code/game/gamemodes/technomancer/core_obj.dm b/code/game/gamemodes/technomancer/core_obj.dm index e5a2c5902dc..42fb58e6625 100644 --- a/code/game/gamemodes/technomancer/core_obj.dm +++ b/code/game/gamemodes/technomancer/core_obj.dm @@ -35,6 +35,7 @@ var/list/summoned_mobs = list() // Maintained horribly with maintain_summon_list(). var/list/wards_in_use = list() // Wards don't count against the cap for other summons. var/max_summons = 10 // Maximum allowed summoned entities. Some cores will have different caps. + var/universal = FALSE // Allows non-technomancers to use the core - VOREStation Add /obj/item/weapon/technomancer_core/New() ..() @@ -88,7 +89,7 @@ if(world.time % 5 == 0) // Maintaining fat lists is expensive, I imagine. maintain_summon_list() if(wearer && wearer.mind) - if(!(technomancers.is_antagonist(wearer.mind))) // In case someone tries to wear a stolen core. + if(!(technomancers.is_antagonist(wearer.mind)) && !universal) // In case someone tries to wear a stolen core. //VOREStation Edit - Add universal cores wearer.adjust_instability(20) if(!wearer || wearer.stat == DEAD) // Unlock if we're dead or not worn. canremove = TRUE @@ -349,4 +350,19 @@ set desc = "Toggles the locking mechanism on your manipulation core." canremove = !canremove - to_chat(usr, "You [canremove ? "de" : ""]activate the locking mechanism on \the [src].") \ No newline at end of file + to_chat(usr, "You [canremove ? "de" : ""]activate the locking mechanism on \the [src].") + +//For the adminbuse! VOREStation Add +/obj/item/weapon/technomancer_core/universal + name = "universal core" + desc = "A bewilderingly complex 'black box' that allows the wearer to accomplish amazing feats. \ + This one is a copy of a 'technomancer' core, shamelessly ripped off by a Kitsuhana pattern designer \ + for fun, so that he could perform impressive 'magic'. The pack sloshes slightly if you shake it.
\ + Under the straps, 'Export Edition' is printed." + energy = 7000 + max_energy = 7000 + regen_rate = 30 //233 seconds to full + instability_modifier = 0.3 + spell_power_modifier = 0.7 + universal = TRUE +//VOREStation Add End \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spell_objs.dm b/code/game/gamemodes/technomancer/spell_objs.dm index 6d55f80cb4c..2c80ac39fd9 100644 --- a/code/game/gamemodes/technomancer/spell_objs.dm +++ b/code/game/gamemodes/technomancer/spell_objs.dm @@ -188,7 +188,7 @@ if(core.loc != owner || owner.back != core) //Make sure the core's being worn. to_chat(owner, "You need to be wearing a core on your back!") return 0 - if(!technomancers.is_antagonist(owner.mind)) //Now make sure the person using this is the actual antag. + if(!technomancers.is_antagonist(owner.mind) && !core.universal) //Now make sure the person using this is the actual antag. //VOREStation Edit - Universal cores to_chat(owner, "You can't seem to figure out how to make the machine work properly.") return 0 return 1 diff --git a/code/game/gamemodes/technomancer/spells/mark_recall.dm b/code/game/gamemodes/technomancer/spells/mark_recall.dm index b082a33e3de..0d35bce53a1 100644 --- a/code/game/gamemodes/technomancer/spells/mark_recall.dm +++ b/code/game/gamemodes/technomancer/spells/mark_recall.dm @@ -8,16 +8,30 @@ ability_icon_state = "tech_mark" category = UTILITY_SPELLS -//The object to teleport to when Recall is used. -/obj/effect/mark_spell - name = "mark" - desc = "This is a strange looking disturbance." - opacity = 0 - density = 0 - anchored = 1 +/datum/technomancer_marker + var/weakref/U + var/image/I + var/turf/T + +/datum/technomancer_marker/New(var/mob/user) + U = weakref(user) + T = get_turf(user) + I = image('icons/goonstation/featherzone.dmi', T, "spawn-wall") + I.plane = TURF_PLANE + I.layer = ABOVE_TURF_LAYER + user.client?.images |= I + spawn(23) //That's just how long the animation is + I.icon_state = "spawn-wall-loop" + +/datum/technomancer_marker/Destroy() + var/mob/user = U?.resolve() + user?.client?.images -= I + I?.loc = null + U = T = I = null + return ..() //This is global, to avoid looping through a list of all objects, or god forbid, looping through world. -/var/global/obj/effect/mark_spell/mark_spell_ref = null +GLOBAL_LIST_INIT(mark_spells, list()) /obj/item/weapon/spell/mark name = "mark" @@ -26,17 +40,20 @@ cast_methods = CAST_USE aspect = ASPECT_TELE -/obj/item/weapon/spell/mark/on_use_cast(mob/living/user) +/obj/item/weapon/spell/mark/on_use_cast(var/mob/living/user) if(!allowed_to_teleport()) // Otherwise you could teleport back to the admin Z-level. to_chat(user, "You can't teleport here!") return 0 if(pay_energy(1000)) - if(!mark_spell_ref) - mark_spell_ref = new(get_turf(user)) - to_chat(user, "You mark \the [get_turf(user)] under you.") - else - mark_spell_ref.forceMove(get_turf(user)) + var/datum/technomancer_marker/marker = GLOB.mark_spells[weakref(user)] + //They have one in the list + if(istype(marker)) + qdel(marker) to_chat(user, "Your mark is moved from its old position to \the [get_turf(user)] under you.") + //They don't have one yet + else + to_chat(user, "You mark \the [get_turf(user)] under you.") + GLOB.mark_spells[weakref(user)] = new /datum/technomancer_marker(user) adjust_instability(5) return 1 else @@ -62,9 +79,10 @@ cast_methods = CAST_USE aspect = ASPECT_TELE -/obj/item/weapon/spell/recall/on_use_cast(mob/living/user) +/obj/item/weapon/spell/recall/on_use_cast(var/mob/living/user) if(pay_energy(3000)) - if(!mark_spell_ref) + var/datum/technomancer_marker/marker = GLOB.mark_spells[weakref(user)] + if(!istype(marker)) to_chat(user, "There's no Mark!") return 0 else @@ -86,7 +104,7 @@ time_left-- sleep(1 SECOND) - var/turf/target_turf = get_turf(mark_spell_ref) + var/turf/target_turf = marker.T var/turf/old_turf = get_turf(user) for(var/obj/item/weapon/grab/G in user.contents) // People the Technomancer is grabbing come along for the ride. diff --git a/code/game/jobs/access_datum_vr.dm b/code/game/jobs/access_datum_vr.dm index 872db2ae73f..506666fdfd8 100644 --- a/code/game/jobs/access_datum_vr.dm +++ b/code/game/jobs/access_datum_vr.dm @@ -10,3 +10,10 @@ var/const/access_pilot = 67 id = access_pilot desc = "Pilot" region = ACCESS_REGION_SUPPLY + +/var/const/access_talon = 301 +/datum/access/talon + id = access_talon + desc = "Talon" + access_type = ACCESS_TYPE_PRIVATE + \ No newline at end of file diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index 6bc533370a6..082753d0fca 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -30,6 +30,8 @@ var/outfit_type // What outfit datum does this job use in its default title? + var/offmap_spawn = FALSE // Do we require weird and special spawning and datacore handling? + // Description of the job's role and minimum responsibilities. var/job_description = "This Job doesn't have a description! Please report it!" @@ -67,7 +69,7 @@ //give them an account in the station database var/money_amount = (rand(15,40) + rand(15,40)) * income * economic_modifier * ECO_MODIFIER //VOREStation Edit - Smoothed peaks, ECO_MODIFIER rather than per-species ones. - var/datum/money_account/M = create_account(H.real_name, money_amount, null) + var/datum/money_account/M = create_account(H.real_name, money_amount, null, offmap_spawn) if(H.mind) var/remembered_info = "" remembered_info += "Your account number is: #[M.account_number]
" diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 3d6fa2045cf..34e75f43205 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -357,7 +357,11 @@ var/global/datum/controller/occupations/job_master else var/list/spawn_props = LateSpawn(H.client, rank) var/turf/T = spawn_props["turf"] - H.forceMove(T) + if(!T) + to_chat(H, "You were unable to be spawned at your chosen late-join spawnpoint. Please verify your job/spawn point combination makes sense, and try another one.") + return + else + H.forceMove(T) // Moving wheelchair if they have one if(H.buckled && istype(H.buckled, /obj/structure/bed/chair/wheelchair)) @@ -458,8 +462,8 @@ var/global/datum/controller/occupations/job_master if("AI") return H if("Colony Director") - var/sound/announce_sound = (ticker.current_state <= GAME_STATE_SETTING_UP)? null : sound('sound/misc/boatswain.ogg', volume=20) - captain_announcement.Announce("All hands, [alt_title ? alt_title : "Colony Director"] [H.real_name] on deck!", new_sound=announce_sound) + var/sound/announce_sound = (ticker.current_state <= GAME_STATE_SETTING_UP) ? null : sound('sound/misc/boatswain.ogg', volume=20) + captain_announcement.Announce("All hands, [alt_title ? alt_title : "Colony Director"] [H.real_name] on deck!", new_sound = announce_sound, zlevel = H.z) //Deferred item spawning. if(spawn_in_storage && spawn_in_storage.len) @@ -608,12 +612,20 @@ var/global/datum/controller/occupations/job_master /datum/controller/occupations/proc/LateSpawn(var/client/C, var/rank) var/datum/spawnpoint/spawnpos + var/fail_deadly = FALSE + + var/datum/job/J = SSjob.get_job(rank) + fail_deadly = J?.offmap_spawn //Spawn them at their preferred one if(C && C.prefs.spawnpoint) if(!(C.prefs.spawnpoint in using_map.allowed_spawns)) - to_chat(C, "Your chosen spawnpoint ([C.prefs.spawnpoint]) is unavailable for the current map. Spawning you at one of the enabled spawn points instead.") - spawnpos = null + if(fail_deadly) + to_chat(C, "Your chosen spawnpoint is unavailable for this map and your job requires a specific spawnpoint. Please correct your spawn point choice.") + return + else + to_chat(C, "Your chosen spawnpoint ([C.prefs.spawnpoint]) is unavailable for the current map. Spawning you at one of the enabled spawn points instead.") + spawnpos = null else spawnpos = spawntypes[C.prefs.spawnpoint] @@ -623,12 +635,16 @@ var/global/datum/controller/occupations/job_master if(spawnpos.check_job_spawning(rank)) .["turf"] = spawnpos.get_spawn_position() .["msg"] = spawnpos.msg + .["channel"] = spawnpos.announce_channel else + if(fail_deadly) + to_chat(C, "Your chosen spawnpoint ([spawnpos.display_name]) is unavailable for your chosen job. Please correct your spawn point choice.") + return to_chat(C, "Your chosen spawnpoint ([spawnpos.display_name]) is unavailable for your chosen job. Spawning you at the Arrivals shuttle instead.") var/spawning = pick(latejoin) .["turf"] = get_turf(spawning) .["msg"] = "will arrive at the station shortly" //VOREStation Edit - Grammar but mostly 'shuttle' reference removal, and this also applies to notified spawn-character verb use - else + else if(!fail_deadly) var/spawning = pick(latejoin) .["turf"] = get_turf(spawning) .["msg"] = "has arrived on the station" diff --git a/code/game/jobs/jobs.dm b/code/game/jobs/jobs.dm index e83943a8b51..31450ad2b77 100644 --- a/code/game/jobs/jobs.dm +++ b/code/game/jobs/jobs.dm @@ -45,6 +45,16 @@ var/const/BRIDGE =(1<<12) var/const/CLOWN =(1<<13) //VOREStation Add var/const/MIME =(1<<14) //VOREStation Add +//VOREStation Add +var/const/TALON =(1<<3) + +var/const/TALCAP =(1<<0) +var/const/TALPIL =(1<<1) +var/const/TALDOC =(1<<2) +var/const/TALSEC =(1<<3) +var/const/TALENG =(1<<4) +//VOREStation Add End + /proc/guest_jobbans(var/job) return ( (job in SSjob.get_job_titles_in_department(DEPARTMENT_COMMAND)) || (job in SSjob.get_job_titles_in_department(DEPARTMENT_SYNTHETIC)) || (job in SSjob.get_job_titles_in_department(DEPARTMENT_SECURITY)) ) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 9a17d314477..e1c368a1c90 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -254,8 +254,6 @@ return if(occupant) occupant.Stasis(stasis_level) - if(stasis_level >= 100 && occupant.timeofdeath) - occupant.timeofdeath += 1 SECOND if(filtering > 0) if(beaker) diff --git a/code/game/machinery/air_alarm.dm b/code/game/machinery/air_alarm.dm index 5a7131dae97..65b536c0bab 100644 --- a/code/game/machinery/air_alarm.dm +++ b/code/game/machinery/air_alarm.dm @@ -116,7 +116,7 @@ /obj/machinery/alarm/proc/first_run() alarm_area = get_area(src) - area_uid = alarm_area.uid + area_uid = "\ref[alarm_area]" if(name == "alarm") name = "[alarm_area.name] Air Alarm" @@ -387,7 +387,7 @@ return 0 var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal + signal.transmission_method = TRANSMISSION_RADIO //radio signal signal.source = src signal.data = command @@ -449,7 +449,7 @@ var/datum/signal/alert_signal = new alert_signal.source = src - alert_signal.transmission_method = 1 + alert_signal.transmission_method = TRANSMISSION_RADIO alert_signal.data["zone"] = alarm_area.name alert_signal.data["type"] = "Atmospheric" diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index ccab21e8896..5ebcfeef430 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -29,7 +29,7 @@ /obj/machinery/air_sensor/process() if(on) var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal + signal.transmission_method = TRANSMISSION_RADIO //radio signal signal.data["tag"] = id_tag signal.data["timestamp"] = world.time @@ -212,7 +212,7 @@ obj/machinery/computer/general_air_control/Destroy() if(!radio_connection) return 0 var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal + signal.transmission_method = TRANSMISSION_RADIO //radio signal signal.source = src if(href_list["in_refresh_status"]) input_info = null @@ -322,7 +322,7 @@ obj/machinery/computer/general_air_control/Destroy() if(!radio_connection) return 0 var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal + signal.transmission_method = TRANSMISSION_RADIO //radio signal signal.source = src if(href_list["in_refresh_status"]) input_info = null @@ -383,7 +383,7 @@ obj/machinery/computer/general_air_control/Destroy() injecting = 1 var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal + signal.transmission_method = TRANSMISSION_RADIO //radio signal signal.source = src signal.data = list( @@ -445,7 +445,7 @@ obj/machinery/computer/general_air_control/Destroy() return 0 var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal + signal.transmission_method = TRANSMISSION_RADIO //radio signal signal.source = src signal.data = list( "tag" = device_tag, @@ -463,7 +463,7 @@ obj/machinery/computer/general_air_control/Destroy() return 0 var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal + signal.transmission_method = TRANSMISSION_RADIO //radio signal signal.source = src signal.data = list( "tag" = device_tag, @@ -478,7 +478,7 @@ obj/machinery/computer/general_air_control/Destroy() return 0 var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal + signal.transmission_method = TRANSMISSION_RADIO //radio signal signal.source = src signal.data = list( "tag" = device_tag, diff --git a/code/game/machinery/atmoalter/meter.dm b/code/game/machinery/atmoalter/meter.dm index 13d782f18f5..3e2cf0deb44 100644 --- a/code/game/machinery/atmoalter/meter.dm +++ b/code/game/machinery/atmoalter/meter.dm @@ -67,7 +67,7 @@ var/datum/signal/signal = new signal.source = src - signal.transmission_method = 1 + signal.transmission_method = TRANSMISSION_RADIO signal.data = list( "tag" = id, "device" = "AM", diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index f20c05d6279..15f9d65bc37 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -33,6 +33,7 @@ var/busy = 0 var/on_open_network = 0 + var/always_visible = FALSE //Visable from any map, good for entertainment network cameras var/affected_by_emp_until = 0 @@ -472,6 +473,7 @@ cam["name"] = sanitize(c_tag) cam["deact"] = !can_use() cam["camera"] = "\ref[src]" + cam["omni"] = always_visible cam["x"] = x cam["y"] = y cam["z"] = z diff --git a/code/game/machinery/camera/presets.dm b/code/game/machinery/camera/presets.dm index 911e1289844..d7070146d11 100644 --- a/code/game/machinery/camera/presets.dm +++ b/code/game/machinery/camera/presets.dm @@ -102,6 +102,7 @@ var/global/list/engineering_networks = list( /obj/machinery/camera/network/thunder network = list(NETWORK_THUNDER) invuln = 1 + always_visible = TRUE // EMP diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index 57d6d01c6e2..9adf2a0a431 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -43,11 +43,14 @@ data["current_camera"] = current_camera ? current_camera.nano_structure() : null data["current_network"] = current_network data["networks"] = network ? network : list() + + var/map_levels = using_map.get_map_levels(src.z, TRUE) + data["map_levels"] = map_levels + if(current_network) - data["cameras"] = camera_repository.cameras_in_network(current_network) + data["cameras"] = camera_repository.cameras_in_network(current_network, map_levels) if(current_camera) switch_to_camera(user, current_camera) - data["map_levels"] = using_map.get_map_levels(src.z) ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) @@ -91,9 +94,6 @@ . = ..() /obj/machinery/computer/security/attack_hand(var/mob/user as mob) - if (using_map && !(src.z in using_map.contact_levels)) - to_chat(user, "Unable to establish a connection: You're too far away from the station!") - return if(stat & (NOPOWER|BROKEN)) return if(!isAI(user)) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 21c795f08d9..9333e32556f 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -546,7 +546,7 @@ var/datum/signal/status_signal = new status_signal.source = src - status_signal.transmission_method = 1 + status_signal.transmission_method = TRANSMISSION_RADIO status_signal.data["command"] = command switch(command) diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index 9342e0b5e91..077c12c451f 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -8,7 +8,7 @@ idle_power_usage = 250 active_power_usage = 500 circuit = /obj/item/weapon/circuitboard/crew - var/datum/nano_module/crew_monitor/crew_monitor + var/datum/nano_module/program/crew_monitor/crew_monitor /obj/machinery/computer/crew/New() crew_monitor = new(src) diff --git a/code/game/machinery/computer/prisonshuttle.dm b/code/game/machinery/computer/prisonshuttle.dm index 04f0c61c526..1d58a61df19 100644 --- a/code/game/machinery/computer/prisonshuttle.dm +++ b/code/game/machinery/computer/prisonshuttle.dm @@ -121,7 +121,7 @@ var/prison_shuttle_timeleft = 0 if(!frequency) return var/datum/signal/status_signal = new status_signal.source = src - status_signal.transmission_method = 1 + status_signal.transmission_method = TRANSMISSION_RADIO status_signal.data["command"] = command frequency.post_signal(src, status_signal) return diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm index 50ccdb47d85..1a64db73893 100644 --- a/code/game/machinery/computer/skills.dm +++ b/code/game/machinery/computer/skills.dm @@ -91,19 +91,28 @@ var/icon/side = active1.fields["photo_side"] user << browse_rsc(front, "front.png") user << browse_rsc(side, "side.png") - dat += text("
Event TypeStart TimeFinish Time
[event.type][event.time_started][event.time_finished]
[name][bot[name]][isactive[name]]
Offmap Spawns
[name][off[name]][isactive[name]]
Miscellaneous
\ -
\ - Name: [active1.fields["name"]]
\ - ID: [active1.fields["id"]]
\n \ - Entity Classification: [active1.fields["brain_type"]]
\n \ - Sex: [active1.fields["sex"]]
\n \ - Age: [active1.fields["age"]]
\n \ - Rank: [active1.fields["rank"]]
\n \ - Fingerprint: [active1.fields["fingerprint"]]
\n \ - Physical Status: [active1.fields["p_stat"]]
\n \ - Mental Status: [active1.fields["m_stat"]]

\n \ - Employment/skills summary:
[decode(active1.fields["notes"])]
Photo:
\ -
") + dat += "" + + dat += "
" + dat += "Name: [active1.fields["name"]]
" + dat += "ID: [active1.fields["id"]]
\n" + dat += "Entity Classification: [active1.fields["brain_type"]]
\n" + dat += "Sex: [active1.fields["sex"]]
\n" + dat += "Age: [active1.fields["age"]]
\n" + dat += "Rank: [active1.fields["rank"]]
\n" + dat += "Fingerprint: [active1.fields["fingerprint"]]
\n" + dat += "Physical Status: [active1.fields["p_stat"]]
\n" + dat += "Mental Status: [active1.fields["m_stat"]]

\n" + + dat += "Employment/skills summary:
" + dat += decode(active1.fields["notes"]) + dat += "


" + var/counter = 1 + while(src.active1.fields[text("com_[]", counter)]) + dat += text("[]
Delete Entry

", src.active1.fields[text("com_[]", counter)], src, counter) + counter++ + dat += "Add Entry

Photo:
" + dat += "
" else dat += "General Record Lost!
" dat += text("\nDelete Record (ALL)

\nPrint Record
\nBack
", src, src, src) @@ -285,6 +294,25 @@ What a mess.*/ P.name = "Employment Record (Unknown/Invald Entry)" log_debug("[usr] ([usr.ckey]) attempted to print a null employee record, this should be investigated.") printing = null +// Add comment + if ("add_c") + if (!( istype(src.active1, /datum/data/record) )) + return + var/a1 = src.active1 + var/t1 = sanitize(input("Add Comment:", "Emp. records", null, null) as message) + if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) + return + var/counter = 1 + while(src.active1.fields[text("com_[]", counter)]) + counter++ + src.active1.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD")] [stationtime2text()], [game_year]
[t1]") +// Delete comment + if ("del_c") + var/target = href_list["del_c"] + if (istype(src.active1, /datum/data/record) && src.active1.fields["com_[target]"]) + src.active1.fields["com_[target]"] = "Deleted" + + //RECORD DELETE if ("Delete All Records") temp = "" diff --git a/code/game/machinery/computer/supply.dm b/code/game/machinery/computer/supply.dm index 05b4e65292f..a310b33f785 100644 --- a/code/game/machinery/computer/supply.dm +++ b/code/game/machinery/computer/supply.dm @@ -421,7 +421,7 @@ var/datum/signal/status_signal = new status_signal.source = src - status_signal.transmission_method = 1 + status_signal.transmission_method = TRANSMISSION_RADIO status_signal.data["command"] = command frequency.post_signal(src, status_signal) diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index d62d53a5513..bdd2b05fc6b 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -219,6 +219,7 @@ var/on_enter_occupant_message = "You feel cool air surround you. You go numb as your senses turn inward." var/on_store_visible_message_1 = "hums and hisses as it moves" //We need two variables because byond doesn't let us have variables inside strings at compile-time. var/on_store_visible_message_2 = "into storage." + var/announce_channel = "Common" var/allow_occupant_types = list(/mob/living/carbon/human) var/disallow_occupant_types = list() @@ -519,7 +520,7 @@ control_computer._admin_logs += "[key_name(to_despawn)] ([to_despawn.mind.role_alt_title]) at [stationtime2text()]" log_and_message_admins("[key_name(to_despawn)] ([to_despawn.mind.role_alt_title]) entered cryostorage.") - announce.autosay("[to_despawn.real_name], [to_despawn.mind.role_alt_title], [on_store_message]", "[on_store_name]") + announce.autosay("[to_despawn.real_name], [to_despawn.mind.role_alt_title], [on_store_message]", "[on_store_name]", announce_channel, using_map.get_map_levels(z, TRUE)) //visible_message("\The [initial(name)] hums and hisses as it moves [to_despawn.real_name] into storage.", 3) visible_message("\The [initial(name)] [on_store_visible_message_1] [to_despawn.real_name] [on_store_visible_message_2].", 3) diff --git a/code/game/machinery/doors/airlock_control.dm b/code/game/machinery/doors/airlock_control.dm index e5ff8bab16a..ca7092708d3 100644 --- a/code/game/machinery/doors/airlock_control.dm +++ b/code/game/machinery/doors/airlock_control.dm @@ -91,7 +91,7 @@ obj/machinery/door/airlock/proc/command_completed(var/command) obj/machinery/door/airlock/proc/send_status(var/bumped = 0) if(radio_connection) var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal + signal.transmission_method = TRANSMISSION_RADIO //radio signal signal.data["tag"] = id_tag signal.data["timestamp"] = world.time @@ -172,7 +172,7 @@ obj/machinery/airlock_sensor/update_icon() obj/machinery/airlock_sensor/attack_hand(mob/user) var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal + signal.transmission_method = TRANSMISSION_RADIO //radio signal signal.data["tag"] = master_tag signal.data["command"] = command @@ -186,7 +186,7 @@ obj/machinery/airlock_sensor/process() if(abs(pressure - previousPressure) > 0.001 || previousPressure == null) var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal + signal.transmission_method = TRANSMISSION_RADIO //radio signal signal.data["tag"] = id_tag signal.data["timestamp"] = world.time signal.data["pressure"] = num2text(pressure) @@ -263,7 +263,7 @@ obj/machinery/access_button/attack_hand(mob/user) else if(radio_connection) var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal + signal.transmission_method = TRANSMISSION_RADIO //radio signal signal.data["tag"] = master_tag signal.data["command"] = command diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm index bf201989fea..36faf82b002 100644 --- a/code/game/machinery/doors/blast_door.dm +++ b/code/game/machinery/doors/blast_door.dm @@ -91,7 +91,7 @@ src.density = 1 update_nearby_tiles() src.update_icon() - src.set_opacity(initial(opacity)) + src.set_opacity(1) sleep(15) src.operating = 0 @@ -244,8 +244,7 @@ force_open() if(autoclose && src.operating && !(stat & BROKEN || stat & NOPOWER)) - spawn(150) - close() + addtimer(CALLBACK(src, .proc/close, 15 SECONDS)) return 1 // Proc: close() diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 22debea238f..c681a34edb5 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -290,6 +290,7 @@ FA.anchored = 1 FA.density = 1 FA.wired = 1 + FA.glass = glass FA.update_icon() qdel(src) return diff --git a/code/game/machinery/doors/firedoor_assembly.dm b/code/game/machinery/doors/firedoor_assembly.dm index a4701fd8fdb..4eeec7c5ff7 100644 --- a/code/game/machinery/doors/firedoor_assembly.dm +++ b/code/game/machinery/doors/firedoor_assembly.dm @@ -7,8 +7,13 @@ obj/structure/firedoor_assembly opacity = 0 density = 1 var/wired = 0 + var/glass = FALSE obj/structure/firedoor_assembly/update_icon() + if(glass) + icon = 'icons/obj/doors/DoorHazardGlass.dmi' + else + icon = 'icons/obj/doors/DoorHazard.dmi' if(anchored) icon_state = "door_anchored" else @@ -41,7 +46,10 @@ obj/structure/firedoor_assembly/attackby(obj/item/C, mob/user as mob) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) user.visible_message("[user] has inserted a circuit into \the [src]!", "You have inserted the circuit into \the [src]!") - new /obj/machinery/door/firedoor(src.loc) + if(glass) + new /obj/machinery/door/firedoor/glass(loc) + else + new /obj/machinery/door/firedoor(loc) qdel(C) qdel(src) else @@ -52,18 +60,39 @@ obj/structure/firedoor_assembly/attackby(obj/item/C, mob/user as mob) user.visible_message("[user] has [anchored ? "" : "un" ]secured \the [src]!", "You have [anchored ? "" : "un" ]secured \the [src]!") update_icon() - else if(!anchored && istype(C, /obj/item/weapon/weldingtool)) + else if((glass || !anchored) && istype(C, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = C if(WT.remove_fuel(0, user)) - user.visible_message("[user] dissassembles \the [src].", - "You start to dissassemble \the [src].") - if(do_after(user, 40)) - if(!src || !WT.isOn()) return - user.visible_message("[user] has dissassembled \the [src].", - "You have dissassembled \the [src].") - new /obj/item/stack/material/steel(src.loc, 2) - qdel(src) + playsound(src, WT.usesound, 50, 1) + if(glass) + user.visible_message("[user] welds the glass panel out of \the [src].", + "You start to weld the glass panel out of \the [src].") + if(do_after(user, 40 * WT.toolspeed, src) && WT.isOn()) + to_chat(user, "You welded the glass panel out!") + new /obj/item/stack/material/glass/reinforced(drop_location()) + glass = FALSE + update_icon() + return + if(!anchored) + user.visible_message("[user] dissassembles \the [src].", "You start to dissassemble \the [src].") + if(do_after(user, 40 * WT.toolspeed, src) && WT.isOn()) + user.visible_message("[user] has dissassembled \the [src].", + "You have dissassembled \the [src].") + new /obj/item/stack/material/steel(drop_location(), 2) + qdel(src) + return else to_chat(user, "You need more welding fuel.") + else if(istype(C, /obj/item/stack/material) && C.get_material_name() == "rglass" && !glass) + var/obj/item/stack/S = C + if (S.get_amount() >= 1) + playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) + user.visible_message("[user] adds [S.name] to \the [src].", + "You start to install [S.name] into \the [src].") + if(do_after(user, 40, src) && !glass && S.use(1)) + to_chat(user, "You installed reinforced glass windows into \the [src].") + glass = TRUE + update_icon() + else ..(C, user) diff --git a/code/game/machinery/embedded_controller/mapping_helpers.dm b/code/game/machinery/embedded_controller/mapping_helpers.dm index cd48226cedf..768fc74beb7 100644 --- a/code/game/machinery/embedded_controller/mapping_helpers.dm +++ b/code/game/machinery/embedded_controller/mapping_helpers.dm @@ -145,6 +145,7 @@ Any frequency works, it's self-setting, but it seems like people have decided 13 /obj/effect/map_helper/airlock/sensor/setup() var/obj/machinery/airlock_sensor/my_sensor = my_device my_sensor.id_tag = my_controller.id_tag + tag_addon + my_sensor.master_tag = my_controller.id_tag my_sensor.frequency = my_controller.frequency my_sensor.set_frequency(my_controller.frequency) if(command) diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index 9d36b082021..ebbda06d6d0 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -275,7 +275,7 @@ // Prepare signal beforehand, because this is a radio operation var/datum/signal/signal = new - signal.transmission_method = 1 // radio transmission + signal.transmission_method = TRANSMISSION_RADIO // radio transmission signal.source = src signal.frequency = frequency signal.data["code"] = code @@ -341,7 +341,7 @@ // Prepare the radio signal var/datum/signal/signal = new - signal.transmission_method = 1 // radio transmission + signal.transmission_method = TRANSMISSION_RADIO // radio transmission signal.source = src signal.frequency = frequency signal.data["code"] = code diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index e83da8222d5..13b1dc1bb75 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -83,6 +83,12 @@ Buildable meters if(PIPING_LAYER_SUPPLY) color = PIPE_COLOR_BLUE name = "[initial(fakeA.name)] supply fitting" + if(PIPING_LAYER_FUEL) + color = PIPE_COLOR_YELLOW + name = "[initial(fakeA.name)] fuel fitting" + if(PIPING_LAYER_AUX) + color = PIPE_COLOR_CYAN + name = "[initial(fakeA.name)] aux fitting" // Or if we were to do it the TG way... // pixel_x = PIPE_PIXEL_OFFSET_X(piping_layer) // pixel_y = PIPE_PIXEL_OFFSET_Y(piping_layer) diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index e1b874c096d..e1aab7bf3c9 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -8,6 +8,13 @@ var/unwrenched = 0 var/wait = 0 var/p_layer = PIPING_LAYER_REGULAR + var/static/list/pipe_layers = list( + "Regular" = PIPING_LAYER_REGULAR, + "Supply" = PIPING_LAYER_SUPPLY, + "Scrubber" = PIPING_LAYER_SCRUBBER, + "Fuel" = PIPING_LAYER_FUEL, + "Aux" = PIPING_LAYER_AUX + ) // TODO - Its about time to make this NanoUI don't we think? /obj/machinery/pipedispenser/attack_hand(var/mob/user as mob) @@ -22,11 +29,10 @@ for(var/category in atmos_pipe_recipes) lines += "[category]:
" if(category == "Pipes") - // Stupid hack. Fix someday. So tired right now. - lines += "Regular " - lines += "Supply " - lines += "Scrubber " - lines += "
" + for(var/pipename in pipe_layers) + var/pipelayer = pipe_layers[pipename] + lines += "[pipename] " + lines += "
" for(var/datum/pipe_recipe/PI in atmos_pipe_recipes[category]) lines += PI.Render(src) var/dat = lines.Join() diff --git a/code/game/machinery/pipe/pipe_recipes.dm b/code/game/machinery/pipe/pipe_recipes.dm index a54cdd4eee7..aee12f749c3 100644 --- a/code/game/machinery/pipe/pipe_recipes.dm +++ b/code/game/machinery/pipe/pipe_recipes.dm @@ -7,42 +7,45 @@ var/global/list/atmos_pipe_recipes = null /hook/startup/proc/init_pipe_recipes() global.atmos_pipe_recipes = list( "Pipes" = list( - new /datum/pipe_recipe/pipe("Pipe", /obj/machinery/atmospherics/pipe/simple), - new /datum/pipe_recipe/pipe("Manifold", /obj/machinery/atmospherics/pipe/manifold), - new /datum/pipe_recipe/pipe("Manual Valve", /obj/machinery/atmospherics/valve), + new /datum/pipe_recipe/pipe("Pipe", /obj/machinery/atmospherics/pipe/simple), + new /datum/pipe_recipe/pipe("Manifold", /obj/machinery/atmospherics/pipe/manifold), + new /datum/pipe_recipe/pipe("Manual Valve", /obj/machinery/atmospherics/valve), new /datum/pipe_recipe/pipe("Digital Valve", /obj/machinery/atmospherics/valve/digital), - new /datum/pipe_recipe/pipe("Pipe cap", /obj/machinery/atmospherics/pipe/cap), + new /datum/pipe_recipe/pipe("Pipe cap", /obj/machinery/atmospherics/pipe/cap), new /datum/pipe_recipe/pipe("4-Way Manifold", /obj/machinery/atmospherics/pipe/manifold4w), new /datum/pipe_recipe/pipe("Manual T-Valve", /obj/machinery/atmospherics/tvalve), - new /datum/pipe_recipe/pipe("Digital T-Valve", /obj/machinery/atmospherics/tvalve/digital), - new /datum/pipe_recipe/pipe("Upward Pipe", /obj/machinery/atmospherics/pipe/zpipe/up), + new /datum/pipe_recipe/pipe("Digital T-Valve", /obj/machinery/atmospherics/tvalve/digital), + new /datum/pipe_recipe/pipe("Upward Pipe", /obj/machinery/atmospherics/pipe/zpipe/up), new /datum/pipe_recipe/pipe("Downward Pipe", /obj/machinery/atmospherics/pipe/zpipe/down), - new /datum/pipe_recipe/pipe("Universal Pipe Adaptor", /obj/machinery/atmospherics/pipe/simple/visible/universal), + new /datum/pipe_recipe/pipe("Universal Pipe Adaptor",/obj/machinery/atmospherics/pipe/simple/visible/universal), ), "Devices" = list( new /datum/pipe_recipe/pipe("Connector", /obj/machinery/atmospherics/portables_connector), new /datum/pipe_recipe/pipe("Unary Vent", /obj/machinery/atmospherics/unary/vent_pump), - new /datum/pipe_recipe/pipe("Passive Vent", /obj/machinery/atmospherics/pipe/vent), - new /datum/pipe_recipe/pipe("Injector", /obj/machinery/atmospherics/unary/outlet_injector), - new /datum/pipe_recipe/pipe("Gas Pump", /obj/machinery/atmospherics/binary/pump), + new /datum/pipe_recipe/pipe("Aux Vent", /obj/machinery/atmospherics/unary/vent_pump/aux), + new /datum/pipe_recipe/pipe("Passive Vent", /obj/machinery/atmospherics/pipe/vent), + new /datum/pipe_recipe/pipe("Injector", /obj/machinery/atmospherics/unary/outlet_injector), + new /datum/pipe_recipe/pipe("Gas Pump", /obj/machinery/atmospherics/binary/pump), + new /datum/pipe_recipe/pipe("Fuel Pump", /obj/machinery/atmospherics/binary/pump/fuel), + new /datum/pipe_recipe/pipe("Aux Pump", /obj/machinery/atmospherics/binary/pump/aux), new /datum/pipe_recipe/pipe("Pressure Regulator", /obj/machinery/atmospherics/binary/passive_gate), - new /datum/pipe_recipe/pipe("High Power Gas Pump",/obj/machinery/atmospherics/binary/pump/high_power), - //new /datum/pipe_recipe/pipe("Automatic Shutoff Valve",/obj/machinery/atmospherics/valve/shutoff), //VOREStation Removal: Without leaks, those are just regular valves, - new /datum/pipe_recipe/pipe("Scrubber", /obj/machinery/atmospherics/unary/vent_scrubber), + new /datum/pipe_recipe/pipe("High Power Gas Pump", /obj/machinery/atmospherics/binary/pump/high_power), + new /datum/pipe_recipe/pipe("Automatic Shutoff Valve",/obj/machinery/atmospherics/valve/shutoff), + new /datum/pipe_recipe/pipe("Scrubber", /obj/machinery/atmospherics/unary/vent_scrubber), new /datum/pipe_recipe/meter("Meter"), new /datum/pipe_recipe/pipe("Gas Filter", /obj/machinery/atmospherics/trinary/atmos_filter), new /datum/pipe_recipe/pipe("Gas Mixer", /obj/machinery/atmospherics/trinary/mixer), new /datum/pipe_recipe/pipe("Gas Mixer 'T'", /obj/machinery/atmospherics/trinary/mixer/t_mixer), new /datum/pipe_recipe/pipe("Omni Gas Mixer", /obj/machinery/atmospherics/omni/mixer), - new /datum/pipe_recipe/pipe("Omni Gas Filter", /obj/machinery/atmospherics/omni/atmos_filter), + new /datum/pipe_recipe/pipe("Omni Gas Filter", /obj/machinery/atmospherics/omni/atmos_filter), ), "Heat Exchange" = list( - new /datum/pipe_recipe/pipe("Pipe", /obj/machinery/atmospherics/pipe/simple/heat_exchanging), - new /datum/pipe_recipe/pipe("Junction", /obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction), + new /datum/pipe_recipe/pipe("Pipe", /obj/machinery/atmospherics/pipe/simple/heat_exchanging), + new /datum/pipe_recipe/pipe("Junction", /obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction), new /datum/pipe_recipe/pipe("Heat Exchanger", /obj/machinery/atmospherics/unary/heat_exchanger), ), "Insulated pipes" = list( - new /datum/pipe_recipe/pipe("Pipe", /obj/machinery/atmospherics/pipe/simple/insulated), + new /datum/pipe_recipe/pipe("Pipe", /obj/machinery/atmospherics/pipe/simple/insulated), ) ) return TRUE diff --git a/code/game/machinery/pointdefense.dm b/code/game/machinery/pointdefense.dm index 97bde089cd6..3ca0ed601e1 100644 --- a/code/game/machinery/pointdefense.dm +++ b/code/game/machinery/pointdefense.dm @@ -4,7 +4,7 @@ // GLOBAL_LIST_BOILERPLATE(pointdefense_controllers, /obj/machinery/pointdefense_control) -GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense) +GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) /obj/machinery/pointdefense_control name = "fire assist mainframe" @@ -59,7 +59,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense) return if(href_list["toggle_active"]) - var/obj/machinery/pointdefense/PD = locate(href_list["toggle_active"]) + var/obj/machinery/power/pointdefense/PD = locate(href_list["toggle_active"]) if(!istype(PD)) return TOPIC_NOACTION @@ -83,7 +83,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense) if(id_tag) var/list/connected_z_levels = GetConnectedZlevels(get_z(src)) for(var/i = 1 to LAZYLEN(pointdefense_turrets)) - var/obj/machinery/pointdefense/PD = pointdefense_turrets[i] + var/obj/machinery/power/pointdefense/PD = pointdefense_turrets[i] if(!(PD.id_tag == id_tag && get_z(PD) in connected_z_levels)) continue var/list/turret = list() @@ -124,16 +124,17 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense) // The acutal point defense battery // -/obj/machinery/pointdefense +/obj/machinery/power/pointdefense name = "\improper point defense battery" icon = 'icons/obj/pointdefense.dmi' - icon_state = "pointdefense" + icon_state = "pointdefense2" desc = "A Kuiper pattern anti-meteor battery. Capable of destroying most threats in a single salvo." description_info = "Must have the same ident tag as a fire assist mainframe on the same facility." density = TRUE anchored = TRUE circuit = /obj/item/weapon/circuitboard/pointdefense idle_power_usage = 0.1 KILOWATTS + active_power_usage = 1 KILOWATTS appearance_flags = PIXEL_SCALE var/active = TRUE var/charge_cooldown = 1 SECOND //time between it can fire at different targets @@ -143,33 +144,69 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense) var/engaging = FALSE var/id_tag = null -/obj/machinery/pointdefense/Initialize() +/obj/machinery/power/pointdefense/Initialize() . = ..() // TODO - Remove this bit once machines are converted to Initialize if(ispath(circuit)) circuit = new circuit(src) default_apply_parts() + if(anchored) + connect_to_network() update_icon() + var/image/I = image(icon, icon_state = "[icon_state]_under") + I.appearance_flags |= RESET_TRANSFORM + underlays += I -/obj/machinery/pointdefense/get_description_interaction() +/obj/machinery/power/pointdefense/examine(mob/user) + ..() + if(powernet) + to_chat(user, "It is connected to a power cable below.") + +/obj/machinery/power/pointdefense/get_description_interaction() . = ..() if(!id_tag) . += "[desc_panel_image("multitool")]to set ident tag and connect to a mainframe." -/obj/machinery/pointdefense/update_icon() +/obj/machinery/power/pointdefense/update_icon() if(!active || !id_tag || inoperable()) icon_state = "[initial(icon_state)]_off" else icon_state = initial(icon_state) -/obj/machinery/pointdefense/power_change() +/obj/machinery/power/pointdefense/default_unfasten_wrench(var/mob/user, var/obj/item/weapon/W, var/time) + if((. = ..())) + src.transform = null // Reset rotation if we're anchored/unanchored + +////////// This machine is willing to take power from cables OR APCs. Handle NOPOWER stat specially here! //////// + +/obj/machinery/power/pointdefense/connect_to_network() + if((. = ..())) + stat &= ~NOPOWER // We now ignore APC power + update_icon() + +/obj/machinery/power/pointdefense/disconnect_from_network() + if((. = ..())) + power_change() // We're back on APC power. + +/obj/machinery/power/pointdefense/power_change() + if(powernet) + return // We don't care, we are cable powered anyway var/old_stat = stat ..() if(old_stat != stat) update_icon() +// Decide where to get the power to fire from +/obj/machinery/power/pointdefense/use_power_oneoff(var/amount, var/chan = -1) + if(powernet) + return draw_power(amount) + else if(powered(chan)) + use_power(amount, chan) + return amount + return 0 + // Find controller with the same tag on connected z levels (if any) -/obj/machinery/pointdefense/proc/get_controller() +/obj/machinery/power/pointdefense/proc/get_controller() if(!id_tag) return null var/list/connected_z_levels = GetConnectedZlevels(get_z(src)) @@ -178,7 +215,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense) if(PDC.id_tag == id_tag && (get_z(PDC) in connected_z_levels)) return PDC -/obj/machinery/pointdefense/attackby(var/obj/item/W, var/mob/user) +/obj/machinery/power/pointdefense/attackby(var/obj/item/W, var/mob/user) if(W?.is_multitool()) var/new_ident = input(user, "Enter a new ident tag.", "[src]", id_tag) as null|text if(new_ident && new_ident != id_tag && user.Adjacent(src) && CanInteract(user, physical_state)) @@ -191,16 +228,18 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense) return if(default_part_replacement(user, W)) return + if(default_unfasten_wrench(user, W, 40)) + return return ..() //Guns cannot shoot through hull or generally dense turfs. -/obj/machinery/pointdefense/proc/space_los(meteor) +/obj/machinery/power/pointdefense/proc/space_los(meteor) for(var/turf/T in getline(src,meteor)) if(T.density) return FALSE return TRUE -/obj/machinery/pointdefense/proc/Shoot(var/weakref/target) +/obj/machinery/power/pointdefense/proc/Shoot(var/weakref/target) var/obj/effect/meteor/M = target.resolve() if(!istype(M)) return @@ -213,7 +252,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense) set_dir(ATAN2(transform.b, transform.a) > 0 ? NORTH : SOUTH) -/obj/machinery/pointdefense/proc/finish_shot(var/weakref/target) +/obj/machinery/power/pointdefense/proc/finish_shot(var/weakref/target) //Cleanup from list var/obj/machinery/pointdefense_control/PC = get_controller() if(istype(PC)) @@ -224,28 +263,34 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense) var/obj/effect/meteor/M = target.resolve() if(!istype(M)) return + if(use_power_oneoff(active_power_usage) < active_power_usage) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, src) + s.start() + visible_message("[src] sputters as browns out while attempting to fire.") + return //We throw a laser but it doesnt have to hit for meteor to explode var/obj/item/projectile/beam/pointdefense/beam = new(get_turf(src)) playsound(src, 'sound/weapons/mandalorian.ogg', 75, 1) - use_power_oneoff(idle_power_usage * 10) beam.launch_projectile(target = M.loc, user = src) - M.make_debris() qdel(M) -/obj/machinery/pointdefense/process() +/obj/machinery/power/pointdefense/process() ..() - if(stat & (NOPOWER|BROKEN)) + if(!anchored || stat & (NOPOWER|BROKEN)) return if(!active) return + /* var/desiredir = ATAN2(transform.b, transform.a) > 0 ? NORTH : SOUTH if(dir != desiredir) set_dir(desiredir) + */ if(LAZYLEN(GLOB.meteor_list) > 0) find_and_shoot() -/obj/machinery/pointdefense/proc/find_and_shoot() +/obj/machinery/power/pointdefense/proc/find_and_shoot() if(LAZYLEN(GLOB.meteor_list) == 0) return if(engaging || ((world.time - last_shot) < charge_cooldown)) @@ -279,7 +324,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense) Shoot(target) return -/obj/machinery/pointdefense/RefreshParts() +/obj/machinery/power/pointdefense/RefreshParts() . = ..() // Calculates an average rating of components that affect shooting rate var/shootrate_divisor = total_component_rating_of_type(/obj/item/weapon/stock_parts/capacitor) @@ -295,7 +340,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense) var/rotation_divisor = total_component_rating_of_type(/obj/item/weapon/stock_parts/manipulator) rotation_speed = 0.5 SECONDS / (rotation_divisor ? rotation_divisor : 1) -/obj/machinery/pointdefense/proc/Activate() +/obj/machinery/power/pointdefense/proc/Activate() if(active) return FALSE @@ -305,7 +350,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense) update_icon() return TRUE -/obj/machinery/pointdefense/proc/Deactivate() +/obj/machinery/power/pointdefense/proc/Deactivate() if(!active) return FALSE playsound(src, 'sound/machines/apc_nopower.ogg', 50, 0) diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index 057a8fd5c16..f392eb52184 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -23,6 +23,12 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept produces_heat = 0 delay = 7 circuit = /obj/item/weapon/circuitboard/telecomms/broadcaster + //Vars only used if you're using the overmap + var/overmap_range = 0 + var/overmap_range_min = 0 + var/overmap_range_max = 5 + //Linked bluespace radios + var/list/linked_radios_weakrefs = list() /obj/machinery/telecomms/processor/Initialize() . = ..() @@ -34,6 +40,11 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept component_parts += new /obj/item/weapon/stock_parts/micro_laser/high(src) component_parts += new /obj/item/stack/cable_coil(src, 1) +/obj/machinery/telecomms/broadcaster/proc/link_radio(var/obj/item/device/radio/R) + if(!istype(R)) + return + linked_radios_weakrefs |= weakref(R) + /obj/machinery/telecomms/broadcaster/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) // Don't broadcast rejected signals if(signal.data["reject"]) @@ -58,46 +69,51 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept if(signal.data["slow"] > 0) sleep(signal.data["slow"]) // simulate the network lag if necessary - signal.data["level"] |= listening_level + signal.data["level"] |= using_map.get_map_levels(listening_level, TRUE, overmap_range) + + var/list/forced_radios + for(var/weakref/wr in linked_radios_weakrefs) + var/obj/item/device/radio/R = wr.resolve() + if(istype(R)) + LAZYDISTINCTADD(forced_radios, R) /** #### - Normal Broadcast - #### **/ - - if(signal.data["type"] == 0) - + if(signal.data["type"] == SIGNAL_NORMAL) /* ###### Broadcast a message using signal.data ###### */ Broadcast_Message(signal.data["connection"], signal.data["mob"], signal.data["vmask"], signal.data["vmessage"], signal.data["radio"], signal.data["message"], signal.data["name"], signal.data["job"], - signal.data["realname"], signal.data["vname"],, + signal.data["realname"], signal.data["vname"], DATA_NORMAL, signal.data["compression"], signal.data["level"], signal.frequency, - signal.data["verb"], signal.data["language"] ) + signal.data["verb"], signal.data["language"], forced_radios) /** #### - Simple Broadcast - #### **/ - if(signal.data["type"] == 1) + if(signal.data["type"] == SIGNAL_SIMPLE) /* ###### Broadcast a message using signal.data ###### */ Broadcast_SimpleMessage(signal.data["name"], signal.frequency, - signal.data["message"],null, null, - signal.data["compression"], listening_level) + signal.data["message"], DATA_NORMAL, null, + signal.data["compression"], listening_level, forced_radios) /** #### - Artificial Broadcast - #### **/ // (Imitates a mob) - if(signal.data["type"] == 2) + if(signal.data["type"] == SIGNAL_FAKE) /* ###### Broadcast a message using signal.data ###### */ - // Parameter "data" as 4: AI can't track this person/mob + // Parameter "data" as DATA_FAKE: AI can't track this person/mob Broadcast_Message(signal.data["connection"], signal.data["mob"], signal.data["vmask"], signal.data["vmessage"], signal.data["radio"], signal.data["message"], signal.data["name"], signal.data["job"], - signal.data["realname"], signal.data["vname"], 4, signal.data["compression"], signal.data["level"], signal.frequency, - signal.data["verb"], signal.data["language"]) + signal.data["realname"], signal.data["vname"], DATA_FAKE, + signal.data["compression"], signal.data["level"], signal.frequency, + signal.data["verb"], signal.data["language"], forced_radios) if(!message_delay) message_delay = 1 @@ -118,6 +134,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept /* Basically just an empty shell for receiving and broadcasting radio messages. Not very flexible, but it gets the job done. + NOTE: This AIO device listens on *every* zlevel (it does not even check) */ /obj/machinery/telecomms/allinone @@ -126,15 +143,98 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept icon_state = "comm_server" desc = "A compact machine used for portable subspace telecommuniations processing." density = 1 + use_power = USE_POWER_IDLE + idle_power_usage = 20 anchored = 1 - use_power = USE_POWER_OFF - idle_power_usage = 0 machinetype = 6 produces_heat = 0 var/intercept = 0 // if nonzero, broadcasts all messages to syndicate channel + var/overmap_range = 0 //Same turf + + var/list/linked_radios_weakrefs = list() + +/obj/machinery/telecomms/allinone/proc/link_radio(var/obj/item/device/radio/R) + if(!istype(R)) + return + linked_radios_weakrefs |= weakref(R) /obj/machinery/telecomms/allinone/receive_signal(datum/signal/signal) + // Has to be on to receive messages + if(!on) + return + + // Why did you use this subtype? + if(!using_map.use_overmap) + return + + // Someone else handling it? + if(signal.data["done"]) + return + + // Where are we able to hear from (and talk to, since we're AIO) anyway? + var/map_levels = using_map.get_map_levels(z, TRUE, overmap_range) + + //Bluespace can skip this check + if(signal.transmission_method != TRANSMISSION_BLUESPACE) + var/list/signal_levels = list() + signal_levels += signal.data["level"] //If it's text/number, it'll be the only entry, if it's a list, it'll get combined + var/list/overlap = map_levels & signal_levels //Returns a list of similar levels + if(!overlap.len) + return + + if(is_freq_listening(signal)) // detect subspace signals + + signal.data["done"] = 1 // mark the signal as being broadcasted since we're a broadcaster + signal.data["compression"] = 0 // decompress since we're a processor + + // Search for the original signal and mark it as done as well + var/datum/signal/original = signal.data["original"] + if(original) + original.data["done"] = 1 + + // For some reason level is both used as a list and not a list, and now it needs to be a list. + signal.data["level"] = map_levels + + if(signal.data["slow"] > 0) + sleep(signal.data["slow"]) // simulate the network lag if necessary + + /* ###### Broadcast a message using signal.data ###### */ + + var/datum/radio_frequency/connection = signal.data["connection"] + + var/list/forced_radios + for(var/weakref/wr in linked_radios_weakrefs) + var/obj/item/device/radio/R = wr.resolve() + if(istype(R)) + LAZYDISTINCTADD(forced_radios, R) + + Broadcast_Message( + signal.data["connection"], + signal.data["mob"], + signal.data["vmask"], + signal.data["vmessage"], + signal.data["radio"], + signal.data["message"], + signal.data["name"], + signal.data["job"], + signal.data["realname"], + signal.data["vname"], + DATA_NORMAL, + signal.data["compression"], + signal.data["level"], + connection.frequency, + signal.data["verb"], + signal.data["language"], + forced_radios + ) + +//Antag version with unlimited range (doesn't even check) and uses no power, to enable antag comms to work anywhere. +/obj/machinery/telecomms/allinone/antag + use_power = USE_POWER_OFF + idle_power_usage = 0 + +/obj/machinery/telecomms/allinone/antag/receive_signal(datum/signal/signal) if(!on) // has to be on to receive messages return @@ -159,23 +259,29 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept var/datum/radio_frequency/connection = signal.data["connection"] + var/list/forced_radios + for(var/weakref/wr in linked_radios_weakrefs) + var/obj/item/device/radio/R = wr.resolve() + if(istype(R)) + LAZYDISTINCTADD(forced_radios, R) + if(connection.frequency in ANTAG_FREQS) // if antag broadcast, just Broadcast_Message(signal.data["connection"], signal.data["mob"], signal.data["vmask"], signal.data["vmessage"], signal.data["radio"], signal.data["message"], signal.data["name"], signal.data["job"], - signal.data["realname"], signal.data["vname"],, signal.data["compression"], list(0), connection.frequency, - signal.data["verb"], signal.data["language"]) + signal.data["realname"], signal.data["vname"], DATA_NORMAL, + signal.data["compression"], list(0), connection.frequency, + signal.data["verb"], signal.data["language"], forced_radios) else if(intercept) Broadcast_Message(signal.data["connection"], signal.data["mob"], signal.data["vmask"], signal.data["vmessage"], signal.data["radio"], signal.data["message"], signal.data["name"], signal.data["job"], - signal.data["realname"], signal.data["vname"], 3, signal.data["compression"], list(0), connection.frequency, - signal.data["verb"], signal.data["language"]) - - + signal.data["realname"], signal.data["vname"], DATA_ANTAG, + signal.data["compression"], list(0), connection.frequency, + signal.data["verb"], signal.data["language"], forced_radios) /** @@ -237,7 +343,8 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept /proc/Broadcast_Message(var/datum/radio_frequency/connection, var/mob/M, var/vmask, var/vmessage, var/obj/item/device/radio/radio, var/message, var/name, var/job, var/realname, var/vname, - var/data, var/compression, var/list/level, var/freq, var/verbage = "says", var/datum/language/speaking = null) + var/data, var/compression, var/list/level, var/freq, var/verbage = "says", + var/datum/language/speaking = null, var/list/forced_radios) /* ###### Prepare the radio connection ###### */ @@ -246,17 +353,22 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept var/list/obj/item/device/radio/radios = list() + for(var/obj/item/device/radio/R in forced_radios) + //Cursory check to ensure they are 'on' and stuff + if(R.receive_range(display_freq, list(0))) + radios |= R + // --- Broadcast only to intercom devices --- - if(data == 1) + if(data == DATA_INTERCOM) for (var/obj/item/device/radio/intercom/R in connection.devices["[RADIO_CHAT]"]) if(R.receive_range(display_freq, level) > -1) - radios += R + radios |= R // --- Broadcast only to intercoms and station-bounced radios --- - else if(data == 2) + else if(data == DATA_LOCAL) for (var/obj/item/device/radio/R in connection.devices["[RADIO_CHAT]"]) @@ -264,16 +376,16 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept continue if(R.receive_range(display_freq, level) > -1) - radios += R + radios |= R // --- Broadcast to antag radios! --- - else if(data == 3) + else if(data == DATA_ANTAG) for(var/antag_freq in ANTAG_FREQS) var/datum/radio_frequency/antag_connection = radio_controller.return_frequency(antag_freq) for (var/obj/item/device/radio/R in antag_connection.devices["[RADIO_CHAT]"]) if(R.receive_range(antag_freq, level) > -1) - radios += R + radios |= R // --- Broadcast to ALL radio devices --- @@ -281,7 +393,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept for (var/obj/item/device/radio/R in connection.devices["[RADIO_CHAT]"]) if(R.receive_range(display_freq, level) > -1) - radios += R + radios |= R // Get a list of mobs who can hear from the radios we collected. var/list/receive = get_mobs_in_radio_ranges(radios) @@ -307,7 +419,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept continue // Ghosts hearing all radio chat don't want to hear syndicate intercepts, they're duplicates - if(data == 3 && istype(R, /mob/observer/dead) && R.is_preference_enabled(/datum/client_preference/ghost_radio)) + if(data == DATA_ANTAG && istype(R, /mob/observer/dead) && R.is_preference_enabled(/datum/client_preference/ghost_radio)) continue // --- Check for compression --- @@ -346,7 +458,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept var/freq_text = get_frequency_name(display_freq) var/part_b_extra = "" - if(data == 3) // intercepted radio message + if(data == DATA_ANTAG) // intercepted radio message part_b_extra = " (Intercepted)" var/part_a = "[bicon(radio)]\[[freq_text]\][part_b_extra] " // goes in the actual output @@ -438,7 +550,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept return 1 -/proc/Broadcast_SimpleMessage(var/source, var/frequency, var/text, var/data, var/mob/M, var/compression, var/level) +/proc/Broadcast_SimpleMessage(var/source, var/frequency, var/text, var/data, var/mob/M, var/compression, var/level, var/list/forced_radios) /* ###### Prepare the radio connection ###### */ @@ -452,10 +564,12 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept var/list/receive = list() + for(var/obj/item/device/radio/R in forced_radios) + receive |= R.send_hear(display_freq) // --- Broadcast only to intercom devices --- - if(data == 1) + if(data == DATA_INTERCOM) for (var/obj/item/device/radio/intercom/R in connection.devices["[RADIO_CHAT]"]) var/turf/position = get_turf(R) if(position && position.z == level) @@ -464,7 +578,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept // --- Broadcast only to intercoms and station-bounced radios --- - else if(data == 2) + else if(data == DATA_LOCAL) for (var/obj/item/device/radio/R in connection.devices["[RADIO_CHAT]"]) if(istype(R, /obj/item/device/radio/headset)) @@ -476,7 +590,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept // --- Broadcast to antag radios! --- - else if(data == 3) + else if(data == DATA_ANTAG) for(var/freq in ANTAG_FREQS) var/datum/radio_frequency/antag_connection = radio_controller.return_frequency(freq) for (var/obj/item/device/radio/R in antag_connection.devices["[RADIO_CHAT]"]) @@ -541,7 +655,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept // --- Some more pre-message formatting --- var/part_b_extra = "" - if(data == 3) // intercepted radio message + if(data == DATA_ANTAG) // intercepted radio message part_b_extra = " (Intercepted)" // Create a radio headset for the sole purpose of using its icon @@ -617,15 +731,15 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept /atom/proc/test_telecomms() var/datum/signal/signal = src.telecomms_process() - var/turf/position = get_turf(src) - return (position.z in signal.data["level"] && signal.data["done"]) + var/pos_z = get_z(src) + return (pos_z in signal.data["level"] && signal.data["done"]) /atom/proc/telecomms_process(var/do_sleep = 1) // First, we want to generate a new radio signal var/datum/signal/signal = new - signal.transmission_method = 2 // 2 would be a subspace transmission. - var/turf/pos = get_turf(src) + signal.transmission_method = TRANSMISSION_SUBSPACE + var/pos_z = get_z(src) // --- Finally, tag the actual signal with the appropriate values --- signal.data = list( @@ -633,10 +747,10 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept "message" = "TEST", "compression" = rand(45, 50), // If the signal is compressed, compress our message too. "traffic" = 0, // dictates the total traffic sum that the signal went through - "type" = 4, // determines what type of radio input it is: test broadcast + "type" = SIGNAL_TEST, // determines what type of radio input it is: test broadcast "reject" = 0, "done" = 0, - "level" = pos.z // The level it is being broadcasted at. + "level" = pos_z // The level it is being broadcasted at. ) signal.frequency = PUB_FREQ// Common channel diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index 3e3d89643a1..802c75bb42b 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -219,6 +219,38 @@ temp = "-% Frequency changing deactivated %-" +// BROADCASTER +/obj/machinery/telecomms/broadcaster/Options_Menu() + // Note the machine 'displays' 1 higher than overmap_range to save users from the abstraction that range '0' is valid and everything on the same turf. + var/dat = "
Broadcast Range (affects power usage)
- [overmap_range+1] gigameter\s +" + return dat + +/obj/machinery/telecomms/broadcaster/Options_Topic(href, href_list) + if(href_list["range_down"]) + if(overmap_range > overmap_range_min) + overmap_range-- + idle_power_usage = initial(idle_power_usage)**(overmap_range+1) + if(href_list["range_up"]) + if(overmap_range < overmap_range_max) + overmap_range++ + idle_power_usage = initial(idle_power_usage)**(overmap_range+1) + +// RECEIVER +/obj/machinery/telecomms/receiver/Options_Menu() + // Note the machine 'displays' 1 higher than overmap_range to save users from the abstraction that range '0' is valid and everything on the same turf. + var/dat = "
Receive Range (affects power usage)
- [overmap_range+1] gigameter\s +" + return dat + +/obj/machinery/telecomms/receiver/Options_Topic(href, href_list) + if(href_list["range_down"]) + if(overmap_range > overmap_range_min) + overmap_range-- + idle_power_usage = initial(idle_power_usage)**(overmap_range+1) + if(href_list["range_up"]) + if(overmap_range < overmap_range_max) + overmap_range++ + idle_power_usage = initial(idle_power_usage)**(overmap_range+1) + /obj/machinery/telecomms/Topic(href, href_list) if(!issilicon(usr)) diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index c2e9126fc15..38f1adbdfc0 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -68,7 +68,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() var/datum/signal/copy if(copysig) copy = new - copy.transmission_method = 2 + copy.transmission_method = TRANSMISSION_SUBSPACE copy.frequency = signal.frequency copy.data = signal.data.Copy() @@ -141,9 +141,9 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() // Used in auto linking /obj/machinery/telecomms/proc/add_link(var/obj/machinery/telecomms/T) - var/turf/position = get_turf(src) - var/turf/T_position = get_turf(T) - if((position.z == T_position.z) || (src.long_range_link && T.long_range_link)) + var/pos_z = get_z(src) + var/tpos_z = get_z(T) + if((pos_z == tpos_z) || (src.long_range_link && T.long_range_link)) for(var/x in autolinkers) if(T.autolinkers.Find(x)) if(src != T) @@ -256,6 +256,12 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() machinetype = 1 produces_heat = 0 circuit = /obj/item/weapon/circuitboard/telecomms/receiver + //Vars only used if you're using the overmap + var/overmap_range = 0 + var/overmap_range_min = 0 + var/overmap_range_max = 5 + + var/list/linked_radios_weakrefs = list() /obj/machinery/telecomms/receiver/Initialize() . = ..() @@ -267,8 +273,12 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() component_parts += new /obj/item/weapon/stock_parts/micro_laser(src) RefreshParts() -/obj/machinery/telecomms/receiver/receive_signal(datum/signal/signal) +/obj/machinery/telecomms/receiver/proc/link_radio(var/obj/item/device/radio/R) + if(!istype(R)) + return + linked_radios_weakrefs |= weakref(R) +/obj/machinery/telecomms/receiver/receive_signal(datum/signal/signal) if(!on) // has to be on to receive messages return if(!signal) @@ -276,7 +286,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() if(!check_receive_level(signal)) return - if(signal.transmission_method == 2) + if(signal.transmission_method == TRANSMISSION_SUBSPACE) if(is_freq_listening(signal)) // detect subspace signals @@ -288,14 +298,31 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() relay_information(signal, "/obj/machinery/telecomms/bus") // Send it to a bus instead, if it's linked to one /obj/machinery/telecomms/receiver/proc/check_receive_level(datum/signal/signal) + // If it's a direct message from a bluespace radio, we eat it and convert it into a subspace signal locally + if(signal.transmission_method == TRANSMISSION_BLUESPACE) + var/obj/item/device/radio/R = signal.data["radio"] - if(signal.data["level"] != listening_level) + //Who're you? + if(!(weakref(R) in linked_radios_weakrefs)) + signal.data["reject"] = 1 + return 0 + + //We'll resend this for you + signal.data["level"] = z + signal.transmission_method = TRANSMISSION_SUBSPACE + return 1 + + //Where can we hear? + var/list/listening_levels = using_map.get_map_levels(listening_level, TRUE, overmap_range) + + // We couldn't 'hear' it, maybe a relay linked to our hub can 'hear' it + if(!(signal.data["level"] in listening_levels)) for(var/obj/machinery/telecomms/hub/H in links) - var/list/connected_levels = list() + var/list/relayed_levels = list() for(var/obj/machinery/telecomms/relay/R in H.links) if(R.can_receive(signal)) - connected_levels |= R.listening_level - if(signal.data["level"] in connected_levels) + relayed_levels |= R.listening_level + if(signal.data["level"] in relayed_levels) return 1 return 0 return 1 @@ -405,7 +432,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() // Add our level and send it back if(can_send(signal)) - signal.data["level"] |= listening_level + signal.data["level"] |= using_map.get_map_levels(listening_level) // Checks to see if it can send/receive. @@ -602,7 +629,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() totaltraffic += traffic // add current traffic to total traffic //Is this a test signal? Bypass logging - if(signal.data["type"] != 4) + if(signal.data["type"] != SIGNAL_TEST) // If signal has a message and appropriate frequency diff --git a/code/game/machinery/turret_control.dm b/code/game/machinery/turret_control.dm index 3b90c5d63a9..a3d10db557c 100644 --- a/code/game/machinery/turret_control.dm +++ b/code/game/machinery/turret_control.dm @@ -51,7 +51,7 @@ else if(ispath(control_area)) control_area = locate(control_area) else if(istext(control_area)) - for(var/area/A in all_areas) + for(var/area/A in world) if(A.name && A.name==control_area) control_area = A break diff --git a/code/game/mecha/combat/fighter.dm b/code/game/mecha/combat/fighter.dm index abada3f2832..171c96395ed 100644 --- a/code/game/mecha/combat/fighter.dm +++ b/code/game/mecha/combat/fighter.dm @@ -9,15 +9,15 @@ var/ground_capable = FALSE //If we can fly over normal turfs and not just space icon = 'icons/mecha/fighters64x64.dmi' - + icon_state = "" initial_icon = "" - + step_in = 2 //Fast health = 400 maxhealth = 400 - + infra_luminosity = 6 opacity = FALSE @@ -50,6 +50,77 @@ . = ..() consider_gravity() +//We don't get lost quite as easy. +/obj/mecha/combat/fighter/touch_map_edge() + //No overmap enabled or no driver to choose + if(!using_map.use_overmap || !occupant || !can_ztravel()) + return ..() + + var/obj/effect/overmap/visitable/our_ship = get_overmap_sector(z) + + //We're not on the overmap + if(!our_ship) + return ..() + + //Stored for safety checking after user input + var/this_x = x + var/this_y = y + var/this_z = z + var/this_occupant = occupant + + var/what_edge + + var/new_x + var/new_y + var/new_z + + if(x <= TRANSITIONEDGE) + what_edge = WEST + new_x = world.maxx - TRANSITIONEDGE - 2 + new_y = rand(TRANSITIONEDGE + 2, world.maxy - TRANSITIONEDGE - 2) + + else if (x >= (world.maxx - TRANSITIONEDGE + 1)) + what_edge = EAST + new_x = TRANSITIONEDGE + 1 + new_y = rand(TRANSITIONEDGE + 2, world.maxy - TRANSITIONEDGE - 2) + + else if (y <= TRANSITIONEDGE) + what_edge = SOUTH + new_y = world.maxy - TRANSITIONEDGE -2 + new_x = rand(TRANSITIONEDGE + 2, world.maxx - TRANSITIONEDGE - 2) + + else if (y >= (world.maxy - TRANSITIONEDGE + 1)) + what_edge = NORTH + new_y = TRANSITIONEDGE + 1 + new_x = rand(TRANSITIONEDGE + 2, world.maxx - TRANSITIONEDGE - 2) + + var/list/choices = list() + for(var/obj/effect/overmap/visitable/V in range(1, our_ship)) + choices[V.name] = V + + var/choice = input("Choose an overmap destination:", "Destination", null) as null|anything in choices + if(!choice) + var/backwards = turn(what_edge, 180) + forceMove(get_step(src,backwards)) //Move them back a step, then. + set_dir(backwards) + return + else + var/obj/effect/overmap/visitable/V = choices[choice] + if(occupant != this_occupant || this_x != x || this_y != y || this_z != z || get_dist(V,our_ship) > 1) //Sanity after user input + to_chat(occupant, "You or they appear to have moved!") + return + var/list/levels = V.get_space_zlevels() + if(!levels.len) + to_chat(occupant, "You don't appear to be able to get there from here!") + return + new_z = pick(levels) + var/turf/destination = locate(new_x, new_y, new_z) + if(!destination || destination.density) + to_chat(occupant, "You don't appear to be able to get there from here! Is it blocked?") + return + else + forceMove(destination) + //Modified phazon code /obj/mecha/combat/fighter/Topic(href, href_list) ..() @@ -97,7 +168,7 @@ /obj/mecha/combat/fighter/handle_equipment_movement() . = ..() - consider_gravity(TRUE) + consider_gravity(TRUE) /obj/mecha/combat/fighter/proc/start_hover() if(!ion_trail.on) //We'll just use this to store if we're floating or not @@ -162,7 +233,7 @@ step_in = 3 //Slightly slower than others ground_capable = TRUE - + // Paint colors! Null if not set. var/stripe1_color var/stripe2_color diff --git a/code/game/objects/effects/chem/chemsmoke.dm b/code/game/objects/effects/chem/chemsmoke.dm index 2bbb10c8af7..5538755d241 100644 --- a/code/game/objects/effects/chem/chemsmoke.dm +++ b/code/game/objects/effects/chem/chemsmoke.dm @@ -3,7 +3,7 @@ ///////////////////////////////////////////// /obj/effect/effect/smoke/chem icon = 'icons/effects/chemsmoke.dmi' - opacity = 0 + opacity = TRUE time_to_live = 300 pass_flags = PASSTABLE | PASSGRILLE | PASSGLASS //PASSGLASS is fine here, it's just so the visual effect can "flow" around glass @@ -16,6 +16,9 @@ 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 ..() +/obj/effect/effect/smoke/chem/transparent + opacity = FALSE + /datum/effect/effect/system/smoke_spread/chem smoke_type = /obj/effect/effect/smoke/chem var/obj/chemholder @@ -35,6 +38,10 @@ CRASH("Invalid seed datum passed! [seed] ([seed?.type])") ..() +/datum/effect/effect/system/smoke_spread/chem/blob + show_log = 0 + smoke_type = /obj/effect/effect/smoke/chem/transparent + /datum/effect/effect/system/smoke_spread/chem/New() ..() chemholder = new/obj() @@ -155,7 +162,7 @@ if(passed_smoke) smoke = passed_smoke else - smoke = new /obj/effect/effect/smoke/chem(location) + smoke = new smoke_type(location) if(chemholder.reagents.reagent_list.len) chemholder.reagents.trans_to_obj(smoke, chemholder.reagents.total_volume / dist, copy = 1) //copy reagents to the smoke so mob/breathe() can handle inhaling the reagents @@ -165,11 +172,13 @@ smoke.pixel_x = -32 + rand(-8, 8) smoke.pixel_y = -32 + rand(-8, 8) walk_to(smoke, T) - smoke.set_opacity(1) //switching opacity on after the smoke has spawned, and then - sleep(150+rand(0,20)) // turning it off before it is deleted results in cleaner - smoke.set_opacity(0) // lighting and view range updates - fadeOut(smoke) - qdel(smoke) + if(initial(smoke.opacity)) + smoke.set_opacity(1) //switching opacity on after the smoke has spawned, and then + spawn() + sleep(150+rand(0,20)) // turning it off before it is deleted results in cleaner + smoke.set_opacity(0) // lighting and view range updates + fadeOut(smoke) + qdel(smoke) /datum/effect/effect/system/smoke_spread/chem/spores/spawnSmoke(var/turf/T, var/icon/I, var/dist = 1) var/obj/effect/effect/smoke/chem/spores = new /obj/effect/effect/smoke/chem(location) diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 7d5275cbcd8..00896e71073 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -238,6 +238,15 @@ steam.start() -- spawns the effect if(prob(25)) L.emote("cough") +/obj/effect/effect/smoke/bad/noxious + opacity = 0 + +/obj/effect/effect/smoke/bad/noxious/affect(var/mob/living/L) + if (!..()) + return 0 + if(L.needs_to_breathe()) + L.adjustToxLoss(1) + /* Not feasile until a later date /obj/effect/effect/smoke/bad/Crossed(atom/movable/M as mob|obj) ..() @@ -369,6 +378,9 @@ steam.start() -- spawns the effect /datum/effect/effect/system/smoke_spread/bad smoke_type = /obj/effect/effect/smoke/bad +/datum/effect/effect/system/smoke_spread/noxious + smoke_type = /obj/effect/effect/smoke/bad/noxious + /datum/effect/effect/system/smoke_spread/fire smoke_type = /obj/effect/effect/smoke/elemental/fire diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 193d24d4aba..68c23322f74 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -24,6 +24,7 @@ return if("JoinLate") // Bit difference, since we need the spawn point to move. latejoin += src + simulated = 1 // delete_me = 1 return if("JoinLateGateway") diff --git a/code/game/objects/effects/map_effects/map_effects.dm b/code/game/objects/effects/map_effects/map_effects.dm index 9e2986072d8..d5bad866620 100644 --- a/code/game/objects/effects/map_effects/map_effects.dm +++ b/code/game/objects/effects/map_effects/map_effects.dm @@ -1,72 +1,69 @@ -// 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 +// 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 = 5 SECONDS // How long until we check for players again. + var/next_attempt = 0 // Next time we're going to do ACTUAL WORK + +/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. + +/obj/effect/map_effect/interval/Initialize() + . = ..() + START_PROCESSING(SSobj, src) + +/obj/effect/map_effect/interval/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + +// Override this for the specific thing to do. +/obj/effect/map_effect/interval/proc/trigger() + return + +// Handles the delay and making sure it doesn't run when it would be bad. +/obj/effect/map_effect/interval/process() + //Not yet! + if(world.time < next_attempt) + return + + // Check to see if we're useful first. + if(!always_run && !check_for_player_proximity(src, proximity_needed, ignore_ghosts, ignore_afk)) + next_attempt = world.time + retry_delay + // Hey there's someone nearby. + else + next_attempt = world.time + rand(interval_lower_bound, interval_upper_bound) + 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 diff --git a/code/game/objects/effects/misc.dm b/code/game/objects/effects/misc.dm index 98f10d6040c..d7ab1ebfa64 100644 --- a/code/game/objects/effects/misc.dm +++ b/code/game/objects/effects/misc.dm @@ -40,12 +40,9 @@ /obj/effect/temporary_effect/shuttle_landing name = "shuttle landing" desc = "You better move if you don't want to go splat!" - icon_state = "shuttle_warning_still" - time_to_die = 4.9 SECONDS - -/obj/effect/temporary_effect/shuttle_landing/Initialize() - flick("shuttle_warning", src) // flick() forces the animation to always begin at the start. - . = ..() + icon = 'icons/goonstation/featherzone.dmi' + icon_state = "hazard-corners" + time_to_die = 5 SECONDS // The manifestation of Zeus's might. Or just a really unlucky day. // This is purely a visual effect, this isn't the part of the code that hurts things. diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 3e107738002..f6422259d33 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -286,6 +286,9 @@ grow_as = list(/mob/living/simple_mob/animal/giant_spider, /mob/living/simple_mob/animal/giant_spider/hunter) +/obj/effect/spider/spiderling/non_growing + amount_grown = -1 + /obj/effect/decal/cleanable/spiderling_remains name = "spiderling remains" desc = "Green squishy mess." diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index 1a8b10a26a1..8241cfd85dc 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -154,6 +154,15 @@ QDEL_NULL(tank) return ..() +/obj/structure/closet/body_bag/cryobag/attack_hand(mob/living/user) + if(used) + var/confirm = alert(user, "Are you sure you want to open \the [src]? \ + \The [src] will expire upon opening it.", "Confirm Opening", "No", "Yes") + if(confirm == "Yes") + ..() // Will call `toggle()` and open the bag. + else + ..() + /obj/structure/closet/body_bag/cryobag/open() . = ..() if(used) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index a3f66d1f927..6deb8370066 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -65,6 +65,8 @@ var/global/list/obj/item/device/pda/PDAs = list() var/obj/item/device/paicard/pai = null // A slot for a personal AI device + var/spam_proof = FALSE // If true, it can't be spammed by random events. + /obj/item/device/pda/examine(mob/user) if(..(user, 1)) to_chat(user, "The time [stationtime2text()] is displayed in the corner of the screen.") @@ -334,6 +336,8 @@ var/global/list/obj/item/device/pda/PDAs = list() /obj/item/device/pda/ai/pai ttone = "assist" +/obj/item/device/pda/ai/shell + spam_proof = TRUE // Since empty shells get a functional PDA. // Used for the PDA multicaster, which mirrors messages sent to it to a specific department, /obj/item/device/pda/multicaster @@ -342,6 +346,7 @@ var/global/list/obj/item/device/pda/PDAs = list() ttone = "data" detonate = 0 news_silent = 1 + spam_proof = TRUE // Spam messages don't actually work and its difficult to disable these. var/list/cartridges_to_send_to = list() // This is what actually mirrors the message, @@ -1195,6 +1200,15 @@ var/global/list/obj/item/device/pda/PDAs = list() log_pda("(PDA: [sending_unit]) sent \"[message]\" to [name]",usr) new_message = 1 +/obj/item/device/pda/proc/spam_message(sender, message) + var/reception_message = "\icon[src] Message from [sender] (Unknown / spam?), \"[message]\" (Unable to Reply)" + new_info(message_silent, ttone, reception_message) + + if(prob(50)) // Give the AI an increased chance to intercept the message + for(var/mob/living/silicon/ai/ai in mob_list) + if(ai.aiPDA != src) + ai.show_message("Intercepted message from [sender] (Unknown / spam?) to [owner]: [message]") + /obj/item/device/pda/verb/verb_reset_pda() set category = "Object" set name = "Reset PDA" diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index 2a662ea5ff2..1ca1ae65065 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -256,7 +256,7 @@ var/list/civilian_cartridges = list( var/datum/signal/status_signal = new status_signal.source = src - status_signal.transmission_method = 1 + status_signal.transmission_method = TRANSMISSION_RADIO status_signal.data["command"] = command switch(command) diff --git a/code/game/objects/items/devices/PDA/radio.dm b/code/game/objects/items/devices/PDA/radio.dm index 56ec64d8a75..133798e4b18 100644 --- a/code/game/objects/items/devices/PDA/radio.dm +++ b/code/game/objects/items/devices/PDA/radio.dm @@ -22,7 +22,7 @@ var/datum/signal/signal = new() signal.source = src - signal.transmission_method = 1 + signal.transmission_method = TRANSMISSION_RADIO signal.data[key] = value if(key2) signal.data[key2] = value2 diff --git a/code/game/objects/items/devices/communicator/cartridge.dm b/code/game/objects/items/devices/communicator/cartridge.dm index b1c3bd41f2c..120df593e92 100644 --- a/code/game/objects/items/devices/communicator/cartridge.dm +++ b/code/game/objects/items/devices/communicator/cartridge.dm @@ -329,7 +329,7 @@ var/datum/signal/status_signal = new status_signal.source = src - status_signal.transmission_method = 1 + status_signal.transmission_method = TRANSMISSION_RADIO status_signal.data["command"] = command switch(command) diff --git a/code/game/objects/items/devices/defib.dm b/code/game/objects/items/devices/defib.dm index 9d95fd23045..80d9dc081bc 100644 --- a/code/game/objects/items/devices/defib.dm +++ b/code/game/objects/items/devices/defib.dm @@ -287,9 +287,8 @@ return null /obj/item/weapon/shockpaddles/proc/can_revive(mob/living/carbon/human/H) //This is checked right before attempting to revive - - var/deadtime = world.time - H.timeofdeath - if (deadtime > DEFIB_TIME_LIMIT && !H.isSynthetic()) + var/obj/item/organ/internal/brain/brain = H.internal_organs_by_name[O_BRAIN] + if(H.should_have_organ(O_BRAIN) && (!brain || brain.defib_timer <= 0 ) ) return "buzzes, \"Resuscitation failed - Excessive neural degeneration. Further attempts futile.\"" H.updatehealth() @@ -487,8 +486,6 @@ add_attack_logs(user,H,"Shocked using [name]") /obj/item/weapon/shockpaddles/proc/make_alive(mob/living/carbon/human/M) //This revives the mob - var/deadtime = world.time - M.timeofdeath - dead_mob_list.Remove(M) if((M in living_mob_list) || (M in dead_mob_list)) WARNING("Mob [M] was defibbed but already in the living or dead list still!") @@ -502,17 +499,33 @@ M.emote("gasp") M.Weaken(rand(10,25)) M.updatehealth() - apply_brain_damage(M, deadtime) + apply_brain_damage(M) + // SSgame_master.adjust_danger(-20) // VOREStation Edit - We don't use SSgame_master yet. -/obj/item/weapon/shockpaddles/proc/apply_brain_damage(mob/living/carbon/human/H, var/deadtime) - if(deadtime < DEFIB_TIME_LOSS) return - - if(!H.should_have_organ(O_BRAIN)) return //no brain +/obj/item/weapon/shockpaddles/proc/apply_brain_damage(mob/living/carbon/human/H) + if(!H.should_have_organ(O_BRAIN)) + return // No brain. var/obj/item/organ/internal/brain/brain = H.internal_organs_by_name[O_BRAIN] - if(!brain) return //no brain + if(!brain) + return // Still no brain. + + // If the brain'd `defib_timer` var gets below this number, brain damage will happen at a linear rate. + // This is measures in `Life()` ticks. E.g. 10 minute defib timer = 6000 world.time units = 3000 `Life()` ticks. + var/brain_damage_timer = ((config.defib_timer MINUTES) / 2) - ((config.defib_braindamage_timer MINUTES) / 2) + + if(brain.defib_timer > brain_damage_timer) + return // They got revived before brain damage got a chance to set in. + + // As the brain decays, this will be between 0 and 1, with 1 being the most fresh. + var/brain_death_scale = brain.defib_timer / brain_damage_timer + + // This is backwards from what you might expect, since 1 = fresh and 0 = rip. + var/damage_calc = LERP(brain.max_damage, H.getBrainLoss(), brain_death_scale) + + // A bit of sanity. + var/brain_damage = between(H.getBrainLoss(), damage_calc, 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) diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm index 0cac9027966..562ed569902 100644 --- a/code/game/objects/items/devices/gps.dm +++ b/code/game/objects/items/devices/gps.dm @@ -83,7 +83,7 @@ var/list/GPS_list = list() dat["curr_z_name"] = using_map.get_zlevel_name(curr.z) dat["gps_list"] = list() dat["z_level_detection"] = using_map.get_map_levels(curr.z, long_range) - + for(var/obj/item/device/gps/G in GPS_list - src) if(!G.tracking || G.emped || G.hide_signal) continue diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 278d911f0ef..69b5192abbd 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -52,6 +52,13 @@ var/global/list/default_medbay_channels = list( w_class = ITEMSIZE_SMALL show_messages = 1 + // Bluespace radios talk directly to telecomms equipment + var/bluespace_radio = FALSE + var/weakref/bs_tx_weakref //Maybe misleading, this is the device to TRANSMIT TO + // For mappers or subtypes, to start them prelinked to these devices + var/bs_tx_preload_id + var/bs_rx_preload_id + matter = list("glass" = 25,DEFAULT_WALL_MATERIAL = 75) var/const/FREQ_LISTENING = 1 var/list/internal_channels @@ -90,6 +97,43 @@ var/global/list/default_medbay_channels = list( for (var/ch_name in channels) secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT) + if(bluespace_radio) + if(bs_tx_preload_id) + //Try to find a receiver + for(var/obj/machinery/telecomms/receiver/RX in telecomms_list) + if(RX.id == bs_tx_preload_id) //Again, bs_tx is the thing to TRANSMIT TO, so a receiver. + bs_tx_weakref = weakref(RX) + RX.link_radio(src) + break + //Hmm, howabout an AIO machine + if(!bs_tx_weakref) + for(var/obj/machinery/telecomms/allinone/AIO in telecomms_list) + if(AIO.id == bs_tx_preload_id) + bs_tx_weakref = weakref(AIO) + AIO.link_radio(src) + break + if(!bs_tx_weakref) + testing("A radio [src] at [x],[y],[z] specified bluespace prelink IDs, but the machines with corresponding IDs ([bs_tx_preload_id], [bs_rx_preload_id]) couldn't be found.") + + if(bs_rx_preload_id) + var/found = 0 + //Try to find a transmitter + for(var/obj/machinery/telecomms/broadcaster/TX in telecomms_list) + if(TX.id == bs_rx_preload_id) //Again, bs_rx is the thing to RECEIVE FROM, so a transmitter. + TX.link_radio(src) + found = 1 + break + //Hmm, howabout an AIO machine + if(!found) + for(var/obj/machinery/telecomms/allinone/AIO in telecomms_list) + if(AIO.id == bs_rx_preload_id) + AIO.link_radio(src) + found = 1 + break + if(!found) + testing("A radio [src] at [x],[y],[z] specified bluespace prelink IDs, but the machines with corresponding IDs ([bs_tx_preload_id], [bs_rx_preload_id]) couldn't be found.") + + /obj/item/device/radio/attack_self(mob/user as mob) user.set_machine(src) interact(user) @@ -240,11 +284,10 @@ var/global/list/default_medbay_channels = list( if(.) SSnanoui.update_uis(src) -/obj/item/device/radio/proc/autosay(var/message, var/from, var/channel) //BS12 EDIT +/obj/item/device/radio/proc/autosay(var/message, var/from, var/channel, var/list/zlevels) //BS12 EDIT var/datum/radio_frequency/connection = null if(channel && channels && channels.len > 0) if (channel == "department") - //to_world("DEBUG: channel=\"[channel]\" switching to \"[channels[1]]\"") channel = channels[1] connection = secure_radio_connections[channel] else @@ -253,12 +296,15 @@ var/global/list/default_medbay_channels = list( if (!istype(connection)) return + if(!LAZYLEN(zlevels)) + zlevels = list(0) + var/static/mob/living/silicon/ai/announcer/A = new /mob/living/silicon/ai/announcer(src, null, null, 1) A.SetName(from) Broadcast_Message(connection, A, 0, "*garbled automated announcement*", src, message, from, "Automated Announcement", from, "synthesized voice", - 4, 0, list(0), connection.frequency, "states") + 4, 0, zlevels, connection.frequency, "states") // Interprets the message mode when talking into a radio, possibly returning a connection datum /obj/item/device/radio/proc/handle_message_mode(mob/living/M as mob, message, message_mode) @@ -310,7 +356,7 @@ var/global/list/default_medbay_channels = list( if (!istype(connection)) return FALSE - var/turf/position = get_turf(src) + var/pos_z = get_z(src) //#### Tagging the signal with all appropriate identity values ####// @@ -359,10 +405,63 @@ var/global/list/default_medbay_channels = list( jobname = "Unknown" voicemask = 1 + // First, we want to generate a new radio signal + var/datum/signal/signal = new + // --- Finally, tag the actual signal with the appropriate values --- + signal.data = list( + // Identity-associated tags: + "mob" = M, // store a reference to the mob + "mobtype" = M.type, // the mob's type + "realname" = real_name, // the mob's real name + "name" = displayname, // the mob's display name + "job" = jobname, // the mob's job + "key" = mobkey, // the mob's key + "vmessage" = pick(M.speak_emote), // the message to display if the voice wasn't understood + "vname" = M.voice_name, // the name to display if the voice wasn't understood + "vmask" = voicemask, // 1 if the mob is using a voice gas mask - /* ###### Radio headsets can only broadcast through subspace ###### */ - if(subspace_transmission) + // We store things that would otherwise be kept in the actual mob + // so that they can be logged even AFTER the mob is deleted or something + + // Other tags: + "compression" = rand(45,50), // compressed radio signal + "message" = message, // the actual sent message + "connection" = connection, // the radio connection to use + "radio" = src, // stores the radio used for transmission + "slow" = 0, // how much to sleep() before broadcasting - simulates net lag + "traffic" = 0, // dictates the total traffic sum that the signal went through + "type" = SIGNAL_NORMAL, // determines what type of radio input it is: normal broadcast + "server" = null, // the last server to log this signal + "reject" = 0, // if nonzero, the signal will not be accepted by any broadcasting machinery + "level" = pos_z, // The source's z level + "language" = speaking, + "verb" = verb + ) + signal.frequency = connection.frequency // Quick frequency set + + var/filter_type = DATA_LOCAL //If we end up having to send it the old fashioned way, it's with this data var. + + /* ###### Bluespace radios talk directly to receivers (and only directly to receivers) ###### */ + if(bluespace_radio) + //Nothing to transmit to + if(!bs_tx_weakref) + to_chat(loc, "\The [src] buzzes to inform you of the lack of a functioning connection.") + return FALSE + + var/obj/machinery/telecomms/tx_to = bs_tx_weakref.resolve() + //Was linked, now destroyed or something + if(!tx_to) + bs_tx_weakref = null + to_chat(loc, "\The [src] buzzes to inform you of the lack of a functioning connection.") + return FALSE + + //Transmitted in the blind. If we get a message back, cool. If not, oh well. + signal.transmission_method = TRANSMISSION_BLUESPACE + return tx_to.receive_signal(signal) + + /* ###### Radios with subspace_transmission can only broadcast through subspace (unless they have adhoc_fallback) ###### */ + else if(subspace_transmission) var/list/jamming = is_jammed(src) if(jamming) var/distance = jamming["distance"] @@ -370,43 +469,9 @@ var/global/list/default_medbay_channels = list( return FALSE // First, we want to generate a new radio signal - var/datum/signal/signal = new - signal.transmission_method = 2 // 2 would be a subspace transmission. - // transmission_method could probably be enumerated through #define. Would be neater. + signal.transmission_method = TRANSMISSION_SUBSPACE - // --- Finally, tag the actual signal with the appropriate values --- - signal.data = list( - // Identity-associated tags: - "mob" = M, // store a reference to the mob - "mobtype" = M.type, // the mob's type - "realname" = real_name, // the mob's real name - "name" = displayname, // the mob's display name - "job" = jobname, // the mob's job - "key" = mobkey, // the mob's key - "vmessage" = pick(M.speak_emote), // the message to display if the voice wasn't understood - "vname" = M.voice_name, // the name to display if the voice wasn't understood - "vmask" = voicemask, // 1 if the mob is using a voice gas mask - - // We store things that would otherwise be kept in the actual mob - // so that they can be logged even AFTER the mob is deleted or something - - // Other tags: - "compression" = rand(45,50), // compressed radio signal - "message" = message, // the actual sent message - "connection" = connection, // the radio connection to use - "radio" = src, // stores the radio used for transmission - "slow" = 0, // how much to sleep() before broadcasting - simulates net lag - "traffic" = 0, // dictates the total traffic sum that the signal went through - "type" = 0, // determines what type of radio input it is: normal broadcast - "server" = null, // the last server to log this signal - "reject" = 0, // if nonzero, the signal will not be accepted by any broadcasting machinery - "level" = position.z, // The source's z level - "language" = speaking, - "verb" = verb - ) - signal.frequency = connection.frequency // Quick frequency set - - //#### Sending the signal to all subspace receivers ####// + //#### Sending the signal to all subspace receivers ####// for(var/obj/machinery/telecomms/receiver/R in telecomms_list) R.receive_signal(signal) @@ -416,84 +481,47 @@ var/global/list/default_medbay_channels = list( R.receive_signal(signal) // Receiving code can be located in Telecommunications.dm - if(signal.data["done"] && position.z in signal.data["level"]) + if(signal.data["done"] && (pos_z in signal.data["level"])) return TRUE //Huzzah, sent via subspace else if(adhoc_fallback) //Less huzzah, we have to fallback to_chat(loc, "\The [src] pings as it falls back to local radio transmission.") subspace_transmission = FALSE - return Broadcast_Message(connection, M, voicemask, pick(M.speak_emote), - src, message, displayname, jobname, real_name, M.voice_name, - signal.transmission_method, signal.data["compression"], GetConnectedZlevels(position.z), connection.frequency,verb,speaking) - /* ###### Intercoms and station-bounced radios ###### */ + else //Oh well + return FALSE - var/filter_type = 2 + /* ###### Intercoms and station-bounced radios ###### */ + else + /* --- Intercoms can only broadcast to other intercoms, but bounced radios can broadcast to bounced radios and intercoms --- */ + if(istype(src, /obj/item/device/radio/intercom)) + filter_type = DATA_INTERCOM - /* --- Intercoms can only broadcast to other intercoms, but bounced radios can broadcast to bounced radios and intercoms --- */ - if(istype(src, /obj/item/device/radio/intercom)) - filter_type = 1 + /* --- Try to send a normal subspace broadcast first */ + signal.transmission_method = TRANSMISSION_SUBSPACE + signal.data["compression"] = 0 + for(var/obj/machinery/telecomms/receiver/R in telecomms_list) + R.receive_signal(signal) - var/datum/signal/signal = new - signal.transmission_method = 2 - - - /* --- Try to send a normal subspace broadcast first */ - - signal.data = list( - - "mob" = M, // store a reference to the mob - "mobtype" = M.type, // the mob's type - "realname" = real_name, // the mob's real name - "name" = displayname, // the mob's display name - "job" = jobname, // the mob's job - "key" = mobkey, // the mob's key - "vmessage" = pick(M.speak_emote), // the message to display if the voice wasn't understood - "vname" = M.voice_name, // the name to display if the voice wasn't understood - "vmask" = voicemask, // 1 if the mob is using a voice gas mas - - "compression" = 0, // uncompressed radio signal - "message" = message, // the actual sent message - "connection" = connection, // the radio connection to use - "radio" = src, // stores the radio used for transmission - "slow" = 0, - "traffic" = 0, - "type" = 0, - "server" = null, - "reject" = 0, - "level" = position.z, - "language" = speaking, - "verb" = verb - ) - signal.frequency = connection.frequency // Quick frequency set + // Allinone can act as receivers. + for(var/obj/machinery/telecomms/allinone/R in telecomms_list) + R.receive_signal(signal) for(var/obj/machinery/telecomms/receiver/R in telecomms_list) R.receive_signal(signal) - if(signal.data["done"] && position.z in signal.data["level"]) - if(adhoc_fallback) - to_chat(loc, "\The [src] pings as it reestablishes subspace communications.") - subspace_transmission = TRUE - // we're done here. - return TRUE - - // Oh my god; the comms are down or something because the signal hasn't been broadcasted yet in our level. - // Send a mundane broadcast with limited targets: - - //THIS IS TEMPORARY. YEAH RIGHT - if(!connection) return FALSE //~Carn - -//VOREStation Add Start - if(bluespace_radio) - return Broadcast_Message(connection, M, voicemask, pick(M.speak_emote), - src, message, displayname, jobname, real_name, M.voice_name, - 0, signal.data["compression"], list(0), connection.frequency,verb,speaking) -//VOREStation Add End + if(signal.data["done"] && pos_z in signal.data["level"]) + if(adhoc_fallback) + to_chat(loc, "\The [src] pings as it reestablishes subspace communications.") + subspace_transmission = TRUE + // we're done here. + return TRUE + //Nothing handled any sort of remote radio-ing and returned before now, just squawk on this zlevel. return Broadcast_Message(connection, M, voicemask, pick(M.speak_emote), - src, message, displayname, jobname, real_name, M.voice_name, - filter_type, signal.data["compression"], GetConnectedZlevels(position.z), connection.frequency,verb,speaking) + src, message, displayname, jobname, real_name, M.voice_name, + filter_type, signal.data["compression"], using_map.get_map_levels(pos_z), connection.frequency, verb, speaking) /obj/item/device/radio/hear_talk(mob/M as mob, msg, var/verb = "says", var/datum/language/speaking = null) @@ -502,33 +530,20 @@ var/global/list/default_medbay_channels = list( talk_into(M, msg,null,verb,speaking) -/* -/obj/item/device/radio/proc/accept_rad(obj/item/device/radio/R as obj, message) - - if ((R.frequency == frequency && message)) - return TRUE - else if - - else - return null - return -*/ - /obj/item/device/radio/proc/receive_range(freq, level) // check if this radio can receive on the given frequency, and if so, // what the range is in which mobs will hear the radio // returns: -1 if can't receive, range otherwise - - if (wires.IsIndexCut(WIRE_RECEIVE)) + if(wires.IsIndexCut(WIRE_RECEIVE)) return -1 if(!listening) return -1 if(is_jammed(src)) return -1 if(!(0 in level)) - var/turf/position = get_turf(src) - if((!position || !(position.z in level)) && !bluespace_radio) //VOREStation Edit + var/pos_z = get_z(src) + if(!(pos_z in level)) return -1 if(freq in ANTAG_FREQS) if(!(src.syndie))//Checks to see if it's allowed on that frequency, based on the encryption keys diff --git a/code/game/objects/items/devices/radio/radio_vr.dm b/code/game/objects/items/devices/radio/radio_vr.dm index 86a16280fc9..aa12444576e 100644 --- a/code/game/objects/items/devices/radio/radio_vr.dm +++ b/code/game/objects/items/devices/radio/radio_vr.dm @@ -1,6 +1,3 @@ -/obj/item/device/radio - var/bluespace_radio = FALSE - /obj/item/device/radio/phone subspace_transmission = 1 canhear_range = 0 @@ -17,132 +14,20 @@ ..() internal_channels = default_medbay_channels.Copy() -//Pathfinder's Subspace Radio -/obj/item/device/subspaceradio - name = "subspace radio" - desc = "A powerful new radio recently gifted to Nanotrasen from KHI, this communications device has the ability to send and recieve transmissions from anywhere." - catalogue_data = list(/datum/category_item/catalogue/information/organization/khi) - icon = 'icons/vore/custom_items_vr.dmi' - icon_override = 'icons/mob/back_vr.dmi' - icon_state = "radiopack" - item_state = "radiopack" - slot_flags = SLOT_BACK - force = 5 - throwforce = 6 - preserve_item = 1 - w_class = ITEMSIZE_LARGE - action_button_name = "Remove/Replace Handset" - var/obj/item/device/radio/subspacehandset/linked/handset -/obj/item/device/subspaceradio/New() //starts without a cell for rnd - ..() - if(ispath(handset)) - handset = new handset(src, src) - else - handset = new(src, src) +/obj/item/device/bluespaceradio/tether_prelinked + name = "bluespace radio (tether)" + handset = /obj/item/device/radio/bluespacehandset/linked/tether_prelinked -/obj/item/device/subspaceradio/Destroy() - . = ..() - QDEL_NULL(handset) +/obj/item/device/radio/bluespacehandset/linked/tether_prelinked + bs_tx_preload_id = "tether_rx" //Transmit to a receiver + bs_rx_preload_id = "tether_tx" //Recveive from a transmitter -/obj/item/device/subspaceradio/ui_action_click() - toggle_handset() +/obj/item/device/bluespaceradio/talon_prelinked + name = "bluespace radio (talon)" + handset = /obj/item/device/radio/bluespacehandset/linked/talon_prelinked -/obj/item/device/subspaceradio/attack_hand(mob/user) - if(loc == user) - toggle_handset() - else - ..() - -/obj/item/device/subspaceradio/MouseDrop() - if(ismob(loc)) - if(!CanMouseDrop(src)) - return - var/mob/M = loc - if(!M.unEquip(src)) - return - add_fingerprint(usr) - M.put_in_any_hand_if_possible(src) - -/obj/item/device/subspaceradio/attackby(obj/item/weapon/W, mob/user, params) - if(W == handset) - reattach_handset(user) - else - return ..() - -/obj/item/device/subspaceradio/verb/toggle_handset() - set name = "Toggle Handset" - set category = "Object" - - var/mob/living/carbon/human/user = usr - if(!handset) - to_chat(user, "The handset is missing!") - return - - if(handset.loc != src) - reattach_handset(user) //Remove from their hands and back onto the defib unit - return - - if(!slot_check()) - to_chat(user, "You need to equip [src] before taking out [handset].") - else - if(!usr.put_in_hands(handset)) //Detach the handset into the user's hands - to_chat(user, "You need a free hand to hold the handset!") - update_icon() //success - -//checks that the base unit is in the correct slot to be used -/obj/item/device/subspaceradio/proc/slot_check() - var/mob/M = loc - if(!istype(M)) - return 0 //not equipped - - if((slot_flags & SLOT_BACK) && M.get_equipped_item(slot_back) == src) - return 1 - if((slot_flags & SLOT_BACK) && M.get_equipped_item(slot_s_store) == src) - return 1 - - return 0 - -/obj/item/device/subspaceradio/dropped(mob/user) - ..() - reattach_handset(user) //handset attached to a base unit should never exist outside of their base unit or the mob equipping the base unit - -/obj/item/device/subspaceradio/proc/reattach_handset(mob/user) - if(!handset) return - - if(ismob(handset.loc)) - var/mob/M = handset.loc - if(M.drop_from_inventory(handset, src)) - to_chat(user, "\The [handset] snaps back into the main unit.") - else - handset.forceMove(src) - -//Subspace Radio Handset -/obj/item/device/radio/subspacehandset - name = "subspace radio handset" - desc = "A large walkie talkie attached to the subspace radio by a retractable cord. It sits comfortably on a slot in the radio when not in use." - bluespace_radio = TRUE - icon_state = "signaller" - slot_flags = null - w_class = ITEMSIZE_LARGE - -/obj/item/device/radio/subspacehandset/linked - var/obj/item/device/subspaceradio/base_unit - -/obj/item/device/radio/subspacehandset/linked/New(newloc, obj/item/device/subspaceradio/radio) - base_unit = radio - ..(newloc) - -/obj/item/device/radio/subspacehandset/linked/Destroy() - if(base_unit) - //ensure the base unit's icon updates - if(base_unit.handset == src) - base_unit.handset = null - base_unit = null - return ..() - -/obj/item/device/radio/subspacehandset/linked/dropped(mob/user) - ..() //update twohanding - if(base_unit) - base_unit.reattach_handset(user) //handset attached to a base unit should never exist outside of their base unit or the mob equipping the base unit +/obj/item/device/radio/bluespacehandset/linked/talon_prelinked + bs_tx_preload_id = "talon_aio" //Transmit to a receiver + bs_rx_preload_id = "talon_aio" //Recveive from a transmitter \ No newline at end of file diff --git a/code/game/objects/items/devices/radio/radiopack.dm b/code/game/objects/items/devices/radio/radiopack.dm new file mode 100644 index 00000000000..c2ba25ecc2f --- /dev/null +++ b/code/game/objects/items/devices/radio/radiopack.dm @@ -0,0 +1,153 @@ +/obj/item/device/bluespaceradio + name = "bluespace radio" + desc = "A powerful radio that uses a tiny bluespace wormhole to send signals directly to subspace receivers and transmitters, bypassing the limitations of subspace." + icon = 'icons/obj/radio.dmi' + icon_state = "radiopack" + item_state = "radiopack" + slot_flags = SLOT_BACK + force = 5 + throwforce = 6 + preserve_item = 1 + w_class = ITEMSIZE_LARGE + action_button_name = "Remove/Replace Handset" + + var/obj/item/device/radio/bluespacehandset/linked/handset = /obj/item/device/radio/bluespacehandset/linked + +/obj/item/device/bluespaceradio/Initialize() + . = ..() + if(ispath(handset)) + handset = new handset(src, src) + +/obj/item/device/bluespaceradio/Destroy() + . = ..() + QDEL_NULL(handset) + +/obj/item/device/bluespaceradio/ui_action_click() + toggle_handset() + +/obj/item/device/bluespaceradio/attack_hand(var/mob/user) + if(loc == user) + toggle_handset() + else + ..() + +/obj/item/device/bluespaceradio/MouseDrop() + if(ismob(loc)) + if(!CanMouseDrop(src)) + return + var/mob/M = loc + if(!M.unEquip(src)) + return + add_fingerprint(usr) + M.put_in_any_hand_if_possible(src) + +/obj/item/device/bluespaceradio/attackby(var/obj/item/weapon/W, var/mob/user, var/params) + if(W == handset) + reattach_handset(user) + else + return ..() + +/obj/item/device/bluespaceradio/verb/toggle_handset() + set name = "Toggle Handset" + set category = "Object" + + var/mob/living/carbon/human/user = usr + if(!handset) + to_chat(user, "The handset is missing!") + return + + if(handset.loc != src) + reattach_handset(user) //Remove from their hands and back onto the defib unit + return + + if(!slot_check()) + to_chat(user, "You need to equip [src] before taking out [handset].") + else + if(!usr.put_in_hands(handset)) //Detach the handset into the user's hands + to_chat(user, "You need a free hand to hold the handset!") + update_icon() //success + +//checks that the base unit is in the correct slot to be used +/obj/item/device/bluespaceradio/proc/slot_check() + var/mob/M = loc + if(!istype(M)) + return 0 //not equipped + + if((slot_flags & SLOT_BACK) && M.get_equipped_item(slot_back) == src) + return 1 + if((slot_flags & SLOT_BACK) && M.get_equipped_item(slot_s_store) == src) + return 1 + + return 0 + +/obj/item/device/bluespaceradio/dropped(var/mob/user) + ..() + reattach_handset(user) //handset attached to a base unit should never exist outside of their base unit or the mob equipping the base unit + +/obj/item/device/bluespaceradio/proc/reattach_handset(var/mob/user) + if(!handset) return + + if(ismob(handset.loc)) + var/mob/M = handset.loc + if(M.drop_from_inventory(handset, src)) + to_chat(user, "\The [handset] snaps back into the main unit.") + else + handset.forceMove(src) + +//Subspace Radio Handset +/obj/item/device/radio/bluespacehandset + name = "bluespace radio handset" + desc = "A large walkie talkie attached to the bluespace radio by a retractable cord. It sits comfortably on a slot in the radio when not in use." + bluespace_radio = TRUE + icon_state = "signaller" + slot_flags = null + w_class = ITEMSIZE_LARGE + canhear_range = 1 + +/obj/item/device/radio/bluespacehandset/linked + var/obj/item/device/bluespaceradio/base_unit + +/obj/item/device/radio/bluespacehandset/linked/Initialize(mapload, var/obj/item/device/bluespaceradio/radio) + base_unit = radio + . = ..() + +/obj/item/device/radio/bluespacehandset/linked/Destroy() + if(base_unit) + //ensure the base unit's icon updates + if(base_unit.handset == src) + base_unit.handset = null + base_unit = null + return ..() + +/obj/item/device/radio/bluespacehandset/linked/dropped(var/mob/user) + ..() //update twohanding + if(base_unit) + base_unit.reattach_handset(user) //handset attached to a base unit should never exist outside of their base unit or the mob equipping the base unit + +/obj/item/device/radio/bluespacehandset/linked/receive_range(var/freq, var/list/level) + //Only care about megabroadcasts or things that are targeted at us + if(!(0 in level)) + return -1 + if(wires.IsIndexCut(WIRE_RECEIVE)) + return -1 + if(!listening) + return -1 + if(is_jammed(src)) + return -1 + if (!on) + return -1 + if (!freq) //recieved on main frequency + if (!listening) + return -1 + else + var/accept = (freq==frequency && listening) + if (!accept) + for (var/ch_name in channels) + var/datum/radio_frequency/RF = secure_radio_connections[ch_name] + if (RF && RF.frequency==freq && (channels[ch_name]&FREQ_LISTENING)) + accept = 1 + break + if (!accept) + return -1 + + return canhear_range diff --git a/code/game/objects/items/devices/uplink.dm b/code/game/objects/items/devices/uplink.dm index 8fc70a14e64..5a19c72742b 100644 --- a/code/game/objects/items/devices/uplink.dm +++ b/code/game/objects/items/devices/uplink.dm @@ -110,7 +110,7 @@ GLOBAL_LIST_BOILERPLATE(world_uplinks, /obj/item/device/uplink) // update the ui if it exists, returns null if no ui is passed/found ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) // No auto-refresh - ui = new(user, src, ui_key, "uplink.tmpl", title, 450, 600, state = inventory_state) + ui = new(user, src, ui_key, "uplink.tmpl", title, 630, 700, state = inventory_state) data["menu"] = 0 ui.set_initial_data(data) ui.open() @@ -144,8 +144,8 @@ GLOBAL_LIST_BOILERPLATE(world_uplinks, /obj/item/device/uplink) nanoui_menu = text2num(href_list["menu"]) if(href_list["id"]) exploit_id = href_list["id"] - if(href_list["category"]) - category = locate(href_list["category"]) in uplink.categories + else if(href_list["category"]) + category = locate(href_list["category"]) in uplink.categories update_nano_data() return 1 @@ -160,14 +160,17 @@ GLOBAL_LIST_BOILERPLATE(world_uplinks, /obj/item/device/uplink) nanoui_data["discount_name"] = discount_item ? discount_item.name : "" nanoui_data["discount_amount"] = (1-discount_amount)*100 nanoui_data["offer_expiry"] = worldtime2stationtime(next_offer_time) - else if(nanoui_menu == 1) - var/items[0] - for(var/datum/uplink_item/item in category.items) - if(item.can_view(src)) - var/cost = item.cost(uses, src) - if(!cost) cost = "???" - items[++items.len] = list("name" = item.name, "description" = replacetext(item.description(), "\n", "
"), "can_buy" = item.can_buy(src), "cost" = cost, "ref" = "\ref[item]") - nanoui_data["items"] = items + + if(category) + nanoui_data["current_category"] = category.name + var/items[0] + for(var/datum/uplink_item/item in category.items) + if(item.can_view(src)) + var/cost = item.cost(uses, src) + if(!cost) cost = "???" + items[++items.len] = list("name" = item.name, "description" = replacetext(item.description(), "\n", "
"), "can_buy" = item.can_buy(src), "cost" = cost, "ref" = "\ref[item]") + nanoui_data["items"] = items + else if(nanoui_menu == 2) var/permanentData[0] for(var/datum/data/record/L in sortRecord(data_core.locked)) diff --git a/code/game/objects/items/weapons/circuitboards/computer/computer.dm b/code/game/objects/items/weapons/circuitboards/computer/computer.dm index 2190650d67e..91b09022a54 100644 --- a/code/game/objects/items/weapons/circuitboards/computer/computer.dm +++ b/code/game/objects/items/weapons/circuitboards/computer/computer.dm @@ -177,6 +177,30 @@ build_path = /obj/machinery/computer/aifixer origin_tech = list(TECH_DATA = 3, TECH_BIO = 2) + +/obj/item/weapon/circuitboard/helm + name = T_BOARD("helm control console") + build_path = /obj/machinery/computer/ship/helm + +/obj/item/weapon/circuitboard/engine + name = T_BOARD("engine control console") + build_path = /obj/machinery/computer/ship/engines + +/obj/item/weapon/circuitboard/nav + name = T_BOARD("navigation console") + build_path = /obj/machinery/computer/ship/navigation + +/obj/item/weapon/circuitboard/nav/tele + name = T_BOARD("navigation telescreen") + build_path = /obj/machinery/computer/ship/navigation/telescreen + +/obj/item/weapon/circuitboard/sensors + name = T_BOARD("sensors console") + build_path = /obj/machinery/computer/ship/sensors + + + + /obj/item/weapon/circuitboard/area_atmos name = T_BOARD("area air control console") build_path = /obj/machinery/computer/area_atmos diff --git a/code/game/objects/items/weapons/circuitboards/computer/shuttle.dm b/code/game/objects/items/weapons/circuitboards/computer/shuttle.dm new file mode 100644 index 00000000000..1c3c0ec25f4 --- /dev/null +++ b/code/game/objects/items/weapons/circuitboards/computer/shuttle.dm @@ -0,0 +1,54 @@ +#ifndef T_BOARD +#error T_BOARD macro is not defined but we need it! +#endif + +// +// Shuttle control console. Board tries to auto-link the computer if built on a shuttle. +// +/obj/item/weapon/circuitboard/shuttle_console + origin_tech = list(TECH_DATA = 3) + var/shuttle_category = null // Shuttle datum's category must exactly equal this to auto-detect + var/shuttle_tag = null // If set, link constructed console to this shuttle. If null, auto-detect. + +/obj/item/weapon/circuitboard/shuttle_console/deconstruct(obj/machinery/computer/shuttle_control/M) + shuttle_tag = M.shuttle_tag + if(shuttle_tag) + name = T_BOARD("[shuttle_tag] control console") + +// Try to auto-link the shuttle computer if it is constructed on a shuttle (and not pre-programmed) +/obj/item/weapon/circuitboard/shuttle_console/construct(obj/machinery/computer/shuttle_control/M) + if(!shuttle_tag) + shuttle_tag = auto_detect_shuttle(M) // We don't have a preset tag, so lets try to auto-link. + if(shuttle_tag && M.set_shuttle_tag(shuttle_tag)) + log_and_message_admins("[key_name_admin(usr)] built a [M] for [shuttle_tag] at [ADMIN_COORDJMP(M)]") + M.ping("[M] auto-links with shuttle [shuttle_tag]") + +// Return shuttle_tag of shuttle of current area +/obj/item/weapon/circuitboard/shuttle_console/proc/auto_detect_shuttle(obj/machinery/computer/shuttle_control/M) + var/area/A = get_area(M) + if(!A || !(A in SSshuttles.shuttle_areas)) + return // Definately not on a shuttle + for(var/shuttle_name in SSshuttles.shuttles) + var/datum/shuttle/S = SSshuttles.shuttles[shuttle_name] + if(A in S.find_childfree_areas()) + // Found the owning shuttle! Return it if its a valid type + return (S.category == shuttle_category) ? S.name : null + +// Overmap shuttle console. +/obj/item/weapon/circuitboard/shuttle_console/explore + name = T_BOARD("long range shuttle control console") + build_path = /obj/machinery/computer/shuttle_control/explore + origin_tech = list(TECH_DATA = 3, TECH_BLUESPACE = 4) + shuttle_category = /datum/shuttle/autodock/overmap + +// Multi-shuttle console +/obj/item/weapon/circuitboard/shuttle_console/multi + name = T_BOARD("multi-route shuttle control console") + build_path = /obj/machinery/computer/shuttle_control/multi + shuttle_category = /datum/shuttle/autodock/multi + +// Basic "ferry" shuttle console +/obj/item/weapon/circuitboard/shuttle_console/ferry + name = T_BOARD("basic shuttle control console") + build_path = /obj/machinery/computer/shuttle_control + shuttle_category = /datum/shuttle/autodock/ferry diff --git a/code/game/objects/items/weapons/circuitboards/machinery/shieldgen.dm b/code/game/objects/items/weapons/circuitboards/machinery/shieldgen.dm index 6d683cd9a84..f34f7a3c65b 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/shieldgen.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/shieldgen.dm @@ -2,6 +2,37 @@ #error T_BOARD macro is not defined but we need it! #endif +// +// New shield generator +// + +/obj/item/weapon/circuitboard/shield_generator + name = T_BOARD("advanced shield generator") + board_type = new /datum/frame/frame_types/machine + build_path = /obj/machinery/power/shield_generator + origin_tech = list(TECH_MAGNET = 3, TECH_POWER = 4, TECH_BLUESPACE = 2, TECH_ENGINEERING = 3) + req_components = list( + /obj/item/weapon/stock_parts/capacitor = 1, + /obj/item/weapon/stock_parts/micro_laser = 1, + /obj/item/weapon/smes_coil = 1, + /obj/item/weapon/stock_parts/console_screen = 1, + /obj/item/weapon/stock_parts/subspace/amplifier = 1, + /obj/item/stack/cable_coil = 5) + +/obj/item/weapon/circuitboard/shield_diffuser + name = T_BOARD("shield diffuser") + board_type = new /datum/frame/frame_types/machine + build_path = /obj/machinery/shield_diffuser + origin_tech = list(TECH_MAGNET = 4, TECH_POWER = 2, TECH_ILLEGAL = 1) + req_components = list( + /obj/item/weapon/stock_parts/capacitor = 1, + /obj/item/weapon/stock_parts/micro_laser = 1, + /obj/item/weapon/stock_parts/console_screen = 1) + +// +// Legacy shield generators +// + /obj/item/weapon/circuitboard/shield_gen_ex name = T_BOARD("hull shield generator") board_type = new /datum/frame/frame_types/machine diff --git a/code/game/objects/items/weapons/circuitboards/machinery/ships.dm b/code/game/objects/items/weapons/circuitboards/machinery/ships.dm index dd37bc2519e..b71e7ce37b9 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/ships.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/ships.dm @@ -6,8 +6,8 @@ name = T_BOARD("point defense battery") board_type = new /datum/frame/frame_types/machine desc = "Control systems for a Kuiper pattern point defense battery. Aim away from vessel." - build_path = /obj/machinery/pointdefense - origin_tech = list(TECH_ENGINEERING = 3, TECH_COMBAT = 2) + build_path = /obj/machinery/power/pointdefense + origin_tech = list(TECH_ENGINEERING = 3, TECH_COMBAT = 2, TECH_POWER = 2) req_components = list( /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser = 1, /obj/item/weapon/stock_parts/manipulator = 2, diff --git a/code/game/objects/structures/fitness_vr.dm b/code/game/objects/structures/fitness_vr.dm new file mode 100644 index 00000000000..341246051ef --- /dev/null +++ b/code/game/objects/structures/fitness_vr.dm @@ -0,0 +1,79 @@ +/obj/structure/fitness/boxing_ropes + name = "Ropes" + desc = "Firm yet springy, perhaps this could be useful!" + icon = 'icons/obj/fitness_vr.dmi' + icon_state = "ropes" + density = 1 + throwpass = 1 + climbable = 1 + layer = WINDOW_LAYER + anchored = 1 + flags = ON_BORDER +/obj/structure/fitness/boxing_ropes/CanPass(atom/movable/mover, turf/target) + if(istype(mover) && mover.checkpass(PASSTABLE)) + return TRUE + if(get_dir(mover, target) == turn(dir, 180)) + return !density + return TRUE +/obj/structure/fitness/boxing_ropes/CheckExit(atom/movable/O as mob|obj, target as turf) + if(istype(O) && O.checkpass(PASSTABLE)) + return 1 + if(get_dir(O.loc, target) == dir) + return 0 + return 1 + +/obj/structure/fitness/boxing_ropes_bottom + name = "Ropes" + desc = "Firm yet springy, perhaps this could be useful!" + icon = 'icons/obj/fitness_vr.dmi' + icon_state = "ropes" + density = 1 + throwpass = 1 + climbable = 1 + plane = MOB_PLANE + layer = ABOVE_MOB_LAYER + anchored = 1 + flags = ON_BORDER +/obj/structure/fitness/boxing_ropes_bottom/CanPass(atom/movable/mover, turf/target) + if(istype(mover) && mover.checkpass(PASSTABLE)) + return TRUE + if(get_dir(mover, target) == turn(dir, 180)) + return !density + return TRUE +/obj/structure/fitness/boxing_ropes_bottom/CheckExit(atom/movable/O as mob|obj, target as turf) + if(istype(O) && O.checkpass(PASSTABLE)) + return 1 + if(get_dir(O.loc, target) == dir) + return 0 + return 1 + + + +/obj/structure/fitness/boxing_turnbuckle + name = "Turnbuckle" + desc = "A sturdy post that looks like it could support even the most heaviest of heavy weights!" + icon = 'icons/obj/fitness_vr.dmi' + icon_state = "turnbuckle" + density = 1 + throwpass = 1 + climbable = 1 + layer = WINDOW_LAYER + anchored = 1 + flags = ON_BORDER +/obj/structure/fitness/boxing_turnbuckle/CanPass(atom/movable/mover, turf/target) + if(istype(mover) && mover.checkpass(PASSTABLE)) + return TRUE + if(get_dir(mover, target) == turn(dir, 180)) + return !density + return TRUE +/obj/structure/fitness/boxing_turnbuckle/CheckExit(atom/movable/O as mob|obj, target as turf) + if(istype(O) && O.checkpass(PASSTABLE)) + return 1 + if(get_dir(O.loc, target) == dir) + return 0 + return 1 + +/turf/simulated/fitness + name = "Mat" + icon = 'icons/turf/floors_vr.dmi' + icon_state = "fit_mat" \ No newline at end of file diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index b2867d5eadb..d8542d0c96f 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -442,6 +442,13 @@ //this way it will only update full-tile ones overlays.Cut() if(!is_fulltile()) + // Rotate the sprite somewhat so non-fulltiled windows can be seen as needing repair. + var/full_tilt_degrees = 15 + var/tilt_to_apply = abs((health / maxhealth) - 1) + if(tilt_to_apply && prob(50)) + tilt_to_apply = -tilt_to_apply + adjust_rotation(LERP(0, full_tilt_degrees, tilt_to_apply)) + icon_state = "[basestate]" return var/list/dirs = list() diff --git a/code/game/turfs/flooring/flooring_decals_vr.dm b/code/game/turfs/flooring/flooring_decals_vr.dm index 5326eeff865..438f8a12234 100644 --- a/code/game/turfs/flooring/flooring_decals_vr.dm +++ b/code/game/turfs/flooring/flooring_decals_vr.dm @@ -98,3 +98,35 @@ /obj/effect/floor_decal/corner/yellow/border/shifted icon_state = "bordercolor_shifted" + +/obj/effect/floor_decal/emblem/blu + icon_state = "blu" +/obj/effect/floor_decal/emblem/blu_big + icon_state = "blu_big" + +/obj/effect/floor_decal/emblem/red + icon_state = "red" +/obj/effect/floor_decal/emblem/red_big + icon_state = "red_big" + +/obj/effect/floor_decal/emblem/black + icon_state = "black" +/obj/effect/floor_decal/emblem/black_big + icon_state = "black_big" + +/obj/effect/floor_decal/emblem/sword + icon_state = "sword" +/obj/effect/floor_decal/emblem/sword_big + icon_state = "sword_big" + +/obj/effect/floor_decal/emblem/ark + icon_state = "ark" +/obj/effect/floor_decal/emblem/ark_big + icon_state = "ark_big" + +/obj/effect/floor_decal/emblem/talon + icon_state = "talon" +/obj/effect/floor_decal/emblem/talon_big + icon_state = "talon_big" +/obj/effect/floor_decal/emblem/talon_big/center + icon_state = "talon_center" \ No newline at end of file diff --git a/code/game/turfs/simulated/floor_attackby.dm b/code/game/turfs/simulated/floor_attackby.dm index f3368b5115a..70bc2646a20 100644 --- a/code/game/turfs/simulated/floor_attackby.dm +++ b/code/game/turfs/simulated/floor_attackby.dm @@ -152,10 +152,10 @@ if(T.type == flooring.build_type) return var/obj/item/weapon/W = user.is_holding_item_of_type(/obj/item/weapon) + if(!istype(W)) + return if(!try_deconstruct_tile(W, user)) return if(flooring) return - if(!istype(W)) - return attackby(T, user) \ No newline at end of file diff --git a/code/game/turfs/simulated/wall_icon.dm b/code/game/turfs/simulated/wall_icon.dm index f277ea79f56..5bf41c4a5f2 100644 --- a/code/game/turfs/simulated/wall_icon.dm +++ b/code/game/turfs/simulated/wall_icon.dm @@ -116,6 +116,15 @@ wall_connections = dirs_to_corner_states(dirs) /turf/simulated/wall/proc/can_join_with(var/turf/simulated/wall/W) - if(material && W.material && material.icon_base == W.material.icon_base) + //VOREStation Edit Start + //No blending if no material + if(!material || !W.material) + return 0 + //We can blend if either is the same, or a subtype, of the other one + if(istype(W.material, material.type) || istype(material, W.material.type)) return 1 + //Also blend if they have the same iconbase + if(material.icon_base == W.material.icon_base) + return 1 + //VOREStation Edit End return 0 diff --git a/code/game/turfs/simulated/wall_types.dm b/code/game/turfs/simulated/wall_types.dm index 96979c8452f..34503af8feb 100644 --- a/code/game/turfs/simulated/wall_types.dm +++ b/code/game/turfs/simulated/wall_types.dm @@ -3,20 +3,36 @@ /turf/simulated/wall/r_wall/Initialize(mapload) . = ..(mapload, "plasteel","plasteel") //3strong +/turf/simulated/wall/shull + icon_state = "hull-steel" /turf/simulated/wall/shull/Initialize(mapload) //Spaaaace ship. . = ..(mapload, MAT_STEELHULL, null, MAT_STEELHULL) +/turf/simulated/wall/rshull + icon_state = "hull-r_steel" /turf/simulated/wall/rshull/Initialize(mapload) . = ..(mapload, MAT_STEELHULL, MAT_STEELHULL, MAT_STEELHULL) +/turf/simulated/wall/pshull + icon_state = "hull-plasteel" /turf/simulated/wall/pshull/Initialize(mapload) //Spaaaace-er ship. . = ..(mapload, MAT_PLASTEELHULL, null, MAT_PLASTEELHULL) +/turf/simulated/wall/rpshull + icon_state = "hull-r_plasteel" /turf/simulated/wall/rpshull/Initialize(mapload) . = ..(mapload, MAT_PLASTEELHULL, MAT_PLASTEELHULL, MAT_PLASTEELHULL) +/turf/simulated/wall/dshull + icon_state = "hull-durasteel" /turf/simulated/wall/dshull/Initialize(mapload) //Spaaaace-est ship. . = ..(mapload, MAT_DURASTEELHULL, null, MAT_DURASTEELHULL) +/turf/simulated/wall/rdshull + icon_state = "hull-r_durasteel" /turf/simulated/wall/rdshull/Initialize(mapload) . = ..(mapload, MAT_DURASTEELHULL, MAT_DURASTEELHULL, MAT_DURASTEELHULL) +/turf/simulated/wall/thull + icon_state = "hull-titanium" /turf/simulated/wall/thull/Initialize(mapload) . = ..(mapload, MAT_TITANIUMHULL, null, MAT_TITANIUMHULL) +/turf/simulated/wall/rthull + icon_state = "hull-r_titanium" /turf/simulated/wall/rthull/Initialize(mapload) . = ..(mapload, MAT_TITANIUMHULL, MAT_TITANIUMHULL, MAT_TITANIUMHULL) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index d72beb290c0..cbb9c6dbb70 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -231,10 +231,25 @@ // Wall-rot effect, a nasty fungus that destroys walls. /turf/simulated/wall/proc/rot() if(locate(/obj/effect/overlay/wallrot) in src) - return + return FALSE + + // Wall-rot can't go onto walls that are surrounded in all four cardinal directions. + // Because of spores, or something. It's actually to avoid the pain that is removing wallrot surrounded by + // four r-walls. + var/at_least_one_open_turf = FALSE + for(var/direction in GLOB.cardinal) + var/turf/T = get_step(src, direction) + if(!T.check_density()) + at_least_one_open_turf = TRUE + break + + if(!at_least_one_open_turf) + return FALSE + var/number_rots = rand(2,3) for(var/i=0, i 2 && src.x < (world.maxx - 1) && src.y > 2 && src.y < (world.maxy-1))) + if((istype(A, /mob/) && src.x > 1 && src.x < (world.maxx) && src.y > 1 && src.y < (world.maxy))) var/mob/M = A if(M.Process_Spacemove(1)) M.inertia_dir = 0 diff --git a/code/game/world.dm b/code/game/world.dm index 52927b7dd72..504ad691671 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -63,7 +63,7 @@ processScheduler = new master_controller = new /datum/controller/game_controller() - processScheduler.deferSetupFor(/datum/controller/process/ticker) + // processScheduler.deferSetupFor(/datum/controller/process/ticker) // Ticker is now a real subsystem! processScheduler.setup() Master.Initialize(10, FALSE) @@ -181,6 +181,17 @@ var/world_topic_spam_protect_time = world.timeofday if(!positions["misc"]) positions["misc"] = list() positions["misc"][name] = rank + + for(var/datum/data/record/t in data_core.hidden_general) + var/name = t.fields["name"] + var/rank = t.fields["rank"] + var/real_rank = make_list_rank(t.fields["real_rank"]) + + var/datum/job/J = SSjob.get_job(real_rank) + if(J?.offmap_spawn) + if(!positions["off"]) + positions["off"] = list() + positions["off"][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) @@ -658,6 +669,6 @@ proc/establish_old_db_connection() // Called whenver world.tick_lag or world.fps are changed. /world/proc/on_tickrate_change() - SStimer?.reset_buckets() + SStimer?.reset_buckets() #undef FAILED_DB_CONNECTION_CUTOFF diff --git a/code/global.dm b/code/global.dm index 111a56c1166..51f2c9e5f34 100644 --- a/code/global.dm +++ b/code/global.dm @@ -5,7 +5,6 @@ // Items that ask to be called every cycle. 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_power_items = list() // TODO - Move into SSmachines @@ -107,7 +106,6 @@ var/gravity_is_on = 1 var/join_motd = null -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. var/list/awaydestinations = list() // Away missions. A list of landmarks that the warpgate can take you to. diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index e56727c95dd..6fc26c7d48a 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -871,21 +871,26 @@ var/datum/announcement/minor/admin_min_announcer = new /datum/admins/proc/startnow() set category = "Server" - set desc="Start the round RIGHT NOW" + set desc="Start the round ASAP" set name="Start Now" - if(!ticker) - alert("Unable to start the game as it is not set up.") + + if(!check_rights(R_SERVER|R_EVENT)) return - if(ticker.current_state == GAME_STATE_PREGAME) - ticker.current_state = GAME_STATE_SETTING_UP - Master.SetRunLevel(RUNLEVEL_SETUP) - log_admin("[usr.key] has started the game.") - message_admins("[usr.key] has started the game.") - feedback_add_details("admin_verb","SN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return 1 - else + if(SSticker.current_state > GAME_STATE_PREGAME) to_chat(usr, "Error: Start Now: Game has already started.") - return 0 + return + if(!SSticker.start_immediately) + SSticker.start_immediately = TRUE + var/msg = "" + if(SSticker.current_state == GAME_STATE_INIT) + msg = " (The server is still setting up, but the round will be started as soon as possible.)" + log_admin("[key_name(usr)] has started the game.[msg]") + message_admins("[key_name_admin(usr)] has started the game.[msg]") + feedback_add_details("admin_verb","SN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + else + SSticker.start_immediately = FALSE + to_chat(world, "Immediate game start canceled. Normal startup resumed.") + log_and_message_admins("cancelled immediate game start.") /datum/admins/proc/toggleenter() set category = "Server" @@ -952,10 +957,10 @@ var/datum/announcement/minor/admin_min_announcer = new set name="Delay" if(!check_rights(R_SERVER|R_EVENT)) return - if (!ticker || ticker.current_state != GAME_STATE_PREGAME) - ticker.delay_end = !ticker.delay_end - log_admin("[key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].") - message_admins("[key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].", 1) + if (SSticker.current_state >= GAME_STATE_PLAYING) + SSticker.delay_end = !SSticker.delay_end + log_admin("[key_name(usr)] [SSticker.delay_end ? "delayed the round end" : "has made the round end normally"].") + message_admins("[key_name(usr)] [SSticker.delay_end ? "delayed the round end" : "has made the round end normally"].", 1) return //alert("Round end delayed", null, null, null, null, null) round_progressing = !round_progressing if (!round_progressing) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 54cb62b28e6..5e3be27b351 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -231,7 +231,7 @@ var/list/admin_verbs_debug = list( /client/proc/toggle_debug_logs, /client/proc/admin_ghost, //allows us to ghost/reenter body at will, /datum/admins/proc/view_runtimes, - /client/proc/show_gm_status, + // /client/proc/show_gm_status, // VOREStation Edit - We don't use SSgame_master yet. /datum/admins/proc/change_weather, /datum/admins/proc/change_time, /client/proc/admin_give_modifier, @@ -407,7 +407,7 @@ var/list/admin_verbs_event_manager = list( /client/proc/callproc, /client/proc/callproc_datum, /client/proc/debug_controller, - /client/proc/show_gm_status, + // /client/proc/show_gm_status, // VOREStation Edit - We don't use SSgame_master yet. /datum/admins/proc/change_weather, /datum/admins/proc/change_time, /client/proc/admin_give_modifier, diff --git a/code/modules/admin/secrets/random_events/gravity.dm b/code/modules/admin/secrets/random_events/gravity.dm index 5f248a4dfcf..b01bb496374 100644 --- a/code/modules/admin/secrets/random_events/gravity.dm +++ b/code/modules/admin/secrets/random_events/gravity.dm @@ -16,7 +16,7 @@ return gravity_is_on = !gravity_is_on - for(var/area/A in all_areas) + for(var/area/A in world) A.gravitychange(gravity_is_on) feedback_inc("admin_secrets_fun_used",1) diff --git a/code/modules/admin/verbs/adminhelp_vr.dm b/code/modules/admin/verbs/adminhelp_vr.dm index f2df8e4eb29..ba0d970f9b9 100644 --- a/code/modules/admin/verbs/adminhelp_vr.dm +++ b/code/modules/admin/verbs/adminhelp_vr.dm @@ -25,7 +25,7 @@ to_chat(usr, "Error: You cannot request spice (muted from adminhelps).") return - if(alert(usr, "Are you sure you want to request the admins spice things up for you? You accept the consequences if you do.",,"No","Yes") != "No") + if(alert(usr, "Are you sure you want to request the admins spice things up for you? You accept the consequences if you do.",,"Yes","No") != "No") message_admins("[ADMIN_FULLMONTY(usr)] has requested the round be spiced up a little.") to_chat(usr, "You have requested some more spice in your round.") else diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 1bbb72fd990..4500379ec59 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -341,7 +341,7 @@ var/list/areas_with_intercom = list() var/list/areas_with_camera = list() - for(var/area/A in all_areas) + for(var/area/A in world) if(!(A.type in areas_all)) areas_all.Add(A.type) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 73a8e7bc5b8..ace7d48e91f 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -525,7 +525,7 @@ Traitors and the like can also be revived with the previous role mostly intact. //If we're announcing their arrival if(announce) - AnnounceArrival(new_character, new_character.mind.assigned_role) + AnnounceArrival(new_character, new_character.mind.assigned_role, "Common", new_character.z) log_admin("[admin] has spawned [player_key]'s character [new_character.real_name].") message_admins("[admin] has spawned [player_key]'s character [new_character.real_name].", 1) diff --git a/code/modules/admin/view_variables/debug_variables.dm b/code/modules/admin/view_variables/debug_variables.dm index bcf097f8138..97ce67e61b7 100644 --- a/code/modules/admin/view_variables/debug_variables.dm +++ b/code/modules/admin/view_variables/debug_variables.dm @@ -8,7 +8,7 @@ name = DA[name] //name is really the index until this line else value = DA[name] - header = "
  • (E) (C) (-) " + header = "
  • (E) (C) (-) " else header = "
  • (E) (C) (M) " else diff --git a/code/modules/admin/view_variables/modify_variables.dm b/code/modules/admin/view_variables/modify_variables.dm index 1e3aef04bd2..9a999e1a75d 100644 --- a/code/modules/admin/view_variables/modify_variables.dm +++ b/code/modules/admin/view_variables/modify_variables.dm @@ -97,9 +97,10 @@ GLOBAL_PROTECT(VVpixelmovement) 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(IS_VALID_ASSOC_KEY(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.") @@ -179,12 +180,13 @@ GLOBAL_PROTECT(VVpixelmovement) 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] + if(IS_VALID_ASSOC_KEY(L[index])) + 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 @@ -193,9 +195,10 @@ GLOBAL_PROTECT(VVpixelmovement) 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 + if(IS_VALID_ASSOC_KEY(variable)) + var/found = L[variable] + if(!isnull(found)) + old_assoc_value = found // default = vv_get_class(objectvar, variable) diff --git a/code/modules/admin/view_variables/topic.dm b/code/modules/admin/view_variables/topic.dm index b524ade4b2e..43c51e65c66 100644 --- a/code/modules/admin/view_variables/topic.dm +++ b/code/modules/admin/view_variables/topic.dm @@ -4,8 +4,10 @@ if((usr.client != src) || !src.holder) return var/datum/target = locate(href_list["target"]) - if(target) + if(istype(target)) target.vv_do_topic(href_list) + else if(islist(target)) + vv_do_list(target, href_list) if(href_list["Vars"]) debug_variables(locate(href_list["Vars"])) @@ -519,6 +521,6 @@ if(href_list["datumrefresh"]) var/datum/DAT = locate(href_list["datumrefresh"]) - if(istype(DAT, /datum) || istype(DAT, /client)) + if(istype(DAT, /datum) || istype(DAT, /client) || islist(DAT)) debug_variables(DAT) diff --git a/code/modules/admin/view_variables/topic_list.dm b/code/modules/admin/view_variables/topic_list.dm new file mode 100644 index 00000000000..c76023ec1f4 --- /dev/null +++ b/code/modules/admin/view_variables/topic_list.dm @@ -0,0 +1,44 @@ +//LISTS - CAN NOT DO VV_DO_TOPIC BECAUSE LISTS AREN'T DATUMS :( +/client/proc/vv_do_list(list/target, href_list) + if(!check_rights(R_VAREDIT)) + return + var/target_index = text2num(href_list["index"]) + if(target_index) + if(href_list[VV_HK_LIST_EDIT]) + mod_list(target, null, "list", "contents", target_index, autodetect_class = TRUE) + if(href_list[VV_HK_LIST_CHANGE]) + mod_list(target, null, "list", "contents", target_index, autodetect_class = FALSE) + if(href_list[VV_HK_LIST_REMOVE]) + var/variable = target[target_index] + var/prompt = alert("Do you want to remove item number [target_index] from list?", "Confirm", "Yes", "No") + if (prompt != "Yes") + return + target.Cut(target_index, target_index+1) + log_world("### ListVarEdit by [src]: /list's contents: REMOVED=[html_encode("[variable]")]") + log_admin("[key_name(src)] modified list's contents: REMOVED=[variable]") + message_admins("[key_name_admin(src)] modified list's contents: REMOVED=[variable]") + if(href_list[VV_HK_LIST_ADD]) + mod_list_add(target, null, "list", "contents") + if(href_list[VV_HK_LIST_ERASE_DUPES]) + uniqueList_inplace(target) + log_world("### ListVarEdit by [src]: /list contents: CLEAR DUPES") + log_admin("[key_name(src)] modified list's contents: CLEAR DUPES") + message_admins("[key_name_admin(src)] modified list's contents: CLEAR DUPES") + if(href_list[VV_HK_LIST_ERASE_NULLS]) + listclearnulls(target) + log_world("### ListVarEdit by [src]: /list contents: CLEAR NULLS") + log_admin("[key_name(src)] modified list's contents: CLEAR NULLS") + message_admins("[key_name_admin(src)] modified list's contents: CLEAR NULLS") + if(href_list[VV_HK_LIST_SET_LENGTH]) + var/value = vv_get_value(VV_NUM) + if (value["class"] != VV_NUM || value["value"] > max(5000, target.len)) //safety - would rather someone not put an extra 0 and erase the server's memory lmao. + return + target.len = value["value"] + log_world("### ListVarEdit by [src]: /list len: [target.len]") + log_admin("[key_name(src)] modified list's len: [target.len]") + message_admins("[key_name_admin(src)] modified list's len: [target.len]") + if(href_list[VV_HK_LIST_SHUFFLE]) + shuffle_inplace(target) + log_world("### ListVarEdit by [src]: /list contents: SHUFFLE") + log_admin("[key_name(src)] modified list's contents: SHUFFLE") + message_admins("[key_name_admin(src)] modified list's contents: SHUFFLE") diff --git a/code/modules/admin/view_variables/view_variables.dm b/code/modules/admin/view_variables/view_variables.dm index efa6f424f10..767d693abd4 100644 --- a/code/modules/admin/view_variables/view_variables.dm +++ b/code/modules/admin/view_variables/view_variables.dm @@ -55,12 +55,12 @@ 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]" + "Add Item" = "?_src_=vars;[VV_HK_LIST_ADD]=TRUE;target=[refid]", + "Remove Nulls" = "?_src_=vars;[VV_HK_LIST_ERASE_NULLS]=TRUE;target=[refid]", + "Remove Dupes" = "?_src_=vars;[VV_HK_LIST_ERASE_DUPES]=TRUE;target=[refid]", + "Set len" = "?_src_=vars;[VV_HK_LIST_SET_LENGTH]=TRUE;target=[refid]", + "Shuffle" = "?_src_=vars;[VV_HK_LIST_SHUFFLE]=TRUE;target=[refid]", + // "Show VV To Player" = "?_src_=vars;[VV_HK_EXPOSE]=TRUE;target=[refid]" // TODO - Not yet implemented for lists ) autoconvert_dropdown = TRUE else @@ -88,7 +88,7 @@ for (var/i in 1 to L.len) var/key = L[i] var/value - if (IS_NORMAL_LIST(L) && !isnum(key)) + if (IS_NORMAL_LIST(L) && IS_VALID_ASSOC_KEY(key)) value = L[key] variable_html += debug_variable(i, value, 0, D) else diff --git a/code/modules/ai/ai_holder.dm b/code/modules/ai/ai_holder.dm index aadcdaa9e24..b5272ea9963 100644 --- a/code/modules/ai/ai_holder.dm +++ b/code/modules/ai/ai_holder.dm @@ -9,6 +9,10 @@ /mob/living/Initialize() if(ai_holder_type) ai_holder = new ai_holder_type(src) + if(istype(src, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = src + H.hud_used = new /datum/hud(H) + H.instantiate_hud(H.hud_used) return ..() /mob/living/Destroy() @@ -220,7 +224,7 @@ /datum/ai_holder/proc/handle_stance_strategical() ai_log("++++++++++ Slow Process Beginning ++++++++++", AI_LOG_TRACE) ai_log("handle_stance_strategical() : Called.", AI_LOG_TRACE) - + //We got left around for some reason. Goodbye cruel world. if(!holder) qdel(src) diff --git a/code/modules/ai/ai_holder_combat.dm b/code/modules/ai/ai_holder_combat.dm index 64dfa7d17e8..075a9196d89 100644 --- a/code/modules/ai/ai_holder_combat.dm +++ b/code/modules/ai/ai_holder_combat.dm @@ -285,6 +285,12 @@ ai_log("destroy_surroundings() : Attacking hull shield.", AI_LOG_INFO) return melee_attack(shield) + // Kill energy shields in the way. + for(var/obj/effect/shield/S in problem_turf) + if(S.density) // Don't attack shields that are already down. + ai_log("destroy_surroundings() : Attacking energy shield.", AI_LOG_INFO) + return melee_attack(S) + // 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)) diff --git a/code/modules/ai/ai_holder_targeting.dm b/code/modules/ai/ai_holder_targeting.dm index f1f5ff4a3a7..f33906c6622 100644 --- a/code/modules/ai/ai_holder_targeting.dm +++ b/code/modules/ai/ai_holder_targeting.dm @@ -28,7 +28,7 @@ . = hearers(vision_range, holder) - holder // Remove ourselves to prevent suicidal decisions. ~ SRC is the ai_holder. . -= dview_mob // Not the dview mob either, nerd. - var/static/hostile_machines = typecacheof(list(/obj/machinery/porta_turret, /obj/mecha)) + var/static/hostile_machines = typecacheof(list(/obj/machinery/porta_turret, /obj/mecha, /obj/structure/blob)) for(var/HM in typecache_filter_list(range(vision_range, holder), hostile_machines)) if(can_see(holder, HM, vision_range)) @@ -75,7 +75,7 @@ /datum/ai_holder/proc/give_target(new_target, urgent = FALSE) ai_log("give_target() : Given '[new_target]', urgent=[urgent].", AI_LOG_TRACE) target = new_target - + if(target != null) lose_target_time = 0 track_target_position() @@ -155,6 +155,11 @@ return FALSE // Turrets won't get hurt if they're still in their cover. return TRUE + if(istype(the_target, /obj/structure/blob)) // Blob mobs are always blob faction, but the blob can anger other things. + var/obj/structure/blob/Blob = the_target + if(holder.faction == Blob.faction) + return FALSE + return TRUE // return FALSE @@ -189,12 +194,12 @@ ai_log("remove_target() : Entering.", AI_LOG_TRACE) if(target) target = null - + lose_target_time = 0 give_up_movement() lose_target_position() set_stance(STANCE_IDLE) - + // 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) @@ -274,7 +279,7 @@ // 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) last_conflict_time = world.time - add_attacker(AM) + add_attacker(AM) // Checks to see if an atom attacked us lately /datum/ai_holder/proc/check_attacker(var/atom/movable/A) @@ -287,7 +292,7 @@ // Forgive this attacker /datum/ai_holder/proc/remove_attacker(var/atom/movable/A) attackers -= A.name - + // 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. diff --git a/code/modules/ai/interfaces.dm b/code/modules/ai/interfaces.dm index b4323782d35..6cf085c52e8 100644 --- a/code/modules/ai/interfaces.dm +++ b/code/modules/ai/interfaces.dm @@ -11,6 +11,11 @@ return ATTACK_ON_COOLDOWN return attack_target(A) // This will set click cooldown. +/mob/living/carbon/human/IAttack(atom/A) + if(!canClick()) // Still on cooldown from a "click". + return FALSE + return ClickOn(A) // Except this is an actual fake "click". + /mob/living/proc/IRangedAttack(atom/A) return FALSE diff --git a/code/modules/alarm/alarm_handler.dm b/code/modules/alarm/alarm_handler.dm index 22b069093ad..cbec4c25b68 100644 --- a/code/modules/alarm/alarm_handler.dm +++ b/code/modules/alarm/alarm_handler.dm @@ -47,16 +47,17 @@ existing.clear(source) return check_alarm_cleared(existing) -/datum/alarm_handler/proc/major_alarms() - return visible_alarms() +/datum/alarm_handler/proc/major_alarms(var/z) + return visible_alarms(z) -/datum/alarm_handler/proc/has_major_alarms() - if(alarms && alarms.len) - return 1 - return 0 +/datum/alarm_handler/proc/has_major_alarms(var/z) + if(!LAZYLEN(alarms)) + return 0 -/datum/alarm_handler/proc/minor_alarms() - return visible_alarms() + return LAZYLEN(major_alarms(z)) + +/datum/alarm_handler/proc/minor_alarms(var/z) + return visible_alarms(z) /datum/alarm_handler/proc/check_alarm_cleared(var/datum/alarm/alarm) if ((alarm.end_time && world.time > alarm.end_time) || !alarm.sources.len) @@ -101,9 +102,15 @@ for(var/listener in listeners) call(listener, listeners[listener])(src, alarm, was_raised) -/datum/alarm_handler/proc/visible_alarms() +/datum/alarm_handler/proc/visible_alarms(var/z) + if(!LAZYLEN(alarms)) + return list() + + var/list/map_levels = using_map.get_map_levels(z) + var/list/visible_alarms = new() for(var/datum/alarm/A in alarms) - if(!A.hidden) - visible_alarms.Add(A) + if(A.hidden || (z && !(A.origin?.z in map_levels))) + continue + visible_alarms.Add(A) return visible_alarms \ No newline at end of file diff --git a/code/modules/alarm/atmosphere_alarm.dm b/code/modules/alarm/atmosphere_alarm.dm index fc0fe92ee45..f19044a6b75 100644 --- a/code/modules/alarm/atmosphere_alarm.dm +++ b/code/modules/alarm/atmosphere_alarm.dm @@ -1,16 +1,22 @@ /datum/alarm_handler/atmosphere category = "Atmosphere Alarms" -/datum/alarm_handler/atmosphere/major_alarms() +/datum/alarm_handler/atmosphere/major_alarms(var/z) var/list/major_alarms = new() + var/list/map_levels = using_map.get_map_levels(z) for(var/datum/alarm/A in visible_alarms()) + if(z && (z && !(A.origin?.z in map_levels))) + continue if(A.max_severity() > 1) major_alarms.Add(A) return major_alarms -/datum/alarm_handler/atmosphere/minor_alarms() +/datum/alarm_handler/atmosphere/minor_alarms(var/z) var/list/minor_alarms = new() + var/list/map_levels = using_map.get_map_levels(z) for(var/datum/alarm/A in visible_alarms()) + if(z && (z && !(A.origin?.z in map_levels))) + continue if(A.max_severity() == 1) minor_alarms.Add(A) return minor_alarms diff --git a/code/modules/artifice/deadringer.dm b/code/modules/artifice/deadringer.dm index 3e95152528f..0906eda63ea 100644 --- a/code/modules/artifice/deadringer.dm +++ b/code/modules/artifice/deadringer.dm @@ -19,13 +19,13 @@ START_PROCESSING(SSobj, src) /obj/item/weapon/deadringer/Destroy() //just in case some smartass tries to stay invisible by destroying the watch - uncloak() + reveal() STOP_PROCESSING(SSobj, src) ..() /obj/item/weapon/deadringer/dropped() if(timer > 20) - uncloak() + reveal() watchowner = null return diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index 0f981e29f9f..1bc653662bf 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -17,7 +17,7 @@ if(!..()) return FALSE - timing = !timing + set_state(!timing) update_icon() return 0 diff --git a/code/modules/blob2/_defines.dm b/code/modules/blob2/_defines.dm index 1ad0b738935..85f9d39115e 100644 --- a/code/modules/blob2/_defines.dm +++ b/code/modules/blob2/_defines.dm @@ -7,4 +7,7 @@ #define BLOB_DIFFICULTY_EASY 0 #define BLOB_DIFFICULTY_MEDIUM 1 #define BLOB_DIFFICULTY_HARD 2 -#define BLOB_DIFFICULTY_SUPERHARD 3 \ No newline at end of file +#define BLOB_DIFFICULTY_SUPERHARD 3 + +#define BLOB_CHUNK_CONSTANT 0 +#define BLOB_CHUNK_TOGGLE 1 diff --git a/code/modules/blob2/announcement.dm b/code/modules/blob2/announcement.dm deleted file mode 100644 index 6eceeec5690..00000000000 --- a/code/modules/blob2/announcement.dm +++ /dev/null @@ -1,18 +0,0 @@ -/proc/level_seven_blob_announcement(var/obj/structure/blob/core/B) - if(!B || !B.overmind) - return - var/datum/blob_type/blob = B.overmind.blob_type // Shortcut so we don't need to delve into three variables every time. - var/list/lines = list() - - lines += "Confirmed outbreak of level [7 + blob.difficulty] biohazard aboard [station_name()]. All personnel must contain the outbreak." - - if(blob.difficulty >= BLOB_DIFFICULTY_MEDIUM) // Tell them what kind of blob it is if it's tough. - lines += "The biohazard has been identified as a '[blob.name]'." - - if(blob.difficulty >= BLOB_DIFFICULTY_HARD) // If it's really hard then tell them where it is so the response occurs faster. - lines += "It is suspected to have originated from \the [get_area(B)]." - - if(blob.difficulty >= BLOB_DIFFICULTY_SUPERHARD) - lines += "Extreme caution is advised." - - command_announcement.Announce(lines.Join("\n"), "Biohazard Alert", new_sound = 'sound/AI/outbreak7.ogg') \ No newline at end of file diff --git a/code/modules/blob2/blobs/base_blob.dm b/code/modules/blob2/blobs/base_blob.dm index 767cf4c783d..2e04c36b95e 100644 --- a/code/modules/blob2/blobs/base_blob.dm +++ b/code/modules/blob2/blobs/base_blob.dm @@ -1,4 +1,4 @@ -var/list/blobs = list() +GLOBAL_LIST_EMPTY(all_blobs) /obj/structure/blob name = "blob" @@ -17,22 +17,23 @@ var/list/blobs = list() var/heal_timestamp = 0 //we got healed when? var/mob/observer/blob/overmind = null var/base_name = "blob" // The name that gets appended along with the blob_type's name. + var/faction = "blob" -/obj/structure/blob/New(var/newloc, var/new_overmind) - ..(newloc) +/obj/structure/blob/Initialize(newloc, new_overmind) if(new_overmind) overmind = new_overmind update_icon() if(!integrity) integrity = max_integrity set_dir(pick(cardinal)) - blobs += src + GLOB.all_blobs += src consume_tile() + return ..() /obj/structure/blob/Destroy() playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) //Expand() is no longer broken, no check necessary. - blobs -= src + GLOB.all_blobs -= src overmind = null return ..() @@ -56,6 +57,8 @@ var/list/blobs = list() return TRUE else if(istype(mover, /obj/item/projectile)) var/obj/item/projectile/P = mover + if(istype(P.firer, /obj/structure/blob)) + return TRUE if(istype(P.firer) && P.firer.faction == "blob") return TRUE return FALSE @@ -112,7 +115,7 @@ var/list/blobs = list() if(overmind) expand_probablity *= overmind.blob_type.spread_modifier if(overmind.blob_type.slow_spread_with_size) - expand_probablity /= (blobs.len / 10) + expand_probablity /= (GLOB.all_blobs.len / 10) if(distance <= expand_range) var/can_expand = TRUE @@ -218,13 +221,97 @@ var/list/blobs = list() qdel(src) return B +/obj/structure/blob/attack_generic(var/mob/user, var/damage, var/attack_verb) + visible_message("[user] [attack_verb] the [src]!") + playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) + user.do_attack_animation(src) + if(overmind) + damage *= overmind.blob_type.brute_multiplier + else + damage *= 2 + + if(overmind) + damage = overmind.blob_type.on_received_damage(src, damage, BRUTE, user) + + adjust_integrity(-damage) + + return + +/obj/structure/blob/attack_hand(mob/living/M as mob) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + H.setClickCooldown(H.get_attack_speed()) + var/datum/unarmed_attack/attack = H.get_unarmed_attack(src, BP_TORSO) + if(!attack) + return FALSE + + if(attack.unarmed_override(H, src, BP_TORSO)) + return FALSE + + H.do_attack_animation(src) + H.visible_message("[H] strikes \the [src]!") + + var/real_damage = rand(3,6) + var/hit_dam_type = attack.damage_type + real_damage += attack.get_unarmed_damage(H) + if(H.gloves) + if(istype(H.gloves, /obj/item/clothing/gloves)) + var/obj/item/clothing/gloves/G = H.gloves + real_damage += G.punch_force + hit_dam_type = G.punch_damtype + if(HULK in H.mutations) + real_damage *= 2 // Hulks do twice the damage + + real_damage = max(1, real_damage) + + var/damage_mult_burn = 1 + var/damage_mult_brute = 1 + + if(hit_dam_type == SEARING) + damage_mult_burn *= 0.3 + damage_mult_brute *= 0.6 + + else if(hit_dam_type == BIOACID) + damage_mult_burn *= 0.6 + damage_mult_brute = 0 + + else if(hit_dam_type in list(ELECTROCUTE, BURN)) + damage_mult_brute = 0 + + else if(hit_dam_type in list(BRUTE, CLONE)) + damage_mult_burn = 0 + + else if(hit_dam_type != HALLOSS) // Tox, Oxy, or something new. Half damage split to the organism. + damage_mult_burn = 0.25 + damage_mult_brute = 0.25 + + else + damage_mult_brute = 0.25 + damage_mult_burn = 0 + + var/burn_dam = real_damage * damage_mult_burn + var/brute_dam = real_damage * damage_mult_brute + + if(overmind) + if(brute_dam) + brute_dam = overmind.blob_type.on_received_damage(src, brute_dam, BRUTE, M) + if(burn_dam) + burn_dam = overmind.blob_type.on_received_damage(src, burn_dam, BURN, M) + + real_damage = burn_dam + brute_dam + + adjust_integrity(-real_damage) + + else + attack_generic(M, rand(1,10), "bashed") + /obj/structure/blob/attackby(var/obj/item/weapon/W, var/mob/user) user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) playsound(loc, 'sound/effects/attackblob.ogg', 50, 1) visible_message("\The [src] has been attacked with \the [W][(user ? " by [user]." : ".")]") var/damage = W.force switch(W.damtype) - if(BURN) + if(BURN, BIOACID, ELECTROCUTE, OXY) if(overmind) damage *= overmind.blob_type.burn_multiplier else @@ -234,7 +321,7 @@ var/list/blobs = list() playsound(src.loc, 'sound/items/welder.ogg', 100, 1) else playsound(src, 'sound/weapons/tap.ogg', 50, 1) - if(BRUTE) + if(BRUTE, SEARING, TOX, CLONE) if(overmind) damage *= overmind.blob_type.brute_multiplier else diff --git a/code/modules/blob2/blobs/core.dm b/code/modules/blob2/blobs/core.dm index f43ec7ad6fd..b3633b406eb 100644 --- a/code/modules/blob2/blobs/core.dm +++ b/code/modules/blob2/blobs/core.dm @@ -12,6 +12,7 @@ var/list/blob_cores = list() health_regen = 0 //we regen in Life() instead of when pulsed var/datum/blob_type/desired_blob_type = null // If this is set, the core always creates an overmind possessing this blob type. var/difficulty_threshold = null // Otherwise if this is set, it picks a random blob_type that is equal or lower in difficulty. + var/difficulty_floor = null // Related to the above var, acts as a floor value to the above, inclusive. var/core_regen = 2 var/overmind_get_delay = 0 //we don't want to constantly try to find an overmind, this var tracks when we'll try to get an overmind again var/resource_delay = 0 @@ -23,14 +24,18 @@ var/list/blob_cores = list() ai_controlled = FALSE // Spawn these if you want a semi-random blob. +// Can give a random easy blob. /obj/structure/blob/core/random_easy difficulty_threshold = BLOB_DIFFICULTY_EASY +// Can give a random easy or medium blob. /obj/structure/blob/core/random_medium difficulty_threshold = BLOB_DIFFICULTY_MEDIUM +// Can give a random medium or hard blob. /obj/structure/blob/core/random_hard difficulty_threshold = BLOB_DIFFICULTY_HARD + difficulty_floor = BLOB_DIFFICULTY_MEDIUM // Spawn these if you want a specific blob. /obj/structure/blob/core/blazing_oil @@ -78,11 +83,20 @@ var/list/blob_cores = list() /obj/structure/blob/core/volatile_alluvium desired_blob_type = /datum/blob_type/volatile_alluvium +/obj/structure/blob/core/ravenous_macrophage + desired_blob_type = /datum/blob_type/ravenous_macrophage + +/obj/structure/blob/core/roiling_mold + desired_blob_type = /datum/blob_type/roiling_mold + +/obj/structure/blob/core/ectoplasmic_horror + desired_blob_type = /datum/blob_type/ectoplasmic_horror + /obj/structure/blob/core/classic desired_blob_type = /datum/blob_type/classic -/obj/structure/blob/core/New(var/newloc, var/client/new_overmind = null, new_rate = 2, placed = 0) - ..(newloc) +/obj/structure/blob/core/Initialize(newloc, client/new_overmind = null, new_rate = 2, placed = 0) + . = ..(newloc) blob_cores += src START_PROCESSING(SSobj, src) update_icon() //so it atleast appears @@ -93,6 +107,9 @@ var/list/blob_cores = list() point_rate = new_rate /obj/structure/blob/core/Destroy() + var/turf/T = get_turf(src) + new /obj/item/weapon/blobcore_chunk(T, overmind.blob_type) + blob_cores -= src if(overmind) overmind.blob_core = null @@ -130,6 +147,8 @@ var/list/blob_cores = list() if(prob(5)) B.change_to(/obj/structure/blob/shield/core, overmind) + overmind.blob_type.on_core_process(src) + /obj/structure/blob/core/proc/create_overmind(client/new_overmind, override_delay) if(overmind_get_delay > world.time && !override_delay) return @@ -180,7 +199,9 @@ var/list/blob_cores = list() var/list/valid_types = list() for(var/thing in subtypesof(/datum/blob_type)) var/datum/blob_type/BT = thing - if(initial(BT.difficulty) > difficulty_threshold) + if(initial(BT.difficulty) > difficulty_threshold) // Too hard. + continue + if(initial(BT.difficulty) < difficulty_floor) // Too easy. continue valid_types += BT - return pick(valid_types) \ No newline at end of file + return pick(valid_types) diff --git a/code/modules/blob2/blobs/factory.dm b/code/modules/blob2/blobs/factory.dm index 6ee41ccd53a..f9415a6e663 100644 --- a/code/modules/blob2/blobs/factory.dm +++ b/code/modules/blob2/blobs/factory.dm @@ -42,6 +42,8 @@ if(overmind.blob_type.ranged_spores) S.projectiletype = overmind.blob_type.spore_projectile S.projectilesound = overmind.blob_type.spore_firesound + S.projectile_accuracy = overmind.blob_type.spore_accuracy + S.projectile_dispersion = overmind.blob_type.spore_dispersion else //Other mobs don't add themselves in New. Ew. S.nest = src spores += S @@ -51,3 +53,8 @@ name = "sluggish factory blob" max_spores = 4 spore_cooldown = 16 SECONDS + +/obj/structure/blob/factory/turret // Produces a single spore slowly, but is intended to be used as a 'mortar' by the blob type. + name = "volatile factory blob" + max_spores = 1 + spore_cooldown = 10 SECONDS diff --git a/code/modules/blob2/blobs/node.dm b/code/modules/blob2/blobs/node.dm index aa1dcb3e8f3..5f54b6b80a1 100644 --- a/code/modules/blob2/blobs/node.dm +++ b/code/modules/blob2/blobs/node.dm @@ -33,4 +33,6 @@ var/list/blob_nodes = list() /obj/structure/blob/node/process() set waitfor = FALSE if(overmind) // This check is so that if the core is killed, the nodes stop. - pulse_area(overmind, 10, BLOB_NODE_PULSE_RANGE, BLOB_NODE_EXPAND_RANGE) \ No newline at end of file + pulse_area(overmind, 10, BLOB_NODE_PULSE_RANGE, BLOB_NODE_EXPAND_RANGE) + + overmind.blob_type.on_node_process(src) diff --git a/code/modules/blob2/blobs/resource.dm b/code/modules/blob2/blobs/resource.dm index 189abfd520d..0cd3f06f10a 100644 --- a/code/modules/blob2/blobs/resource.dm +++ b/code/modules/blob2/blobs/resource.dm @@ -9,10 +9,10 @@ var/resource_delay = 0 var/resource_cooldown = 4 SECONDS -/obj/structure/blob/resource/New(var/newloc, var/new_overmind) - ..(newloc, new_overmind) +/obj/structure/blob/resource/Initialize(newloc, new_overmind) if(overmind) overmind.resource_blobs += src + return ..() /obj/structure/blob/resource/Destroy() if(overmind) diff --git a/code/modules/blob2/core_chunk.dm b/code/modules/blob2/core_chunk.dm new file mode 100644 index 00000000000..8a5795aae93 --- /dev/null +++ b/code/modules/blob2/core_chunk.dm @@ -0,0 +1,99 @@ + +/obj/item/weapon/blobcore_chunk + name = "core chunk" + desc = "The remains of some strange life-form. It smells awful." + description_info = "Some blob types will have core effects when the chunk is used in-hand, toggled with an alt click, or constantly active." + icon = 'icons/mob/blob.dmi' + icon_state = "blobcore" + var/datum/blob_type/blob_type // The blob type this dropped from. + + var/active_ability_cooldown = 20 SECONDS + var/last_active_use = 0 + + var/should_tick = TRUE // Incase it's a toggle. + + var/passive_ability_cooldown = 5 SECONDS + var/last_passive_use = 0 + + drop_sound = 'sound/effects/slime_squish.ogg' + +/obj/item/weapon/blobcore_chunk/New(var/atom/newloc, var/datum/blob_type/parentblob = null) + ..(newloc) + + setup_blobtype(parentblob) + +/obj/item/weapon/blobcore_chunk/Destroy() + STOP_PROCESSING(SSobj, src) + + blob_type = null + + ..() + +/obj/item/weapon/blobcore_chunk/proc/setup_blobtype(var/datum/blob_type/parentblob = null) + if(!parentblob) + name = "inert [initial(name)]" + + else + blob_type = parentblob + name = "[blob_type.name] [initial(name)]" + + if(blob_type) + color = blob_type.color + if(LAZYLEN(blob_type.core_tech)) + origin_tech = blob_type.core_tech.Copy() + + if(blob_type.chunk_active_type == BLOB_CHUNK_CONSTANT) + should_tick = TRUE + else if(blob_type.chunk_active_type == BLOB_CHUNK_TOGGLE) + should_tick = FALSE + + active_ability_cooldown = blob_type.chunk_active_ability_cooldown + passive_ability_cooldown = blob_type.chunk_passive_ability_cooldown + + blob_type.chunk_setup(src) + + START_PROCESSING(SSobj, src) + +/obj/item/weapon/blobcore_chunk/proc/call_chunk_unique() + if(blob_type) + blob_type.chunk_unique(src, args) + return + +/obj/item/weapon/blobcore_chunk/proc/get_carrier(var/atom/target) + var/atom/A = target ? target.loc : src + if(!istype(A, /mob/living)) + A = get_carrier(A) + + if(isturf(A) || isarea(A)) // Something has gone horribly wrong if the second is true. + return FALSE // No mob is carrying us. + + return A + +/obj/item/weapon/blobcore_chunk/blob_act(obj/structure/blob/B) + if(B.overmind && !blob_type) + setup_blobtype(B.overmind.blob_type) + + return + +/obj/item/weapon/blobcore_chunk/attack_self(var/mob/user) + if(blob_type && world.time > active_ability_cooldown + last_active_use) + last_active_use = world.time + to_chat(user, "\icon [src] \The [src] gesticulates.") + blob_type.on_chunk_use(src, user) + else + to_chat(user, "\The [src] doesn't seem to respond.") + ..() + +/obj/item/weapon/blobcore_chunk/process() + if(blob_type && should_tick && world.time > passive_ability_cooldown + last_passive_use) + last_passive_use = world.time + blob_type.on_chunk_tick(src) + +/obj/item/weapon/blobcore_chunk/AltClick(mob/living/carbon/user) + if(blob_type &&blob_type.chunk_active_type == BLOB_CHUNK_TOGGLE) + should_tick = !should_tick + + if(should_tick) + to_chat(user, "\The [src] shudders with life.") + else + to_chat(user, "\The [src] stills, returning to a death-like state.") diff --git a/code/modules/blob2/overmind/overmind.dm b/code/modules/blob2/overmind/overmind.dm index 223cb41e605..ffcd347dd81 100644 --- a/code/modules/blob2/overmind/overmind.dm +++ b/code/modules/blob2/overmind/overmind.dm @@ -23,7 +23,7 @@ var/list/overminds = list() var/ai_controlled = TRUE var/auto_pilot = FALSE // If true, and if a client is attached, the AI routine will continue running. -/mob/observer/blob/New(var/newloc, pre_placed = 0, starting_points = 60, desired_blob_type = null) +/mob/observer/blob/Initialize(newloc, pre_placed = 0, starting_points = 60, desired_blob_type = null) blob_points = starting_points if(pre_placed) //we already have a core! placed = 1 @@ -40,12 +40,11 @@ var/list/overminds = list() color = blob_type.complementary_color if(blob_core) blob_core.update_icon() - level_seven_blob_announcement(blob_core) - ..(newloc) + return ..(newloc) /mob/observer/blob/Destroy() - for(var/BL in blobs) + for(var/BL in GLOB.all_blobs) var/obj/structure/blob/B = BL if(B && B.overmind == src) B.overmind = null @@ -66,7 +65,7 @@ var/list/overminds = list() if(blob_core) stat(null, "Core Health: [blob_core.integrity]") stat(null, "Power Stored: [blob_points]/[max_blob_points]") - stat(null, "Total Blobs: [blobs.len]") + stat(null, "Total Blobs: [GLOB.all_blobs.len]") /mob/observer/blob/Move(NewLoc, Dir = 0) if(placed) diff --git a/code/modules/blob2/overmind/powers.dm b/code/modules/blob2/overmind/powers.dm index 360bfbb10b2..f5727e94bfe 100644 --- a/code/modules/blob2/overmind/powers.dm +++ b/code/modules/blob2/overmind/powers.dm @@ -22,6 +22,9 @@ to_chat(src, "There is no blob here!") return + if(B.overmind != src) + to_chat(src, span("warning", "This blob isn't controlled by you.")) + if(!istype(B, /obj/structure/blob/normal)) to_chat(src, "Unable to use this blob, find a normal one.") return @@ -66,7 +69,7 @@ return FALSE var/obj/structure/blob/B = null - var/list/potential_blobs = blobs.Copy() + var/list/potential_blobs = GLOB.all_blobs.Copy() while(potential_blobs.len) var/obj/structure/blob/temp = pick(potential_blobs) if(!(locate(/obj/structure/blob/node) in range(temp, BLOB_NODE_PULSE_RANGE) ) && !(locate(/obj/structure/blob/core) in range(temp, BLOB_CORE_PULSE_RANGE) )) @@ -77,6 +80,8 @@ potential_blobs -= temp // Don't take up the core's shield spot. else if(!istype(temp, /obj/structure/blob/normal)) potential_blobs -= temp // Not a normal blob. + else if(temp.overmind != src) + potential_blobs -= temp // Not our blob. else B = temp break @@ -107,7 +112,7 @@ return FALSE var/obj/structure/blob/B = null - var/list/potential_blobs = blobs.Copy() + var/list/potential_blobs = GLOB.all_blobs.Copy() while(potential_blobs.len) var/obj/structure/blob/temp = pick(potential_blobs) if(!(locate(/obj/structure/blob/node) in range(temp, BLOB_NODE_PULSE_RANGE) ) && !(locate(/obj/structure/blob/core) in range(temp, BLOB_CORE_PULSE_RANGE) )) @@ -118,6 +123,8 @@ potential_blobs -= temp // Don't take up the core's shield spot. else if(!istype(temp, /obj/structure/blob/normal)) potential_blobs -= temp // Not a normal blob. + else if(temp.overmind != src) + potential_blobs -= temp // Not our blob. else B = temp break @@ -149,7 +156,7 @@ return FALSE var/obj/structure/blob/B = null - var/list/potential_blobs = blobs.Copy() + var/list/potential_blobs = GLOB.all_blobs.Copy() while(potential_blobs.len) var/obj/structure/blob/temp = pick(potential_blobs) if(locate(/obj/structure/blob/node) in range(temp, 5) ) @@ -158,6 +165,8 @@ potential_blobs -= temp else if(!istype(temp, /obj/structure/blob/normal)) potential_blobs -= temp + else if(temp.overmind != src) + potential_blobs -= temp // Not our blob. else B = temp break @@ -184,7 +193,7 @@ other_T = get_step(T, direction) if(other_T) B = locate(/obj/structure/blob) in other_T - if(B) + if(B && B.overmind == src) break if(!B) @@ -216,7 +225,7 @@ for(var/direction in cardinal) var/turf/T = get_step(L, direction) B = locate(/obj/structure/blob) in T - if(B) + if(B && B.overmind == src) break if(!B) continue diff --git a/code/modules/blob2/overmind/types.dm b/code/modules/blob2/overmind/types.dm index 24ffbd6b1ba..79df541aae5 100644 --- a/code/modules/blob2/overmind/types.dm +++ b/code/modules/blob2/overmind/types.dm @@ -37,12 +37,19 @@ var/spore_firesound = 'sound/effects/slime_squish.ogg' var/spore_range = 7 // The range the spore can fire. var/spore_projectile = /obj/item/projectile/energy/blob + var/spore_accuracy = 0 // Projectile accuracy + var/spore_dispersion = 0 // Dispersion. var/factory_type = /obj/structure/blob/factory var/resource_type = /obj/structure/blob/resource var/node_type = /obj/structure/blob/node var/shield_type = /obj/structure/blob/shield + var/list/core_tech = list(TECH_BIO = 4, TECH_MATERIAL = 3) // Tech for the item created when a core is destroyed. + var/chunk_active_type = BLOB_CHUNK_TOGGLE + var/chunk_active_ability_cooldown = 20 SECONDS + var/chunk_passive_ability_cooldown = 5 SECONDS + // Called when a blob receives damage. This needs to return the final damage or blobs will be immortal. /datum/blob_type/proc/on_received_damage(var/obj/structure/blob/B, damage, damage_type) return damage @@ -63,6 +70,14 @@ /datum/blob_type/proc/on_pulse(var/obj/structure/blob/B) return +// Called when the core processes. +/datum/blob_type/proc/on_core_process(var/obj/structure/blob/B) + return + +// Called when a node processes. +/datum/blob_type/proc/on_node_process(var/obj/structure/blob/B) + return + // Called when hit by EMP. /datum/blob_type/proc/on_emp(obj/structure/blob/B, severity) return @@ -71,574 +86,26 @@ /datum/blob_type/proc/on_water(obj/structure/blob/B, amount) return -// Spore things +// Spore death /datum/blob_type/proc/on_spore_death(mob/living/simple_mob/blob/spore/S) return +// Spore handle_special call. +/datum/blob_type/proc/on_spore_lifetick(mob/living/simple_mob/blob/spore/S) + return -// Subtypes +// Blob core chunk process. +/datum/blob_type/proc/on_chunk_tick(obj/item/weapon/blobcore_chunk/B) + return -// Super fast spreading, but weak to EMP. -/datum/blob_type/grey_goo - name = "grey tide" - desc = "A swarm of self replicating nanomachines. Extremely illegal and dangerous, the EIO was meant to prevent this from showing up a second time." - effect_desc = "Spreads much faster than average, but is harmed greatly by electromagnetic pulses." - ai_desc = "genocidal" - difficulty = BLOB_DIFFICULTY_SUPERHARD // Fastest spread of them all and has snowballing capabilities. - color = "#888888" - complementary_color = "#CCCCCC" - spread_modifier = 1.0 - slow_spread_with_size = FALSE - ai_aggressiveness = 80 - can_build_resources = TRUE - attack_message = "The tide tries to swallow you" - attack_message_living = ", and you feel your skin dissolve" - attack_message_synth = ", and your external plating dissolves" +// Blob core chunk use in-hand. +/datum/blob_type/proc/on_chunk_use(obj/item/weapon/blobcore_chunk/B, mob/user) + return -/datum/blob_type/grey_goo/on_emp(obj/structure/blob/B, severity) - B.adjust_integrity(-(20 / severity)) +// Proc that is unique to the blob type. +/datum/blob_type/proc/chunk_unique(obj/item/weapon/blobcore_chunk/B, var/list/extra_args = null) + return -// Slow, tanky blobtype which uses not spores, but hivebots, as its soldiers. -/datum/blob_type/fabrication_swarm - name = "iron tide" - desc = "A swarm of self replicating construction nanites. Incredibly illegal, but only mildly dangerous." - effect_desc = "Slow-spreading, but incredibly resiliant. It has a chance to harden itself against attacks automatically for no resource cost, and uses cheaply-constructed hivebots as soldiers." - ai_desc = "defensive" - difficulty = BLOB_DIFFICULTY_MEDIUM // Emitters are okay, EMP is great. - color = "#666666" - complementary_color = "#B7410E" - spread_modifier = 0.2 - can_build_factories = TRUE - can_build_resources = TRUE - attack_message = "The tide tries to shove you away" - attack_message_living = ", and your skin itches" - attack_message_synth = ", and your external plating dulls" - attack_verb = "shoves" - armor_pen = 40 - damage_lower = 10 - damage_upper = 25 - brute_multiplier = 0.25 - burn_multiplier = 0.6 - ai_aggressiveness = 50 //Really doesn't like you near it. - 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)) - if(damage > 0) - var/reinforce_probability = min(damage, 70) - if(prob(reinforce_probability)) - B.visible_message("The [name] quakes, before rapidly hardening!") - new/obj/structure/blob/shield(get_turf(B), B.overmind) - qdel(B) - return ..() - -/datum/blob_type/fabrication_swarm/on_emp(obj/structure/blob/B, severity) - B.adjust_integrity(-(30 / severity)) - -// A blob meant to be fought like a fire. -/datum/blob_type/blazing_oil - name = "blazing oil" - desc = "A strange, extremely vicious liquid that seems to burn endlessly." - ai_desc = "aggressive" - effect_desc = "Cannot be harmed by burning weapons, and ignites entities it attacks. It will also gradually heat up the area it is in. Water harms it greatly." - difficulty = BLOB_DIFFICULTY_MEDIUM // Emitters don't work but extinguishers are fairly common. Might need fire/atmos suits. - color = "#B68D00" - complementary_color = "#BE5532" - spread_modifier = 0.5 - ai_aggressiveness = 50 - damage_type = BURN - burn_multiplier = 0 // Fire immunity - attack_message = "The blazing oil splashes you with its burning oil" - attack_message_living = ", and you feel your skin char and melt" - attack_message_synth = ", and your external plating melts" - attack_verb = "splashes" - -/datum/blob_type/blazing_oil/on_attack(obj/structure/blob/B, mob/living/victim) - victim.fire_act() // Burn them. - -/datum/blob_type/blazing_oil/on_water(obj/structure/blob/B, amount) - spawn(1) - B.adjust_integrity(-(amount * 5)) - -/datum/blob_type/blazing_oil/on_pulse(var/obj/structure/blob/B) - var/turf/T = get_turf(B) - if(!T) - return - var/datum/gas_mixture/env = T.return_air() - if(env) - env.add_thermal_energy(10 * 1000) - - -// Mostly a classic blob. No nodes, no other blob types. -/datum/blob_type/classic - name = "lethargic blob" - desc = "A mass that seems bound to its core." - ai_desc = "unambitious" - effect_desc = "Will not create any nodes. Has average strength and resistances." - difficulty = BLOB_DIFFICULTY_EASY // Behaves almost like oldblob, and as such is about as easy as oldblob. - color = "#AAFF00" - complementary_color = "#57787B" - can_build_nodes = FALSE - spread_modifier = 1.0 - ai_aggressiveness = 0 - - -// Makes robots cry. Really weak to brute damage. -/datum/blob_type/electromagnetic_web - name = "electromagnetic web" - desc = "A gooy mesh that generates an electromagnetic field. Electronics will likely be ruined if nearby." - ai_desc = "balanced" - effect_desc = "Causes an EMP on attack, and will EMP upon death. It is also more fragile than average, especially to brute force." - difficulty = BLOB_DIFFICULTY_MEDIUM // Rough for robots but otherwise fragile and can be fought at range like most blobs anyways. - color = "#83ECEC" - complementary_color = "#EC8383" - damage_type = BURN - damage_lower = 10 - damage_upper = 20 - brute_multiplier = 3 - burn_multiplier = 2 - ai_aggressiveness = 60 - attack_message = "The web lashes you" - attack_message_living = ", and you hear a faint buzzing" - attack_message_synth = ", and your electronics get badly damaged" - attack_verb = "lashes" - -/datum/blob_type/electromagnetic_web/on_death(obj/structure/blob/B) - empulse(B.loc, 0, 1, 2) - -/datum/blob_type/electromagnetic_web/on_attack(obj/structure/blob/B, mob/living/victim) - victim.emp_act(2) - - -// Makes spores that spread the blob and infest dead people. -/datum/blob_type/fungal_bloom - name = "fungal bloom" - desc = "A massive network of rapidly expanding mycelium. Large spore-like particles can be seen spreading from it." - ai_desc = "swarming" - effect_desc = "Creates floating spores that attack enemies from specialized blobs, and will spread the blob if killed. The spores can also \ - infest deceased biological humanoids. It is vulnerable to fire." - difficulty = BLOB_DIFFICULTY_MEDIUM // The spores are more of an annoyance but can be difficult to contain. - color = "#AAAAAA" - complementary_color = "#FFFFFF" - damage_type = TOX - damage_lower = 15 - damage_upper = 25 - spread_modifier = 0.3 // Lower, since spores will do a lot of the spreading. - burn_multiplier = 3 - ai_aggressiveness = 40 - can_build_factories = TRUE - spore_type = /mob/living/simple_mob/blob/spore/infesting - -/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) - var/obj/structure/blob/B = locate(/obj/structure/blob) in T - if(B) // Is there already a blob here? If so, just heal it. - B.adjust_integrity(10) - else - B = new /obj/structure/blob/normal(T, S.overmind) // Otherwise spread it. - B.visible_message("\A [B] forms on \the [T] as \the [S] bursts!") - -// Makes tons of weak spores whenever it spreads. -/datum/blob_type/fulminant_organism - name = "fulminant organism" - desc = "A self expanding mass of living biomaterial, that appears to produce entities to defend it, much like a living organism's immune system." - ai_desc = "swarming" - effect_desc = "Creates weak floating spores that attack enemies from specialized blobs, has a chance to also create a spore when \ - it spreads onto a new tile, and has a chance to create a spore when a blob tile is destroyed. It is more fragile than average to all types of damage." - difficulty = BLOB_DIFFICULTY_HARD // Loads of spores that can overwhelm, and spreads quickly. - color = "#FF0000" // Red - complementary_color = "#FFCC00" // Orange-ish - damage_type = TOX - damage_lower = 10 - damage_upper = 20 - spread_modifier = 0.7 - burn_multiplier = 1.5 - brute_multiplier = 1.5 - ai_aggressiveness = 30 // The spores do most of the fighting. - can_build_factories = TRUE - 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_mob/blob/spore/S = new spore_type(T) - if(istype(S)) - S.overmind = O - O.blob_mobs.Add(S) - else - S.faction = "blob" - S.update_icons() - -/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_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 - B.overmind.blob_mobs.Add(S) - else - S.faction = "blob" - S.update_icons() - - -// Auto-retaliates against melee attacks. Weak to projectiles. -/datum/blob_type/reactive_spines - name = "reactive spines" - desc = "An ever-growing lifeform with a large amount of sharp, powerful looking spines. They look like they could pierce most armor." - ai_desc = "defensive" - effect_desc = "When attacked by a melee weapon, it will automatically retaliate, striking the attacker with an armor piercing attack. \ - The blob itself is rather weak to all forms of attacks regardless, and lacks automatic realitation from ranged attacks." - difficulty = BLOB_DIFFICULTY_EASY // Potentially deadly to people not knowing the mechanics, but otherwise fairly tame, due to its slow spread and weakness. - color = "#9ACD32" - complementary_color = "#FFA500" - damage_type = BRUTE - damage_lower = 30 - damage_upper = 40 - armor_pen = 50 // Even with riot armor and tactical jumpsuit, you'd have 90 armor, reduced by 50, totaling 40. Getting hit for around 21 damage is still rough. - burn_multiplier = 2.0 - brute_multiplier = 2.0 - spread_modifier = 0.35 // Ranged projectiles tend to have a higher material cost, so ease up on the spreading. - ai_aggressiveness = 40 - attack_message = "The blob stabs you" - attack_message_living = ", and you feel sharp spines pierce your flesh" - attack_message_synth = ", and your external plating is pierced by sharp spines" - attack_verb = "stabs" - -// Even if the melee attack is enough to one-shot this blob, it gets to retaliate at least once. -/datum/blob_type/reactive_spines/on_received_damage(var/obj/structure/blob/B, damage, damage_type, mob/living/attacker) - if(damage > 0 && attacker && get_dist(B, attacker) <= 1) - B.visible_message("The [name] retaliates, lashing out at \the [attacker]!") - B.blob_attack_animation(attacker, B.overmind) - attacker.blob_act(B) - return ..() - - -// Spreads damage to nearby blobs, and attacks with the force of all nearby blobs. -/datum/blob_type/synchronous_mesh - name = "synchronous mesh" - desc = "A mesh that seems strongly interconnected to itself. It moves slowly, but with purpose." - ai_desc = "defensive" - effect_desc = "When damaged, spreads the damage to nearby blobs. When attacking, damage is increased based on how many blobs are near the target. It is resistant to burn damage." - difficulty = BLOB_DIFFICULTY_EASY // Mostly a tank and spank. - color = "#65ADA2" - complementary_color = "#AD6570" - damage_type = BRUTE - damage_lower = 10 - damage_upper = 15 - brute_multiplier = 0.5 - burn_multiplier = 0.2 // Emitters do so much damage that this will likely not matter too much. - spread_modifier = 0.3 // Since the blob spreads damage, it takes awhile to actually kill, so spread is reduced. - ai_aggressiveness = 60 - attack_message = "The mesh synchronously strikes you" - attack_verb = "synchronously strikes" - var/synchronously_attacking = FALSE - -/datum/blob_type/synchronous_mesh/on_attack(obj/structure/blob/B, mob/living/victim) - if(synchronously_attacking) - return - synchronously_attacking = TRUE // To avoid infinite loops. - for(var/obj/structure/blob/C in orange(1, victim)) - if(victim) // Some things delete themselves when dead... - C.blob_attack_animation(victim) - victim.blob_act(C) - synchronously_attacking = FALSE - -/datum/blob_type/synchronous_mesh/on_received_damage(var/obj/structure/blob/B, damage, damage_type) - var/list/blobs_to_hurt = list() // Maximum split is 9, reducing the damage each blob takes to 11.1% but doing that damage to 9 blobs. - for(var/obj/structure/blob/C in range(1, B)) - if(!istype(C, /obj/structure/blob/core) && !istype(C, /obj/structure/blob/node) && C.overmind && (C.overmind == B.overmind) ) //if it doesn't have the same 'ownership' or is a core or node, don't split damage to it - blobs_to_hurt += C - - for(var/thing in blobs_to_hurt) - var/obj/structure/blob/C = thing - if(C == B) - continue // We'll damage this later. - - C.adjust_integrity(-(damage / blobs_to_hurt.len)) - - return damage / max(blobs_to_hurt.len, 1) // To hurt the blob that got hit. - - -/datum/blob_type/shifting_fragments - name = "shifting fragments" - desc = "A collection of fragments that seem to shuffle around constantly." - ai_desc = "evasive" - effect_desc = "Swaps places with nearby blobs when hit or when expanding." - difficulty = BLOB_DIFFICULTY_EASY - color = "#C8963C" - complementary_color = "#3C6EC8" - damage_type = BRUTE - damage_lower = 20 - damage_upper = 30 - brute_multiplier = 0.5 - burn_multiplier = 0.5 - spread_modifier = 0.5 - ai_aggressiveness = 30 - attack_message = "A fragment strikes you" - attack_verb = "strikes" - -/datum/blob_type/shifting_fragments/on_received_damage(var/obj/structure/blob/B, damage, damage_type) - if(damage > 0 && prob(60)) - var/list/available_blobs = list() - for(var/obj/structure/blob/OB in orange(1, B)) - if((istype(OB, /obj/structure/blob/normal) || (istype(OB, /obj/structure/blob/shield) && prob(25))) && OB.overmind && OB.overmind == B.overmind) - available_blobs += OB - if(available_blobs.len) - var/obj/structure/blob/targeted = pick(available_blobs) - var/turf/T = get_turf(targeted) - targeted.forceMove(get_turf(B)) - B.forceMove(T) // Swap places. - return ..() - -/datum/blob_type/shifting_fragments/on_expand(var/obj/structure/blob/B, var/obj/structure/blob/new_B, var/turf/T, var/mob/observer/blob/O) - if(istype(B, /obj/structure/blob/normal) || (istype(B, /obj/structure/blob/shield) && prob(25))) - new_B.forceMove(get_turf(B)) - B.forceMove(T) - -// A very cool blob, literally. -/datum/blob_type/cryogenic_goo - name = "cryogenic goo" - desc = "A mass of goo that freezes anything it touches." - ai_desc = "balanced" - effect_desc = "Lowers the temperature of the room passively, and will also greatly lower the temperature of anything it attacks." - difficulty = BLOB_DIFFICULTY_MEDIUM - color = "#8BA6E9" - complementary_color = "#7D6EB4" - damage_type = BURN - damage_lower = 15 - damage_upper = 25 - brute_multiplier = 0.25 - burn_multiplier = 1.2 - spread_modifier = 0.5 - ai_aggressiveness = 50 - attack_message = "The goo stabs you" - attack_message_living = ", and you feel an intense chill from within" - attack_message_synth = ", and your system reports lower internal temperatures" - attack_verb = "stabs" - -/datum/blob_type/cryogenic_goo/on_attack(obj/structure/blob/B, mob/living/victim) - if(ishuman(victim)) - var/mob/living/carbon/human/H = victim - var/protection = H.get_cold_protection(50) - if(protection < 1) - var/temp_change = 80 // Each hit can reduce temperature by up to 80 kelvin. - var/datum/species/baseline = GLOB.all_species["Human"] - var/temp_cap = baseline.cold_level_3 - 5 // Can't go lower than this. - - var/cold_factor = abs(protection - 1) - temp_change *= cold_factor // If protection was at 0.5, then they only lose 40 kelvin. - - H.bodytemperature = max(H.bodytemperature - temp_change, temp_cap) - else // Just do some extra burn for mobs who don't process bodytemp - victim.adjustFireLoss(20) - -/datum/blob_type/cryogenic_goo/on_pulse(var/obj/structure/blob/B) - var/turf/simulated/T = get_turf(B) - if(!istype(T)) - return - T.freeze_floor() - var/datum/gas_mixture/env = T.return_air() - if(env) - env.add_thermal_energy(-10 * 1000) - -// Electric blob that stuns. -/datum/blob_type/energized_jelly - name = "energized jelly" - desc = "A substance that seems to generate electricity." - ai_desc = "suppressive" - effect_desc = "When attacking an entity, it will shock them with a strong electric shock. Repeated attacks can stun the target." - difficulty = BLOB_DIFFICULTY_MEDIUM - color = "#EFD65A" - complementary_color = "#00E5B1" - damage_type = BURN - damage_lower = 5 - damage_upper = 10 - brute_multiplier = 0.5 - burn_multiplier = 0.5 - spread_modifier = 0.35 - ai_aggressiveness = 80 - attack_message = "The jelly prods you" - attack_message_living = ", and your flesh burns as electricity arcs into you" - attack_message_synth = ", and your internal circuity is overloaded as electricity arcs into you" - attack_verb = "prods" - -/datum/blob_type/energized_jelly/on_attack(obj/structure/blob/B, mob/living/victim, def_zone) - victim.electrocute_act(10, src, 1, def_zone) - victim.stun_effect_act(0, 40, BP_TORSO, src) - - -// A blob with area of effect attacks. -/datum/blob_type/explosive_lattice - name = "explosive lattice" - desc = "A very unstable lattice that looks quite explosive." - ai_desc = "aggressive" - effect_desc = "When attacking an entity, it will cause a small explosion, hitting things near the target. It is somewhat resilient, but weaker to brute damage." - difficulty = BLOB_DIFFICULTY_MEDIUM - color = "#8B2500" - complementary_color = "#00668B" - damage_type = BURN - damage_lower = 25 - damage_upper = 35 - armor_check = "bomb" - armor_pen = 5 // This is so blob hits still hurt just slightly when wearing a bomb suit (100 bomb resist). - brute_multiplier = 0.75 - burn_multiplier = 0.5 - spread_modifier = 0.4 - ai_aggressiveness = 75 - attack_message = "The lattice blasts you" - attack_message_living = ", and your flesh burns from the blast wave" - attack_message_synth = ", and your plating burns from the blast wave" - attack_verb = "blasts" - var/exploding = FALSE - -/datum/blob_type/explosive_lattice/on_attack(obj/structure/blob/B, mob/living/victim, def_zone) // This doesn't use actual bombs since they're too strong and it would hurt the blob. - if(exploding) // We're busy, don't infinite loop us. - return - - exploding = TRUE - for(var/mob/living/L in range(get_turf(victim), 1)) // We don't use orange(), in case there is more than one mob on the target tile. - if(L == victim) // Already hit. - continue - if(L.faction == "blob") // No friendly fire - continue - L.blob_act() - - // Visual effect. - var/datum/effect/system/explosion/E = new/datum/effect/system/explosion/smokeless() - var/turf/T = get_turf(victim) - E.set_up(T) - E.start() - - // Now for sounds. - playsound(T, "explosion", 75, 1) // Local sound. - - for(var/mob/M in player_list) // For everyone else. - if(M.z == T.z && get_dist(M, T) > world.view && !M.ear_deaf && !istype(M.loc,/turf/space)) - M << 'sound/effects/explosionfar.ogg' - - exploding = FALSE - - -// A blob that slips and drowns you. -/datum/blob_type/pressurized_slime - name = "pressurized slime" - desc = "A large mass that seems to leak slippery fluid everywhere." - ai_desc = "drowning" - effect_desc = "Wets the floor when expanding and when hit. Tries to drown its enemies when attacking. It forces itself past internals. Resistant to burn damage." - difficulty = BLOB_DIFFICULTY_HARD - color = "#AAAABB" - complementary_color = "#BBBBAA" - damage_type = OXY - damage_lower = 5 - damage_upper = 15 - armor_check = null - brute_multiplier = 0.6 - burn_multiplier = 0.2 - spread_modifier = 0.4 - ai_aggressiveness = 75 - attack_message = "The slime splashes into you" - attack_message_living = ", and you gasp for breath" - attack_message_synth = ", and the fluid wears down on your components" - attack_verb = "splashes" - -/datum/blob_type/pressurized_slime/on_attack(obj/structure/blob/B, mob/living/victim, def_zone) - victim.water_act(5) - var/turf/simulated/T = get_turf(victim) - if(T) - T.wet_floor() - -/datum/blob_type/pressurized_slime/on_received_damage(var/obj/structure/blob/B, damage, damage_type) - wet_surroundings(B, damage) - return ..() - -/datum/blob_type/pressurized_slime/on_pulse(var/obj/structure/blob/B) - var/turf/simulated/T = get_turf(B) - if(!istype(T)) - return - T.wet_floor() - -/datum/blob_type/pressurized_slime/on_death(obj/structure/blob/B) - B.visible_message("The blob ruptures, spraying the area with liquid!") - wet_surroundings(B, 50) - -/datum/blob_type/pressurized_slime/proc/wet_surroundings(var/obj/structure/blob/B, var/probability = 50) - for(var/turf/simulated/T in range(1, B)) - if(prob(probability)) - T.wet_floor() - for(var/atom/movable/AM in T) - AM.water_act(2) - - -// A blob that irradiates everything. -/datum/blob_type/radioactive_ooze - name = "radioactive ooze" - desc = "A goopy mess that glows with an unhealthy aura." - ai_desc = "radical" - effect_desc = "Irradiates the surrounding area, and inflicts toxic attacks. Weak to brute damage." - difficulty = BLOB_DIFFICULTY_MEDIUM - color = "#33CC33" - complementary_color = "#99FF66" - damage_type = TOX - damage_lower = 20 - damage_upper = 30 - armor_check = "rad" - brute_multiplier = 0.75 - burn_multiplier = 0.2 - spread_modifier = 0.8 - ai_aggressiveness = 50 - attack_message = "The ooze splashes you" - attack_message_living = ", and you feel warm" - attack_message_synth = ", and your internal systems are bombarded by ionizing radiation" - attack_verb = "splashes" - -/datum/blob_type/radioactive_ooze/on_pulse(var/obj/structure/blob/B) - SSradiation.radiate(B, 200) - -/datum/blob_type/volatile_alluvium - name = "volatile alluvium" - desc = "A churning, earthy mass that moves in waves." - ai_desc = "earthen" - effect_desc = "Moves slowly, producing weak ranged spores to defend itself, and inflicts brute attacks. Attempts to disarm nearby attackers. Weak to water." - difficulty = BLOB_DIFFICULTY_HARD //Slow-starting, but can be overwhelming if left alone. - color = "#6B481E" - complementary_color = "#7F471F" - damage_lower = 10 - damage_upper = 20 - armor_pen = 40 - brute_multiplier = 0.7 - burn_multiplier = 0.5 - spread_modifier = 0.5 - ai_aggressiveness = 50 - attack_message = "The alluvium crashes against you" - attack_verb = "crashes against" - can_build_factories = TRUE - can_build_resources = TRUE - spore_type = /mob/living/simple_mob/blob/spore/weak - ranged_spores = TRUE - spore_range = 3 - spore_projectile = /obj/item/projectile/energy/blob/splattering - factory_type = /obj/structure/blob/factory/sluggish - resource_type = /obj/structure/blob/resource/sluggish - -/datum/blob_type/volatile_alluvium/on_received_damage(var/obj/structure/blob/B, damage, damage_type, mob/living/attacker) - if(damage > 0 && attacker && get_dist(B, attacker) <= 2 && prob(min(damage, 70)) && istype(attacker, /mob/living/carbon/human)) // Melee weapons of any type carried by a human will have a high chance of being stolen. - var/mob/living/carbon/human/H = attacker - var/obj/item/I = H.get_active_hand() - H.drop_item() - if(I) - if((I.sharp || I.edge) && !istype(I, /obj/item/weapon/gun)) - I.forceMove(get_turf(B)) // Disarmed entirely. - B.visible_message("The [name] heaves, \the [attacker]'s weapon becoming stuck in the churning mass!") - else - I.throw_at(B, 2, 4) // Just yoinked. - B.visible_message("The [name] heaves, pulling \the [attacker]'s weapon from their hands!") - B.blob_attack_animation(attacker, B.overmind) - return ..() - -/datum/blob_type/volatile_alluvium/on_water(obj/structure/blob/B, amount) - spawn(1) - var/damage = amount * 2 - B.adjust_integrity(-(damage)) - if(B && prob(damage)) - B.visible_message("The [name] begins to crumble!") +// Set up the blob type for the chunk. +/datum/blob_type/proc/chunk_setup(obj/item/weapon/blobcore_chunk/B) + return diff --git a/code/modules/blob2/overmind/types/blazing_oil.dm b/code/modules/blob2/overmind/types/blazing_oil.dm new file mode 100644 index 00000000000..094083e7780 --- /dev/null +++ b/code/modules/blob2/overmind/types/blazing_oil.dm @@ -0,0 +1,45 @@ +// A blob meant to be fought like a fire. +/datum/blob_type/blazing_oil + name = "blazing oil" + desc = "A strange, extremely vicious liquid that seems to burn endlessly." + ai_desc = "aggressive" + effect_desc = "Cannot be harmed by burning weapons, and ignites entities it attacks. It will also gradually heat up the area it is in. Water harms it greatly." + difficulty = BLOB_DIFFICULTY_MEDIUM // Emitters don't work but extinguishers are fairly common. Might need fire/atmos suits. + color = "#B68D00" + complementary_color = "#BE5532" + spread_modifier = 0.5 + ai_aggressiveness = 50 + damage_type = BURN + burn_multiplier = 0 // Fire immunity + chunk_active_ability_cooldown = 4 MINUTES + attack_message = "The blazing oil splashes you with its burning oil" + attack_message_living = ", and you feel your skin char and melt" + attack_message_synth = ", and your external plating melts" + attack_verb = "splashes" + +/datum/blob_type/blazing_oil/on_attack(obj/structure/blob/B, mob/living/victim) + victim.fire_act() // Burn them. + +/datum/blob_type/blazing_oil/on_water(obj/structure/blob/B, amount) + spawn(1) + B.adjust_integrity(-(amount * 5)) + +/datum/blob_type/blazing_oil/on_pulse(var/obj/structure/blob/B) + var/turf/T = get_turf(B) + if(!T) + return + var/datum/gas_mixture/env = T.return_air() + if(env) + env.add_thermal_energy(10 * 1000) + +/datum/blob_type/blazing_oil/on_chunk_tick(obj/item/weapon/blobcore_chunk/B) + var/turf/T = get_turf(B) + if(!T) + return + var/datum/gas_mixture/env = T.return_air() + if(env) + env.add_thermal_energy(10 * 1000) + +/datum/blob_type/blazing_oil/on_chunk_use(obj/item/weapon/blobcore_chunk/B, mob/living/user) + user.add_modifier(/datum/modifier/exothermic, 5 MINUTES) + return \ No newline at end of file diff --git a/code/modules/blob2/overmind/types/classic.dm b/code/modules/blob2/overmind/types/classic.dm new file mode 100644 index 00000000000..450324b4932 --- /dev/null +++ b/code/modules/blob2/overmind/types/classic.dm @@ -0,0 +1,37 @@ +// Mostly a classic blob. No nodes, no other blob types. +/datum/blob_type/classic + name = "lethargic blob" + desc = "A mass that seems bound to its core." + ai_desc = "unambitious" + effect_desc = "Will not create any nodes. Has average strength and resistances." + difficulty = BLOB_DIFFICULTY_EASY // Behaves almost like oldblob, and as such is about as easy as oldblob. + color = "#AAFF00" + complementary_color = "#57787B" + can_build_nodes = FALSE + spread_modifier = 1.0 + ai_aggressiveness = 0 + +/datum/blob_type/classic/on_chunk_use(obj/item/weapon/blobcore_chunk/B, mob/living/user) + var/turf/T = get_turf(B) + + to_chat(user, "\The [B] produces a soothing ooze!") + + T.visible_message("\The [B] shudders at \the [user]'s touch, before disgorging a disgusting ooze.") + + for(var/turf/simulated/floor/F in view(2, T)) + spawn() + var/obj/effect/effect/water/splash = new(T) + splash.create_reagents(15) + splash.reagents.add_reagent("blood", 10,list("blood_colour" = color)) + splash.set_color() + + splash.set_up(F, 2, 3) + + var/obj/effect/decal/cleanable/chemcoating/blood = locate() in T + if(!istype(blood)) + blood = new(T) + blood.reagents.add_reagent("blood", 10,list("blood_colour" = color)) + blood.reagents.add_reagent("tricorlidaze", 5) + blood.update_icon() + + return \ No newline at end of file diff --git a/code/modules/blob2/overmind/types/cryogenic_goo.dm b/code/modules/blob2/overmind/types/cryogenic_goo.dm new file mode 100644 index 00000000000..32684ed58f3 --- /dev/null +++ b/code/modules/blob2/overmind/types/cryogenic_goo.dm @@ -0,0 +1,59 @@ +// A very cool blob, literally. +/datum/blob_type/cryogenic_goo + name = "cryogenic goo" + desc = "A mass of goo that freezes anything it touches." + ai_desc = "balanced" + effect_desc = "Lowers the temperature of the room passively, and will also greatly lower the temperature of anything it attacks." + difficulty = BLOB_DIFFICULTY_MEDIUM + color = "#8BA6E9" + complementary_color = "#7D6EB4" + damage_type = BURN + damage_lower = 15 + damage_upper = 25 + brute_multiplier = 0.25 + burn_multiplier = 1.2 + spread_modifier = 0.5 + ai_aggressiveness = 50 + chunk_active_ability_cooldown = 4 MINUTES + attack_message = "The goo stabs you" + attack_message_living = ", and you feel an intense chill from within" + attack_message_synth = ", and your system reports lower internal temperatures" + attack_verb = "stabs" + +/datum/blob_type/cryogenic_goo/on_attack(obj/structure/blob/B, mob/living/victim) + if(ishuman(victim)) + var/mob/living/carbon/human/H = victim + var/protection = H.get_cold_protection(50) + if(protection < 1) + var/temp_change = 80 // Each hit can reduce temperature by up to 80 kelvin. + var/datum/species/baseline = GLOB.all_species["Human"] + var/temp_cap = baseline.cold_level_3 - 5 // Can't go lower than this. + + var/cold_factor = abs(protection - 1) + temp_change *= cold_factor // If protection was at 0.5, then they only lose 40 kelvin. + + H.bodytemperature = max(H.bodytemperature - temp_change, temp_cap) + else // Just do some extra burn for mobs who don't process bodytemp + victim.adjustFireLoss(20) + +/datum/blob_type/cryogenic_goo/on_pulse(var/obj/structure/blob/B) + var/turf/simulated/T = get_turf(B) + if(!istype(T)) + return + T.freeze_floor() + var/datum/gas_mixture/env = T.return_air() + if(env) + env.add_thermal_energy(-10 * 1000) + +/datum/blob_type/cryogenic_goo/on_chunk_tick(obj/item/weapon/blobcore_chunk/B) + var/turf/simulated/T = get_turf(B) + if(!istype(T)) + return + T.freeze_floor() + var/datum/gas_mixture/env = T.return_air() + if(env) + env.add_thermal_energy(-10 * 1000) + +/datum/blob_type/cryogenic_goo/on_chunk_use(obj/item/weapon/blobcore_chunk/B, mob/living/user) + user.add_modifier(/datum/modifier/endothermic, 5 MINUTES) + return diff --git a/code/modules/blob2/overmind/types/ectoplasmic_horror.dm b/code/modules/blob2/overmind/types/ectoplasmic_horror.dm new file mode 100644 index 00000000000..f7689847cde --- /dev/null +++ b/code/modules/blob2/overmind/types/ectoplasmic_horror.dm @@ -0,0 +1,128 @@ +// A blob that drains energy from nearby mobs in order to fuel itself, and 'negates' some attacks extradimensionally. +/datum/blob_type/ectoplasmic_horror + name = "ectoplasmic horror" + desc = "A disgusting translucent slime that feels out of place." + ai_desc = "dodging" + effect_desc = "Drains energy from nearby life-forms in order to expand itself. Weak to all damage." + difficulty = BLOB_DIFFICULTY_MEDIUM + color = "#72109eaa" + complementary_color = "#1a9de8" + damage_type = HALLOSS + damage_lower = 10 + damage_upper = 30 + armor_check = "energy" + brute_multiplier = 1.5 + burn_multiplier = 1.5 + spread_modifier = 0.9 + ai_aggressiveness = 50 + attack_message = "The horror strikes you" + attack_message_living = ", and you feel a wave of exhaustion" + attack_message_synth = ", and your systems begin to slow" + attack_verb = "strikes" + can_build_factories = TRUE + factory_type = /obj/structure/blob/factory/sluggish + spore_type = /mob/living/simple_mob/blob/spore/weak + + var/list/active_beams = list() + +/datum/blob_type/ectoplasmic_horror/on_pulse(var/obj/structure/blob/B) + if(B.type == /obj/structure/blob && (locate(/obj/structure/blob/node) in oview(2, get_turf(B)))) + B.visible_message("The [name] quakes, before hardening.") + new/obj/structure/blob/shield(get_turf(B), B.overmind) + qdel(B) + + if(istype(B, /obj/structure/blob/factory)) + listclearnulls(active_beams) + var/atom/movable/beam_origin = B + for(var/mob/living/L in oview(world.view, B)) + if(L.stat == DEAD || L.faction == "blob") + continue + if(prob(5)) + var/beamtarget_exists = FALSE + + if(active_beams.len) + for(var/datum/beam/Beam in active_beams) + if(Beam.target == L) + beamtarget_exists = TRUE + break + + if(!beamtarget_exists && GetAnomalySusceptibility(L) >= 0.5) + B.visible_message("\The [B] lashes out at \the [L]!") + var/datum/beam/drain_beam = beam_origin.Beam(L, icon_state = "drain_life", time = 10 SECONDS) + active_beams |= drain_beam + spawn(9 SECONDS) + if(B && drain_beam) + B.visible_message("\The [B] siphons energy from \the [L]") + L.add_modifier(/datum/modifier/berserk_exhaustion, 60 SECONDS) + B.overmind.add_points(rand(10,30)) + if(!QDELETED(drain_beam)) + qdel(drain_beam) + +/datum/blob_type/ectoplasmic_horror/on_received_damage(var/obj/structure/blob/B, damage, damage_type) + if(prob(round(damage * 0.5))) + B.visible_message("\The [B] shimmers, distorting through some unseen dimension.") + var/initial_alpha = B.alpha + spawn() + animate(B,alpha = initial_alpha, alpha = 10, time = 10) + animate(B,alpha = 10, alpha = initial_alpha, time = 10) + return 0 + return ..() + +/datum/blob_type/ectoplasmic_horror/on_chunk_tick(obj/item/weapon/blobcore_chunk/B) + var/mob/living/carrier = B.get_carrier() + + if(!carrier) + return + + var/list/nearby_mobs = list() + for(var/mob/living/L in oview(world.view, carrier)) + if(L.stat != DEAD) + nearby_mobs |= L + + if(nearby_mobs.len) + listclearnulls(active_beams) + for(var/mob/living/L in nearby_mobs) + if(L.stat == DEAD || L.faction == "blob") + continue + if(prob(5)) + var/beamtarget_exists = FALSE + + if(active_beams.len) + for(var/datum/beam/Beam in active_beams) + if(Beam.target == L) + beamtarget_exists = TRUE + break + + if(!beamtarget_exists && GetAnomalySusceptibility(L) >= 0.5) + carrier.visible_message("\icon [B] \The [B] lashes out at \the [L]!") + var/datum/beam/drain_beam = carrier.Beam(L, icon_state = "drain_life", time = 10 SECONDS) + active_beams |= drain_beam + spawn(9 SECONDS) + if(B && drain_beam) + carrier.visible_message("\The [B] siphons energy from \the [L]") + L.add_modifier(/datum/modifier/berserk_exhaustion, 30 SECONDS) + var/total_heal = 0 + + if(carrier.getBruteLoss()) + carrier.adjustBruteLoss(-5) + total_heal += 5 + + if(carrier.getFireLoss()) + carrier.adjustFireLoss(-5) + total_heal += 5 + + if(carrier.getToxLoss()) + carrier.adjustToxLoss(-5) + total_heal += 5 + + if(carrier.getOxyLoss()) + carrier.adjustOxyLoss(-5) + total_heal += 5 + + if(carrier.getCloneLoss()) + carrier.adjustCloneLoss(-5) + total_heal += 5 + + carrier.add_modifier(/datum/modifier/berserk_exhaustion, total_heal SECONDS) + if(!QDELETED(drain_beam)) + qdel(drain_beam) diff --git a/code/modules/blob2/overmind/types/electromagnetic_web.dm b/code/modules/blob2/overmind/types/electromagnetic_web.dm new file mode 100644 index 00000000000..9831998587a --- /dev/null +++ b/code/modules/blob2/overmind/types/electromagnetic_web.dm @@ -0,0 +1,34 @@ +// Makes robots cry. Really weak to brute damage. +/datum/blob_type/electromagnetic_web + name = "electromagnetic web" + desc = "A gooy mesh that generates an electromagnetic field. Electronics will likely be ruined if nearby." + ai_desc = "balanced" + effect_desc = "Causes an EMP on attack, and will EMP upon death. It is also more fragile than average, especially to brute force." + difficulty = BLOB_DIFFICULTY_MEDIUM // Rough for robots but otherwise fragile and can be fought at range like most blobs anyways. + color = "#83ECEC" + complementary_color = "#EC8383" + damage_type = BURN + damage_lower = 10 + damage_upper = 20 + brute_multiplier = 3 + burn_multiplier = 2 + ai_aggressiveness = 60 + chunk_active_type = BLOB_CHUNK_CONSTANT + attack_message = "The web lashes you" + attack_message_living = ", and you hear a faint buzzing" + attack_message_synth = ", and your electronics get badly damaged" + attack_verb = "lashes" + +/datum/blob_type/electromagnetic_web/on_death(obj/structure/blob/B) + empulse(B.loc, 0, 1, 2) + +/datum/blob_type/electromagnetic_web/on_attack(obj/structure/blob/B, mob/living/victim) + victim.emp_act(2) + +/datum/blob_type/electromagnetic_web/on_chunk_tick(obj/item/weapon/blobcore_chunk/B) + var/turf/T = get_turf(B) + if(!T) + return + + for(var/mob/living/L in view(2, T)) + L.add_modifier(/datum/modifier/faraday, 30 SECONDS) \ No newline at end of file diff --git a/code/modules/blob2/overmind/types/energized_jelly.dm b/code/modules/blob2/overmind/types/energized_jelly.dm new file mode 100644 index 00000000000..33c570f24f3 --- /dev/null +++ b/code/modules/blob2/overmind/types/energized_jelly.dm @@ -0,0 +1,39 @@ +// Electric blob that stuns. +/datum/blob_type/energized_jelly + name = "energized jelly" + desc = "A substance that seems to generate electricity." + ai_desc = "suppressive" + effect_desc = "When attacking an entity, it will shock them with a strong electric shock. Repeated attacks can stun the target." + difficulty = BLOB_DIFFICULTY_MEDIUM + color = "#EFD65A" + complementary_color = "#00E5B1" + damage_type = BURN + damage_lower = 5 + damage_upper = 10 + brute_multiplier = 0.5 + burn_multiplier = 0.5 + spread_modifier = 0.35 + ai_aggressiveness = 80 + attack_message = "The jelly prods you" + attack_message_living = ", and your flesh burns as electricity arcs into you" + attack_message_synth = ", and your internal circuity is overloaded as electricity arcs into you" + attack_verb = "prods" + spore_projectile = /obj/item/projectile/beam/shock + +/datum/blob_type/energized_jelly/on_attack(obj/structure/blob/B, mob/living/victim, def_zone) + victim.electrocute_act(10, src, 1, def_zone) + victim.stun_effect_act(0, 40, BP_TORSO, src) + +/datum/blob_type/energized_jelly/on_chunk_tick(obj/item/weapon/blobcore_chunk/B) + for(var/mob/living/L in oview(world.view, get_turf(B))) + var/mob/living/carrier = B.get_carrier() + + if(istype(carrier) && carrier == L) + continue + + var/obj/item/projectile/P = new spore_projectile(get_turf(B)) + + carrier.visible_message("\The [B] discharges energy toward \the [L]!") + P.launch_projectile(L, BP_TORSO, carrier) + + return \ No newline at end of file diff --git a/code/modules/blob2/overmind/types/explosive_lattice.dm b/code/modules/blob2/overmind/types/explosive_lattice.dm new file mode 100644 index 00000000000..d0484c37254 --- /dev/null +++ b/code/modules/blob2/overmind/types/explosive_lattice.dm @@ -0,0 +1,58 @@ +// A blob with area of effect attacks. +/datum/blob_type/explosive_lattice + name = "explosive lattice" + desc = "A very unstable lattice that looks quite explosive." + ai_desc = "aggressive" + effect_desc = "When attacking an entity, it will cause a small explosion, hitting things near the target. It is somewhat resilient, but weaker to brute damage." + difficulty = BLOB_DIFFICULTY_MEDIUM + color = "#8B2500" + complementary_color = "#00668B" + damage_type = BURN + damage_lower = 25 + damage_upper = 35 + armor_check = "bomb" + armor_pen = 5 // This is so blob hits still hurt just slightly when wearing a bomb suit (100 bomb resist). + brute_multiplier = 0.75 + burn_multiplier = 0.5 + spread_modifier = 0.4 + ai_aggressiveness = 75 + attack_message = "The lattice blasts you" + attack_message_living = ", and your flesh burns from the blast wave" + attack_message_synth = ", and your plating burns from the blast wave" + attack_verb = "blasts" + var/exploding = FALSE + +/datum/blob_type/explosive_lattice/on_attack(obj/structure/blob/B, mob/living/victim, def_zone) // This doesn't use actual bombs since they're too strong and it would hurt the blob. + if(exploding) // We're busy, don't infinite loop us. + return + + exploding = TRUE + for(var/mob/living/L in range(get_turf(victim), 1)) // We don't use orange(), in case there is more than one mob on the target tile. + if(L == victim) // Already hit. + continue + if(L.faction == "blob") // No friendly fire + continue + L.blob_act() + + // Visual effect. + var/datum/effect/system/explosion/E = new/datum/effect/system/explosion/smokeless() + var/turf/T = get_turf(victim) + E.set_up(T) + E.start() + + // Now for sounds. + playsound(T, "explosion", 75, 1) // Local sound. + + for(var/mob/M in player_list) // For everyone else. + if(M.z == T.z && get_dist(M, T) > world.view && !M.ear_deaf && !istype(M.loc,/turf/space)) + M << 'sound/effects/explosionfar.ogg' + + exploding = FALSE + +/datum/blob_type/explosive_lattice/on_chunk_tick(obj/item/weapon/blobcore_chunk/B) + var/turf/T = get_turf(B) + if(!T) + return + + for(var/mob/living/L in view(1, T)) + L.add_modifier(/datum/modifier/blastshield, 30 SECONDS) \ No newline at end of file diff --git a/code/modules/blob2/overmind/types/fabrication_swarm.dm b/code/modules/blob2/overmind/types/fabrication_swarm.dm new file mode 100644 index 00000000000..7e267558d9f --- /dev/null +++ b/code/modules/blob2/overmind/types/fabrication_swarm.dm @@ -0,0 +1,44 @@ +// Slow, tanky blobtype which uses not spores, but hivebots, as its soldiers. +/datum/blob_type/fabrication_swarm + name = "iron tide" + desc = "A swarm of self replicating construction nanites. Incredibly illegal, but only mildly dangerous." + effect_desc = "Slow-spreading, but incredibly resiliant. It has a chance to harden itself against attacks automatically for no resource cost, and uses cheaply-constructed hivebots as soldiers." + ai_desc = "defensive" + difficulty = BLOB_DIFFICULTY_MEDIUM // Emitters are okay, EMP is great. + color = "#666666" + complementary_color = "#B7410E" + spread_modifier = 0.2 + can_build_factories = TRUE + can_build_resources = TRUE + attack_message = "The tide tries to shove you away" + attack_message_living = ", and your skin itches" + attack_message_synth = ", and your external plating dulls" + attack_verb = "shoves" + armor_pen = 40 + damage_lower = 10 + damage_upper = 25 + brute_multiplier = 0.25 + burn_multiplier = 0.6 + ai_aggressiveness = 50 //Really doesn't like you near it. + 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)) + if(damage > 0) + var/reinforce_probability = min(damage, 70) + if(prob(reinforce_probability)) + B.visible_message("The [name] quakes, before rapidly hardening!") + new/obj/structure/blob/shield(get_turf(B), B.overmind) + qdel(B) + return ..() + +/datum/blob_type/fabrication_swarm/on_emp(obj/structure/blob/B, severity) + B.adjust_integrity(-(30 / severity)) + +/datum/blob_type/fabrication_swarm/on_chunk_tick(obj/item/weapon/blobcore_chunk/B) + var/turf/T = get_turf(B) + for(var/mob/living/L in view(world.view, T)) + if(L.stat != DEAD && L.isSynthetic()) + L.adjustBruteLoss(-1) + L.adjustFireLoss(-1) + return \ No newline at end of file diff --git a/code/modules/blob2/overmind/types/fulminant_organism.dm b/code/modules/blob2/overmind/types/fulminant_organism.dm new file mode 100644 index 00000000000..2d940f93599 --- /dev/null +++ b/code/modules/blob2/overmind/types/fulminant_organism.dm @@ -0,0 +1,50 @@ +// Makes tons of weak spores whenever it spreads. +/datum/blob_type/fulminant_organism + name = "fulminant organism" + desc = "A self expanding mass of living biomaterial, that appears to produce entities to defend it, much like a living organism's immune system." + ai_desc = "swarming" + effect_desc = "Creates weak floating spores that attack enemies from specialized blobs, has a chance to also create a spore when \ + it spreads onto a new tile, and has a chance to create a spore when a blob tile is destroyed. It is more fragile than average to all types of damage." + difficulty = BLOB_DIFFICULTY_HARD // Loads of spores that can overwhelm, and spreads quickly. + color = "#FF0000" // Red + complementary_color = "#FFCC00" // Orange-ish + damage_type = TOX + damage_lower = 10 + damage_upper = 20 + spread_modifier = 0.7 + burn_multiplier = 1.5 + brute_multiplier = 1.5 + ai_aggressiveness = 30 // The spores do most of the fighting. + can_build_factories = TRUE + spore_type = /mob/living/simple_mob/blob/spore/weak + chunk_active_ability_cooldown = 60 SECONDS + +/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_mob/blob/spore/S = new spore_type(T) + if(istype(S)) + S.overmind = O + O.blob_mobs.Add(S) + else + S.faction = "blob" + S.update_icons() + +/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_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 + B.overmind.blob_mobs.Add(S) + else + S.faction = "blob" + S.update_icons() + +/datum/blob_type/fulminant_organism/on_chunk_use(obj/item/weapon/blobcore_chunk/B, mob/living/user) + for(var/I = 1 to rand(3,4)) + var/mob/living/simple_mob/blob/spore/S = new spore_type(get_turf(B)) + S.faction = user.faction + S.blob_type = src + S.update_icons() + S.ai_holder.forget_everything() + S.add_modifier(/datum/modifier/doomed, 2 MINUTES) diff --git a/code/modules/blob2/overmind/types/fungal_bloom.dm b/code/modules/blob2/overmind/types/fungal_bloom.dm new file mode 100644 index 00000000000..6bf20b99d35 --- /dev/null +++ b/code/modules/blob2/overmind/types/fungal_bloom.dm @@ -0,0 +1,37 @@ +// Makes spores that spread the blob and infest dead people. +/datum/blob_type/fungal_bloom + name = "fungal bloom" + desc = "A massive network of rapidly expanding mycelium. Large spore-like particles can be seen spreading from it." + ai_desc = "swarming" + effect_desc = "Creates floating spores that attack enemies from specialized blobs, and will spread the blob if killed. The spores can also \ + infest deceased biological humanoids. It is vulnerable to fire." + difficulty = BLOB_DIFFICULTY_MEDIUM // The spores are more of an annoyance but can be difficult to contain. + color = "#AAAAAA" + complementary_color = "#FFFFFF" + damage_type = TOX + damage_lower = 15 + damage_upper = 25 + spread_modifier = 0.3 // Lower, since spores will do a lot of the spreading. + burn_multiplier = 3 + ai_aggressiveness = 40 + can_build_factories = TRUE + spore_type = /mob/living/simple_mob/blob/spore/infesting + chunk_active_ability_cooldown = 2 MINUTES + +/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) + var/obj/structure/blob/B = locate(/obj/structure/blob) in T + if(B) // Is there already a blob here? If so, just heal it. + B.adjust_integrity(10) + else + B = new /obj/structure/blob/normal(T, S.overmind) // Otherwise spread it. + B.visible_message("\A [B] forms on \the [T] as \the [S] bursts!") + +/datum/blob_type/fungal_bloom/on_chunk_use(obj/item/weapon/blobcore_chunk/B, mob/living/user) + var/mob/living/simple_mob/blob/spore/S = new spore_type(get_turf(B)) + S.faction = user.faction + S.blob_type = src + S.update_icons() + S.ai_holder.forget_everything() \ No newline at end of file diff --git a/code/modules/blob2/overmind/types/grey_goo.dm b/code/modules/blob2/overmind/types/grey_goo.dm new file mode 100644 index 00000000000..5c93fb46c87 --- /dev/null +++ b/code/modules/blob2/overmind/types/grey_goo.dm @@ -0,0 +1,27 @@ +// Super fast spreading, but weak to EMP. +/datum/blob_type/grey_goo + name = "grey tide" + desc = "A swarm of self replicating nanomachines. Extremely illegal and dangerous, the EIO was meant to prevent this from showing up a second time." + effect_desc = "Spreads much faster than average, but is harmed greatly by electromagnetic pulses." + ai_desc = "genocidal" + difficulty = BLOB_DIFFICULTY_SUPERHARD // Fastest spread of them all and has snowballing capabilities. + color = "#888888" + complementary_color = "#CCCCCC" + spread_modifier = 1.0 + slow_spread_with_size = FALSE + ai_aggressiveness = 80 + can_build_resources = TRUE + attack_message = "The tide tries to swallow you" + attack_message_living = ", and you feel your skin dissolve" + attack_message_synth = ", and your external plating dissolves" + +/datum/blob_type/grey_goo/on_emp(obj/structure/blob/B, severity) + B.adjust_integrity(-(20 / severity)) + +/datum/blob_type/grey_goo/on_chunk_tick(obj/item/weapon/blobcore_chunk/B) + var/turf/T = get_turf(B) + for(var/mob/living/L in view(world.view, T)) + if(L.stat != DEAD) + L.adjustBruteLoss(-1) + L.adjustFireLoss(-1) + return diff --git a/code/modules/blob2/overmind/types/pressurized_slime.dm b/code/modules/blob2/overmind/types/pressurized_slime.dm new file mode 100644 index 00000000000..6b2ff5800f6 --- /dev/null +++ b/code/modules/blob2/overmind/types/pressurized_slime.dm @@ -0,0 +1,56 @@ +// A blob that slips and drowns you. +/datum/blob_type/pressurized_slime + name = "pressurized slime" + desc = "A large mass that seems to leak slippery fluid everywhere." + ai_desc = "drowning" + effect_desc = "Wets the floor when expanding and when hit. Tries to drown its enemies when attacking. It forces itself past internals. Resistant to burn damage." + difficulty = BLOB_DIFFICULTY_HARD + color = "#AAAABB" + complementary_color = "#BBBBAA" + damage_type = OXY + damage_lower = 5 + damage_upper = 15 + armor_check = null + brute_multiplier = 0.6 + burn_multiplier = 0.2 + spread_modifier = 0.4 + ai_aggressiveness = 75 + attack_message = "The slime splashes into you" + attack_message_living = ", and you gasp for breath" + attack_message_synth = ", and the fluid wears down on your components" + attack_verb = "splashes" + +/datum/blob_type/pressurized_slime/on_attack(obj/structure/blob/B, mob/living/victim, def_zone) + victim.water_act(5) + var/turf/simulated/T = get_turf(victim) + if(T) + T.wet_floor() + +/datum/blob_type/pressurized_slime/on_received_damage(var/obj/structure/blob/B, damage, damage_type) + wet_surroundings(B, damage) + return ..() + +/datum/blob_type/pressurized_slime/on_pulse(var/obj/structure/blob/B) + var/turf/simulated/T = get_turf(B) + if(!istype(T)) + return + T.wet_floor() + +/datum/blob_type/pressurized_slime/on_death(obj/structure/blob/B) + B.visible_message("The blob ruptures, spraying the area with liquid!") + wet_surroundings(B, 50) + +/datum/blob_type/pressurized_slime/proc/wet_surroundings(var/obj/structure/blob/B, var/probability = 50) + for(var/turf/simulated/T in range(1, get_turf(B))) + if(prob(probability)) + T.wet_floor() + for(var/atom/movable/AM in T) + AM.water_act(2) + +/datum/blob_type/pressurized_slime/on_chunk_tick(obj/item/weapon/blobcore_chunk/B) + wet_surroundings(B, 10) + +/datum/blob_type/pressurized_slime/on_chunk_use(obj/item/weapon/blobcore_chunk/B, mob/living/user) // Drenches you in water. + if(user) + user.ExtinguishMob() + user.fire_stacks = CLAMP(user.fire_stacks - 1, -25, 25) \ No newline at end of file diff --git a/code/modules/blob2/overmind/types/radioactive_ooze.dm b/code/modules/blob2/overmind/types/radioactive_ooze.dm new file mode 100644 index 00000000000..f3226f2b5be --- /dev/null +++ b/code/modules/blob2/overmind/types/radioactive_ooze.dm @@ -0,0 +1,27 @@ +// A blob that irradiates everything. +/datum/blob_type/radioactive_ooze + name = "radioactive ooze" + desc = "A goopy mess that glows with an unhealthy aura." + ai_desc = "radical" + effect_desc = "Irradiates the surrounding area, and inflicts toxic attacks. Weak to brute damage." + difficulty = BLOB_DIFFICULTY_MEDIUM + color = "#33CC33" + complementary_color = "#99FF66" + damage_type = TOX + damage_lower = 20 + damage_upper = 30 + armor_check = "rad" + brute_multiplier = 0.75 + burn_multiplier = 0.2 + spread_modifier = 0.8 + ai_aggressiveness = 50 + attack_message = "The ooze splashes you" + attack_message_living = ", and you feel warm" + attack_message_synth = ", and your internal systems are bombarded by ionizing radiation" + attack_verb = "splashes" + +/datum/blob_type/radioactive_ooze/on_pulse(var/obj/structure/blob/B) + SSradiation.radiate(B, 200) + +/datum/blob_type/radioactive_ooze/on_chunk_tick(obj/item/weapon/blobcore_chunk/B) + SSradiation.radiate(B, rand(25,100)) \ No newline at end of file diff --git a/code/modules/blob2/overmind/types/ravenous_macrophage.dm b/code/modules/blob2/overmind/types/ravenous_macrophage.dm new file mode 100644 index 00000000000..0a73501c34e --- /dev/null +++ b/code/modules/blob2/overmind/types/ravenous_macrophage.dm @@ -0,0 +1,50 @@ +// A blob that produces noxious smoke-clouds and recycles its dying parts. +/datum/blob_type/ravenous_macrophage + name = "ravenous macrophage" + desc = "A disgusting gel that reeks of death." + ai_desc = "resourceful" + effect_desc = "Produces noxious fumes, and melts prey with acidic attacks. Weak to brute damage." + difficulty = BLOB_DIFFICULTY_MEDIUM + color = "#639b3f" + complementary_color = "#d1ec3c" + damage_type = BIOACID + damage_lower = 20 + damage_upper = 30 + armor_check = "bio" + armor_pen = 50 + brute_multiplier = 0.8 + burn_multiplier = 0.3 + spread_modifier = 0.8 + ai_aggressiveness = 70 + attack_message = "The macrophage splashes you" + attack_message_living = ", and you feel a horrible burning" + attack_message_synth = ", and your body begins to corrode" + attack_verb = "splashes" + +/datum/blob_type/ravenous_macrophage/on_pulse(var/obj/structure/blob/B) + var/mob/living/L = locate() in range(world.view, B) + if(prob(1) && L.mind && !L.stat) // There's some active living thing nearby, produce offgas. + var/turf/T = get_turf(B) + var/datum/effect/effect/system/smoke_spread/noxious/BS = new /datum/effect/effect/system/smoke_spread/noxious + BS.attach(T) + BS.set_up(3, 0, T) + playsound(T, 'sound/effects/smoke.ogg', 50, 1, -3) + BS.start() + +/datum/blob_type/ravenous_macrophage/on_death(obj/structure/blob/B) + var/obj/structure/blob/other = locate() in oview(2, B) + if(other) + B.visible_message("The dying mass is rapidly consumed by the nearby [other]!") + if(other.overmind) + other.overmind.add_points(rand(1,4)) + +/datum/blob_type/ravenous_macrophage/on_chunk_tick(obj/item/weapon/blobcore_chunk/B) + var/mob/living/L = locate() in range(world.view, B) + if(prob(5) && !L.stat) // There's some active living thing nearby, produce offgas. + B.visible_message("\icon [B] \The [B] disgorches a cloud of noxious gas!") + var/turf/T = get_turf(B) + var/datum/effect/effect/system/smoke_spread/noxious/BS = new /datum/effect/effect/system/smoke_spread/noxious + BS.attach(T) + BS.set_up(3, 0, T) + playsound(T, 'sound/effects/smoke.ogg', 50, 1, -3) + BS.start() \ No newline at end of file diff --git a/code/modules/blob2/overmind/types/reactive_spines.dm b/code/modules/blob2/overmind/types/reactive_spines.dm new file mode 100644 index 00000000000..0d0021f2439 --- /dev/null +++ b/code/modules/blob2/overmind/types/reactive_spines.dm @@ -0,0 +1,59 @@ +// Auto-retaliates against melee attacks. Weak to projectiles. +/datum/blob_type/reactive_spines + name = "reactive spines" + desc = "An ever-growing lifeform with a large amount of sharp, powerful looking spines. They look like they could pierce most armor." + ai_desc = "defensive" + effect_desc = "When attacked by a melee weapon, it will automatically retaliate, striking the attacker with an armor piercing attack. \ + The blob itself is rather weak to all forms of attacks regardless, and lacks automatic realitation from ranged attacks." + difficulty = BLOB_DIFFICULTY_EASY // Potentially deadly to people not knowing the mechanics, but otherwise fairly tame, due to its slow spread and weakness. + color = "#9ACD32" + complementary_color = "#FFA500" + damage_type = BRUTE + damage_lower = 30 + damage_upper = 40 + armor_pen = 50 // Even with riot armor and tactical jumpsuit, you'd have 90 armor, reduced by 50, totaling 40. Getting hit for around 21 damage is still rough. + burn_multiplier = 2.0 + brute_multiplier = 2.0 + spread_modifier = 0.35 // Ranged projectiles tend to have a higher material cost, so ease up on the spreading. + ai_aggressiveness = 40 + chunk_passive_ability_cooldown = 0.5 SECONDS + attack_message = "The blob stabs you" + attack_message_living = ", and you feel sharp spines pierce your flesh" + attack_message_synth = ", and your external plating is pierced by sharp spines" + attack_verb = "stabs" + spore_projectile = /obj/item/projectile/bullet/thorn + +// Even if the melee attack is enough to one-shot this blob, it gets to retaliate at least once. +/datum/blob_type/reactive_spines/on_received_damage(var/obj/structure/blob/B, damage, damage_type, mob/living/attacker) + if(damage > 0 && attacker && get_dist(B, attacker) <= 1) + B.visible_message("The [name] retaliates, lashing out at \the [attacker]!") + B.blob_attack_animation(attacker, B.overmind) + attacker.blob_act(B) + return ..() + +// We're expecting 1 to be a target, 2 to be an old move loc, and 3 to be a new move loc. +/datum/blob_type/reactive_spines/chunk_unique(obj/item/weapon/blobcore_chunk/B, var/list/extra_data = null) + if(!LAZYLEN(extra_data)) + return + + var/atom/movable/A = extra_data[1] + + if(istype(A, /mob/living) && world.time > (B.last_passive_use + B.passive_ability_cooldown) && B.should_tick) + B.last_passive_use = world.time + var/mob/living/L = A + + var/mob/living/carrier = B.get_carrier() + + if(!istype(carrier) || L.z != carrier.z || L == carrier || get_dist(L, carrier) > 3) + return + + var/obj/item/projectile/P = new spore_projectile(get_turf(B)) + + carrier.visible_message("\The [B] fires a spine at \the [L]!") + P.launch_projectile(L, BP_TORSO, carrier) + + return + +/datum/blob_type/reactive_spines/chunk_setup(obj/item/weapon/blobcore_chunk/B) + GLOB.moved_event.register_global(B, /obj/item/weapon/blobcore_chunk/proc/call_chunk_unique) + return \ No newline at end of file diff --git a/code/modules/blob2/overmind/types/roiling_mold.dm b/code/modules/blob2/overmind/types/roiling_mold.dm new file mode 100644 index 00000000000..dd42be30ac2 --- /dev/null +++ b/code/modules/blob2/overmind/types/roiling_mold.dm @@ -0,0 +1,63 @@ +// Blob that fires biological mortar shells from its factories. +/datum/blob_type/roiling_mold + name = "roiling mold" + desc = "A bubbling, creeping mold." + ai_desc = "bombarding" + effect_desc = "Bombards nearby organisms with toxic spores. Weak to all damage." + difficulty = BLOB_DIFFICULTY_MEDIUM + color = "#571509" + complementary_color = "#ec4940" + damage_type = BRUTE + damage_lower = 5 + damage_upper = 20 + armor_check = "melee" + brute_multiplier = 1.2 + burn_multiplier = 1.2 + spread_modifier = 0.8 + can_build_factories = TRUE + ai_aggressiveness = 50 + attack_message = "The mold whips you" + attack_message_living = ", and you feel a searing pain" + attack_message_synth = ", and your shell buckles" + attack_verb = "lashes" + spore_projectile = /obj/item/projectile/arc/spore + +/datum/blob_type/roiling_mold/proc/find_target(var/obj/structure/blob/B, var/tries = 0, var/list/previous_targets = null) + if(tries > 3) + return + var/mob/living/L = locate() in (view(world.view + 3, get_turf(B)) - view(2,get_turf(B)) - previous_targets) // No adjacent mobs. + + if(!check_trajectory(L, B, PASSTABLE)) + if(!LAZYLEN(previous_targets)) + previous_targets = list() + + previous_targets |= L + + L = find_target(B, tries + 1, previous_targets) + + return L + +/datum/blob_type/roiling_mold/on_pulse(var/obj/structure/blob/B) + var/mob/living/L = find_target(B) + + if(!istype(L)) + return + + if(istype(B, /obj/structure/blob/factory) && L.stat != DEAD && prob(ai_aggressiveness) && L.faction != "blob") + var/obj/item/projectile/arc/spore/P = new(get_turf(B)) + P.launch_projectile(L, BP_TORSO, B) + +/datum/blob_type/roiling_mold/on_chunk_use(obj/item/weapon/blobcore_chunk/B, mob/living/user) + for(var/mob/living/L in oview(world.view, get_turf(B))) + if(istype(user) && user == L) + continue + + if(!check_trajectory(L, B, PASSTABLE)) // Can't fire at things on the other side of walls / windows. + continue + + var/obj/item/projectile/P = new spore_projectile(get_turf(B)) + + user.visible_message("\icon [B] \The [B] discharges energy toward \the [L]!") + P.launch_projectile(L, BP_TORSO, user) + + return \ No newline at end of file diff --git a/code/modules/blob2/overmind/types/shifting_fragments.dm b/code/modules/blob2/overmind/types/shifting_fragments.dm new file mode 100644 index 00000000000..ffca17760be --- /dev/null +++ b/code/modules/blob2/overmind/types/shifting_fragments.dm @@ -0,0 +1,40 @@ +/datum/blob_type/shifting_fragments + name = "shifting fragments" + desc = "A collection of fragments that seem to shuffle around constantly." + ai_desc = "evasive" + effect_desc = "Swaps places with nearby blobs when hit or when expanding." + difficulty = BLOB_DIFFICULTY_EASY + color = "#C8963C" + complementary_color = "#3C6EC8" + damage_type = BRUTE + damage_lower = 20 + damage_upper = 30 + brute_multiplier = 0.5 + burn_multiplier = 0.5 + spread_modifier = 0.5 + ai_aggressiveness = 30 + chunk_active_ability_cooldown = 3 MINUTES + attack_message = "A fragment strikes you" + attack_verb = "strikes" + +/datum/blob_type/shifting_fragments/on_received_damage(var/obj/structure/blob/B, damage, damage_type) + if(damage > 0 && prob(60)) + var/list/available_blobs = list() + for(var/obj/structure/blob/OB in orange(1, B)) + if((istype(OB, /obj/structure/blob/normal) || (istype(OB, /obj/structure/blob/shield) && prob(25))) && OB.overmind && OB.overmind == B.overmind) + available_blobs += OB + if(available_blobs.len) + var/obj/structure/blob/targeted = pick(available_blobs) + var/turf/T = get_turf(targeted) + targeted.forceMove(get_turf(B)) + B.forceMove(T) // Swap places. + return ..() + +/datum/blob_type/shifting_fragments/on_expand(var/obj/structure/blob/B, var/obj/structure/blob/new_B, var/turf/T, var/mob/observer/blob/O) + if(istype(B, /obj/structure/blob/normal) || (istype(B, /obj/structure/blob/shield) && prob(25))) + new_B.forceMove(get_turf(B)) + B.forceMove(T) + +/datum/blob_type/shifting_fragments/on_chunk_use(obj/item/weapon/blobcore_chunk/B, mob/living/user) + user.add_modifier(/datum/modifier/sprinting, 2 MINUTES) + return \ No newline at end of file diff --git a/code/modules/blob2/overmind/types/synchronous_mesh.dm b/code/modules/blob2/overmind/types/synchronous_mesh.dm new file mode 100644 index 00000000000..e234756b2d8 --- /dev/null +++ b/code/modules/blob2/overmind/types/synchronous_mesh.dm @@ -0,0 +1,73 @@ +// Spreads damage to nearby blobs, and attacks with the force of all nearby blobs. +/datum/blob_type/synchronous_mesh + name = "synchronous mesh" + desc = "A mesh that seems strongly interconnected to itself. It moves slowly, but with purpose." + ai_desc = "defensive" + effect_desc = "When damaged, spreads the damage to nearby blobs. When attacking, damage is increased based on how many blobs are near the target. It is resistant to burn damage." + difficulty = BLOB_DIFFICULTY_EASY // Mostly a tank and spank. + color = "#65ADA2" + complementary_color = "#AD6570" + damage_type = BRUTE + damage_lower = 10 + damage_upper = 15 + brute_multiplier = 0.5 + burn_multiplier = 0.2 // Emitters do so much damage that this will likely not matter too much. + spread_modifier = 0.3 // Since the blob spreads damage, it takes awhile to actually kill, so spread is reduced. + ai_aggressiveness = 60 + attack_message = "The mesh synchronously strikes you" + attack_verb = "synchronously strikes" + var/synchronously_attacking = FALSE + +/datum/blob_type/synchronous_mesh/on_attack(obj/structure/blob/B, mob/living/victim) + if(synchronously_attacking) + return + synchronously_attacking = TRUE // To avoid infinite loops. + for(var/obj/structure/blob/C in orange(1, victim)) + if(victim) // Some things delete themselves when dead... + C.blob_attack_animation(victim) + victim.blob_act(C) + synchronously_attacking = FALSE + +/datum/blob_type/synchronous_mesh/on_received_damage(var/obj/structure/blob/B, damage, damage_type) + var/list/blobs_to_hurt = list() // Maximum split is 9, reducing the damage each blob takes to 11.1% but doing that damage to 9 blobs. + for(var/obj/structure/blob/C in range(1, B)) + if(!istype(C, /obj/structure/blob/core) && !istype(C, /obj/structure/blob/node) && C.overmind && (C.overmind == B.overmind) ) //if it doesn't have the same 'ownership' or is a core or node, don't split damage to it + blobs_to_hurt += C + + for(var/thing in blobs_to_hurt) + var/obj/structure/blob/C = thing + if(C == B) + continue // We'll damage this later. + + C.adjust_integrity(-(damage / blobs_to_hurt.len)) + + return damage / max(blobs_to_hurt.len, 1) // To hurt the blob that got hit. + +/datum/blob_type/synchronous_mesh/on_chunk_tick(obj/item/weapon/blobcore_chunk/B) + var/mob/living/carrier = B.get_carrier() + + if(!carrier) + return + + var/list/nearby_mobs = list() + for(var/mob/living/L in oview(world.view, carrier)) + if(L.stat != DEAD) + nearby_mobs |= L + + if(nearby_mobs.len) + for(var/mob/living/victim in nearby_mobs) + var/need_beam = FALSE + + if(carrier.getBruteLoss()) + need_beam = TRUE + victim.adjustBruteLoss(3 / nearby_mobs.len) + carrier.adjustBruteLoss(-3 / nearby_mobs.len) + + if(carrier.getFireLoss()) + need_beam = TRUE + victim.adjustFireLoss(3 / nearby_mobs.len) + carrier.adjustFireLoss(-3 / nearby_mobs.len) + + if(need_beam) + carrier.visible_message("\icon [B] \The [B] sends noxious spores toward \the [victim]!") + carrier.Beam(victim, icon_state = "lichbeam", time = 2 SECONDS) \ No newline at end of file diff --git a/code/modules/blob2/overmind/types/volatile_alluvium.dm b/code/modules/blob2/overmind/types/volatile_alluvium.dm new file mode 100644 index 00000000000..a689bb856f2 --- /dev/null +++ b/code/modules/blob2/overmind/types/volatile_alluvium.dm @@ -0,0 +1,55 @@ +// A blob that steals your weapon. +/datum/blob_type/volatile_alluvium + name = "volatile alluvium" + desc = "A churning, earthy mass that moves in waves." + ai_desc = "earthen" + effect_desc = "Moves slowly, producing weak ranged spores to defend itself, and inflicts brute attacks. Attempts to disarm nearby attackers. Weak to water." + difficulty = BLOB_DIFFICULTY_HARD //Slow-starting, but can be overwhelming if left alone. + color = "#6B481E" + complementary_color = "#7F471F" + damage_lower = 10 + damage_upper = 20 + armor_pen = 40 + brute_multiplier = 0.7 + burn_multiplier = 0.5 + spread_modifier = 0.5 + ai_aggressiveness = 50 + attack_message = "The alluvium crashes against you" + attack_verb = "crashes against" + can_build_factories = TRUE + can_build_resources = TRUE + spore_type = /mob/living/simple_mob/blob/spore/weak + ranged_spores = TRUE + spore_range = 3 + spore_projectile = /obj/item/projectile/energy/blob/splattering + spore_accuracy = 15 + spore_dispersion = 45 + factory_type = /obj/structure/blob/factory/sluggish + resource_type = /obj/structure/blob/resource/sluggish + chunk_active_ability_cooldown = 2 MINUTES + +/datum/blob_type/volatile_alluvium/on_received_damage(var/obj/structure/blob/B, damage, damage_type, mob/living/attacker) + if(damage > 0 && attacker && get_dist(B, attacker) <= 2 && prob(min(damage, 70)) && istype(attacker, /mob/living/carbon/human)) // Melee weapons of any type carried by a human will have a high chance of being stolen. + var/mob/living/carbon/human/H = attacker + var/obj/item/I = H.get_active_hand() + H.drop_item() + if(I) + if((I.sharp || I.edge) && !istype(I, /obj/item/weapon/gun)) + I.forceMove(get_turf(B)) // Disarmed entirely. + B.visible_message("The [name] heaves, \the [attacker]'s weapon becoming stuck in the churning mass!") + else + I.throw_at(B, 2, 4) // Just yoinked. + B.visible_message("The [name] heaves, pulling \the [attacker]'s weapon from their hands!") + B.blob_attack_animation(attacker, B.overmind) + return ..() + +/datum/blob_type/volatile_alluvium/on_water(obj/structure/blob/B, amount) + spawn(1) + var/damage = amount * 4 + B.adjust_integrity(-(damage)) + if(B && prob(damage)) + B.visible_message("The [name] begins to crumble!") + +/datum/blob_type/volatile_alluvium/on_chunk_use(obj/item/weapon/blobcore_chunk/B, mob/living/user) + if(user) + user.add_modifier(/datum/modifier/fortify, 60 SECONDS) diff --git a/code/modules/client/client defines.dm b/code/modules/client/client defines.dm index 169dcd5b072..527d9438fe2 100644 --- a/code/modules/client/client defines.dm +++ b/code/modules/client/client defines.dm @@ -28,6 +28,8 @@ var/chatOutputLoadedAt var/adminhelped = 0 + var/examine_text_mode = 0 // Just examine text, include usage (description_info), switch to examine panel. + /////////////// //SOUND STUFF// diff --git a/code/modules/client/preference_setup/global/setting_datums.dm b/code/modules/client/preference_setup/global/setting_datums.dm index 99892d4d15b..8fefa8c929e 100644 --- a/code/modules/client/preference_setup/global/setting_datums.dm +++ b/code/modules/client/preference_setup/global/setting_datums.dm @@ -248,6 +248,12 @@ var/list/_client_preferences_by_type description ="Hear In-game Instruments" key = "SOUND_INSTRUMENT" +/datum/client_preference/vchat_enable + description = "Enable/Disable VChat" + key = "VCHAT_ENABLE" + enabled_description = "Enabled" + disabled_description = "Disabled" + /******************** * Staff Preferences * ********************/ diff --git a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm index 601e130e0e7..27f553827ca 100644 --- a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm @@ -1,3 +1,7 @@ +// Note for newly added fluff items: Ckeys should not contain any spaces, underscores or capitalizations, +// or else the item will not be usable. +// Example: Someone whose username is "Master Pred_Man" should be written as "masterpredman" instead + /datum/gear/fluff path = /obj/item sort_category = "Fluff Items" @@ -14,6 +18,14 @@ allowed_roles = list("Station Engineer") */ + +/datum/gear/fluff/collar //Use this as a base path for collars if you'd like to set tags in loadout. Make sure you don't use apostrophes in the display name or this breaks! + slot = slot_tie + +/datum/gear/fluff/collar/New() + ..() + gear_tweaks = list(gear_tweak_collar_tag) + // 0-9 CKEYS /datum/gear/fluff/malady_crop path = /obj/item/weapon/material/twohanded/fluff/riding_crop/malady @@ -41,6 +53,12 @@ ckeywhitelist = list("aegisoa") character_name = list("Xander Bevin") +/datum/gear/fluff/xander_medal_2 + path = /obj/item/clothing/accessory/medal/silver/unity + display_name = "Xander's Unity Medal" + ckeywhitelist = list("aegisoa") + character_name = list("Xander Bevin") + /datum/gear/fluff/lynn_penlight path = /obj/item/device/flashlight/pen/fluff/lynn display_name = "Lynn's Penlight" @@ -63,6 +81,13 @@ ckeywhitelist = list("arokha") character_name = list("Aronai Sieyes") +/datum/gear/fluff/collar/azura + path = /obj/item/clothing/accessory/collar/azura + display_name = "collar, Azura" + description = "For the kobold's pet." + ckeywhitelist = list("azurachitin") + character_name = list("Azura Chitin") + // B CKEYS /datum/gear/fluff/yuuko_kimono path = /obj/item/clothing/under/fluff/sakura_hokkaido_kimono @@ -151,6 +176,13 @@ ckeywhitelist = list("burritojustice") character_name = list("Jayda Wilson") +/datum/gear/fluff/star_hoodie + path = /obj/item/clothing/suit/storage/star + display_name = "Star hoodie" + slot = slot_wear_suit + ckeywhitelist = list("bacon12366") + character_name = list("Elly Brown") + // C CKEYS /datum/gear/fluff/cappy_watch path = /obj/item/clothing/accessory/watch @@ -203,6 +235,18 @@ ckeywhitelist = list("crossexonar") character_name = list("Sari-E") +/datum/gear/fluff/alexandria_medal + path = /obj/item/clothing/accessory/medal/silver/unity + display_name = "Alexandria's Unity Medal" + ckeywhitelist = list("cgr") + character_name = list("Alexandria Kozetto") + +/datum/gear/fluff/hisako_medal + path = /obj/item/clothing/accessory/medal/silver/unity + display_name = "Hisako's Unity Medal" + ckeywhitelist = list("chaleur") + character_name = list("Hisako Arato") + // D CKEYS /datum/gear/fluff/dhaeleena_medal path = /obj/item/clothing/accessory/medal/silver/security/fluff/dhael @@ -330,6 +374,18 @@ ckeywhitelist = list("ivymoomoo") character_name = list("Ivy Baladeva") +/datum/gear/fluff/farren_medal + path = /obj/item/clothing/accessory/medal/silver/unity + display_name = "Farren's Unity Medal" + ckeywhitelist = list("itsaket") + character_name = list("Farren Fruit") + +/datum/gear/fluff/myse_monk + path = /obj/item/clothing/suit/imperium_monk + display_name = "Imperium monk" + ckeywhitelist = list("itsaket") + character_name = list("Myse Topazian IV") + // J CKEYS /datum/gear/fluff/mor_box path = /obj/item/weapon/storage/box/fluff/morxaina @@ -478,9 +534,9 @@ ckeywhitelist = list("kisukegema") character_name = list("Kisuke Gema") -/datum/gear/fluff/excess_collar +/datum/gear/fluff/collar/excess path = /obj/item/clothing/accessory/collar/pink/fluff/warning - display_name = "Excess's Collar" + display_name = "collar, Excess" ckeywhitelist = list("killerdragn") character_name = list("Excess") @@ -612,6 +668,18 @@ ckeywhitelist = list("nepox") character_name = list("Annie Rose") +/datum/gear/fluff/damon_medal + path = /obj/item/clothing/accessory/medal/silver/unity + display_name = "Damon's Unity Medal" + ckeywhitelist = list("nickcrazy") + character_name = list("Damon Bones Xrim") + +/datum/gear/fluff/kt_fishing_rod + path = /obj/item/weapon/material/fishing_rod/modern/strong + display_name = "K't's fishing rod" + ckeywhitelist = list("nerdass") + character_name = list("K't") + // O CKEYS /datum/gear/fluff/richard_chain path = /obj/item/weapon/melee/fluff/holochain @@ -619,6 +687,12 @@ ckeywhitelist = list("orbisa") character_name = list("Richard D'angelo") +/datum/gear/fluff/bogen_medal + path = /obj/item/clothing/accessory/medal/silver/unity + display_name = "Bogen's Unity Medal" + ckeywhitelist = list("oscarholmes") + character_name = list("Bogen Kellogg") + // P CKEYS /datum/gear/fluff/zaku_sweatervest path = /obj/item/clothing/suit/varsity/green/sweater_vest @@ -651,6 +725,12 @@ ckeywhitelist = list("pontifexminimus") character_name = list("Lucia Null") +/datum/gear/fluff/jamie_medal + path = /obj/item/clothing/accessory/medal/silver/unity + display_name = "Jamie's Unity Medal" + ckeywhitelist = list("phoenixgamma7") + character_name = list("Jamie Findlay") + // Q CKEYS // R CKEYS @@ -668,6 +748,12 @@ ckeywhitelist = list("sageofaether12") character_name = list("Brynhild Vandradottir") +/datum/gear/fluff/brynhild_medal_2 + path = /obj/item/clothing/accessory/medal/silver/unity + display_name = "Brynhild's Unity Medal" + ckeywhitelist = list("sageofaether12") + character_name = list("Brynhild Vandradottir") + /datum/gear/fluff/kateryna_voidsuit path = /obj/item/clothing/suit/space/void/engineering/kate display_name = "Kateryna's Voidsuit" @@ -797,11 +883,17 @@ // T CKEYS /datum/gear/fluff/ascian_medal - path = /obj/item/clothing/accessory/medal/silver/unity + path = /obj/item/clothing/accessory/medal/silver/unity/tabiranth display_name = "Ascian's Unity Medal" ckeywhitelist = list("tabiranth") character_name = list("Ascian") +/datum/gear/fluff/ascian_medal_2 + path = /obj/item/clothing/accessory/medal/silver/valor + display_name = "Ascian's Valor Medal" + ckeywhitelist = list("tabiranth") + character_name = list("Ascian") + /datum/gear/fluff/ascian_spiritspawner path = /obj/item/weapon/grenade/spawnergrenade/spirit display_name = "The Best Kitten" @@ -945,9 +1037,15 @@ path = /obj/item/clothing/mask/gas/sexymime display_name = "Silentio's Mime Mask" slot = slot_wear_mask - ckeywhitelist = list("Viveret") + ckeywhitelist = list("viveret") character_name = list("Silentio") +/datum/gear/fluff/roanna_medal + path = /obj/item/clothing/accessory/medal/silver/unity + display_name = "Roanna's Unity Medal" + ckeywhitelist = list("vitoras") + character_name = list("Roanna Ti'Rox") + // W CKEYS /datum/gear/fluff/sthasha_bracer path = /obj/item/clothing/accessory/bracer/fluff/xander_sthasha @@ -1016,7 +1114,7 @@ /datum/gear/fluff/tachika_medal path = /obj/item/clothing/accessory/medal/conduct display_name = "Tachika's Conduct Medal" - ckeywhitelist = list("zammyman") + ckeywhitelist = list("zammyman215") character_name = list("Tachika") /datum/gear/fluff/zaoozaoo_hat @@ -1030,11 +1128,4 @@ path = /obj/item/device/radio/headset/fluff/zodiacshadow display_name = "Nehi's Radio" ckeywhitelist = list("zodiacshadow") - character_name = list("Nehi Maximus") - -/datum/gear/fluff/star_hoodie - path = /obj/item/clothing/suit/storage/star - display_name = "Star hoodie" - slot = slot_wear_suit - ckeywhitelist = list("bacon12366") - character_name = list("Elly Brown") + character_name = list("Nehi Maximus") \ No newline at end of file diff --git a/code/modules/client/preference_setup/loadout/loadout_head_vr.dm b/code/modules/client/preference_setup/loadout/loadout_head_vr.dm index 709a93afcc3..41214cbd67e 100644 --- a/code/modules/client/preference_setup/loadout/loadout_head_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_head_vr.dm @@ -6,6 +6,10 @@ display_name = "basic headband" path = /obj/item/clothing/head/fluff/headbando +/datum/gear/head/maid + display_name = "maid headband" + path = /obj/item/clothing/head/headband/maid + /datum/gear/head/headbando/New() ..() gear_tweaks = list(gear_tweak_free_color_choice) @@ -14,4 +18,4 @@ /datum/gear/head/detective_alt display_name = "cyberscope headgear, detective" path = /obj/item/clothing/head/helmet/detective_alt - allowed_roles = list("Head of Security", "Detective") + allowed_roles = list("Head of Security", "Detective") \ No newline at end of file diff --git a/code/modules/client/preference_setup/occupation/occupation.dm b/code/modules/client/preference_setup/occupation/occupation.dm index 2fc6f03a032..9ab76b9f4e6 100644 --- a/code/modules/client/preference_setup/occupation/occupation.dm +++ b/code/modules/client/preference_setup/occupation/occupation.dm @@ -18,6 +18,11 @@ S["job_engsec_high"] >> pref.job_engsec_high S["job_engsec_med"] >> pref.job_engsec_med S["job_engsec_low"] >> pref.job_engsec_low + //VOREStation Add + S["job_talon_low"] >> pref.job_talon_low + S["job_talon_med"] >> pref.job_talon_med + S["job_talon_high"] >> pref.job_talon_high + //VOREStation Add End S["player_alt_titles"] >> pref.player_alt_titles /datum/category_item/player_setup_item/occupation/save_character(var/savefile/S) @@ -31,6 +36,11 @@ S["job_engsec_high"] << pref.job_engsec_high S["job_engsec_med"] << pref.job_engsec_med S["job_engsec_low"] << pref.job_engsec_low + //VOREStation Add + S["job_talon_low"] << pref.job_talon_low + S["job_talon_med"] << pref.job_talon_med + S["job_talon_high"] << pref.job_talon_high + //VOREStation Add End S["player_alt_titles"] << pref.player_alt_titles /datum/category_item/player_setup_item/occupation/sanitize_character() @@ -44,6 +54,11 @@ pref.job_engsec_high = sanitize_integer(pref.job_engsec_high, 0, 65535, initial(pref.job_engsec_high)) pref.job_engsec_med = sanitize_integer(pref.job_engsec_med, 0, 65535, initial(pref.job_engsec_med)) pref.job_engsec_low = sanitize_integer(pref.job_engsec_low, 0, 65535, initial(pref.job_engsec_low)) + //VOREStation Add + pref.job_talon_high = sanitize_integer(pref.job_talon_high, 0, 65535, initial(pref.job_talon_high)) + pref.job_talon_med = sanitize_integer(pref.job_talon_med, 0, 65535, initial(pref.job_talon_med)) + pref.job_talon_low = sanitize_integer(pref.job_talon_low, 0, 65535, initial(pref.job_talon_low)) + //VOREStation Add End if(!(pref.player_alt_titles)) pref.player_alt_titles = new() if(!job_master) @@ -54,7 +69,7 @@ if(alt_title && !(alt_title in job.alt_titles)) pref.player_alt_titles -= job.title -/datum/category_item/player_setup_item/occupation/content(mob/user, limit = 20, list/splitJobs = list()) +/datum/category_item/player_setup_item/occupation/content(mob/user, limit = 25, list/splitJobs = list()) if(!job_master) return @@ -281,14 +296,17 @@ pref.job_civilian_high = 0 pref.job_medsci_high = 0 pref.job_engsec_high = 0 + pref.job_talon_high = 0 //VOREStation Add return 1 if(2)//Set current highs to med, then reset them pref.job_civilian_med |= pref.job_civilian_high pref.job_medsci_med |= pref.job_medsci_high pref.job_engsec_med |= pref.job_engsec_high + pref.job_talon_med |= pref.job_talon_high //VOREStation Add pref.job_civilian_high = 0 pref.job_medsci_high = 0 pref.job_engsec_high = 0 + pref.job_talon_high = 0 //VOREStation Add switch(job.department_flag) if(CIVILIAN) @@ -321,6 +339,19 @@ pref.job_engsec_low &= ~job.flag else pref.job_engsec_low |= job.flag + //VOREStation Add + if(TALON) + switch(level) + if(2) + pref.job_talon_high = job.flag + pref.job_talon_med &= ~job.flag + if(3) + pref.job_talon_med |= job.flag + pref.job_talon_low &= ~job.flag + else + pref.job_talon_low |= job.flag + //VOREStation Add End + return 1 /datum/category_item/player_setup_item/occupation/proc/ResetJobs() @@ -336,6 +367,12 @@ pref.job_engsec_med = 0 pref.job_engsec_low = 0 + //VOREStation Add + pref.job_talon_high = 0 + pref.job_talon_med = 0 + pref.job_talon_low = 0 + //VOREStation Add End + pref.player_alt_titles.Cut() /datum/preferences/proc/GetPlayerAltTitle(datum/job/job) @@ -368,4 +405,14 @@ return job_engsec_med if(3) return job_engsec_low + //VOREStation Add + if(TALON) + switch(level) + if(1) + return job_talon_high + if(2) + return job_talon_med + if(3) + return job_talon_low + //VOREStation Add End return 0 diff --git a/code/modules/client/preferences_spawnpoints.dm b/code/modules/client/preferences_spawnpoints.dm index c0c54169b25..acf1c771a73 100644 --- a/code/modules/client/preferences_spawnpoints.dm +++ b/code/modules/client/preferences_spawnpoints.dm @@ -12,6 +12,7 @@ var/list/spawntypes = list() var/display_name //Name used in preference setup. var/list/restrict_job = null var/list/disallow_job = null + var/announce_channel = "Common" proc/check_job_spawning(job) if(restrict_job && !(job in restrict_job)) @@ -20,6 +21,10 @@ var/list/spawntypes = list() if(disallow_job && (job in disallow_job)) return 0 + var/datum/job/J = SSjob.get_job(job) + if(J?.offmap_spawn && !(job in restrict_job)) + return 0 + return 1 /datum/spawnpoint/proc/get_spawn_position() diff --git a/code/modules/client/preferences_toggle_procs.dm b/code/modules/client/preferences_toggle_procs.dm index 9b8aa94b666..b8e0ea3d5c0 100644 --- a/code/modules/client/preferences_toggle_procs.dm +++ b/code/modules/client/preferences_toggle_procs.dm @@ -308,6 +308,39 @@ feedback_add_details("admin_verb","THInstm") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/client/verb/toggle_vchat() + set name = "Toggle VChat" + set category = "Preferences" + set desc = "Enable/Disable VChat. Reloading VChat and/or reconnecting required to affect changes." + + var/pref_path = /datum/client_preference/vchat_enable + toggle_preference(pref_path) + SScharacter_setup.queue_preferences_save(prefs) + + to_chat(src, "You have toggled VChat [is_preference_enabled(pref_path) ? "on" : "off"]. \ + You will have to reload VChat and/or reconnect to the server for these changes to take place. \ + VChat message persistence is not guaranteed if you change this again before the start of the next round.") + + +// Not attached to a pref datum because those are strict binary toggles +/client/verb/toggle_examine_mode() + set name = "Toggle Examine Mode" + set category = "Preferences" + set desc = "Control the additional behaviour of examining things" + + examine_text_mode++ + examine_text_mode %= EXAMINE_MODE_MAX // This cycles through them because if you're already specifically being routed to the examine panel, you probably don't need to have the extra text printed to chat + switch(examine_text_mode) // ... And I only wanted to add one verb + if(EXAMINE_MODE_DEFAULT) + to_chat(src, "Examining things will only output the base examine text, and you will not be redirected to the examine panel automatically.") + + if(EXAMINE_MODE_INCLUDE_USAGE) + to_chat(src, "Examining things will also print any extra usage information normally included in the examine panel to the chat.") + + if(EXAMINE_MODE_SWITCH_TO_PANEL) + to_chat(src, "Examining things will direct you to the examine panel, where you can view extended information about the thing.") + + //Toggles for Staff //Developers diff --git a/code/modules/client/preferences_vr.dm b/code/modules/client/preferences_vr.dm index 97074d32983..ae7801b30c0 100644 --- a/code/modules/client/preferences_vr.dm +++ b/code/modules/client/preferences_vr.dm @@ -1,7 +1,11 @@ //TFF 5/8/19 - minor refactoring of this thing from 09_misc.dm to call this for preferences. datum/preferences - var/show_in_directory = 1 //TFF 5/8/19 - show in Character Directory - var/sensorpref = 5 //TFF 5/8/19 - set character's suit sensor level + var/show_in_directory = 1 //Show in Character Directory + var/sensorpref = 5 //Set character's suit sensor level + + var/job_talon_high = 0 + var/job_talon_med = 0 + var/job_talon_low = 0 //Why weren't these in game toggles already? /client/verb/toggle_eating_noises() diff --git a/code/modules/clothing/glasses/hud_vr.dm b/code/modules/clothing/glasses/hud_vr.dm index 3dd1f0fbafe..fa47512a049 100644 --- a/code/modules/clothing/glasses/hud_vr.dm +++ b/code/modules/clothing/glasses/hud_vr.dm @@ -1,7 +1,7 @@ /obj/item/clothing/glasses/omnihud name = "\improper AR glasses" - desc = "The KHI-62 AR Glasses are a design from Kitsuhana Heavy Industries. These are a cheap export version \ - for Nanotrasen. Probably not as complete as KHI could make them, but more readily available for NT." + desc = "The ARG-62 AR Glasses are capable of displaying information on individuals. \ + Commonly used to allow non-augmented crew to interact with virtual interfaces." origin_tech = list(TECH_MAGNET = 3, TECH_BIO = 3) var/obj/item/clothing/glasses/hud/omni/hud = null var/mode = "civ" @@ -67,11 +67,11 @@ /obj/item/clothing/glasses/omnihud/med name = "\improper AR-M glasses" - desc = "The KHI-62-M AR glasses are a design from Kitsuhana Heavy Industries. \ + desc = "The ARG-62-M AR Glasses are capable of displaying information on individuals. \ These have been upgraded with medical records access and virus database integration." mode = "med" action_button_name = "AR Console (Crew Monitor)" - arscreen_path = /datum/nano_module/crew_monitor + arscreen_path = /datum/nano_module/program/crew_monitor enables_planes = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_CH_STATUS_R,VIS_CH_BACKUP,VIS_AUGMENTED) ar_interact(var/mob/living/carbon/human/user) @@ -81,7 +81,7 @@ /obj/item/clothing/glasses/omnihud/sec name = "\improper AR-S glasses" - desc = "The KHI-62-S AR glasses are a design from Kitsuhana Heavy Industries. \ + desc = "The ARG-62-S AR Glasses are capable of displaying information on individuals. \ These have been upgraded with security records integration and flash protection." mode = "sec" flash_protection = FLASH_PROTECTION_MAJOR @@ -96,7 +96,7 @@ /obj/item/clothing/glasses/omnihud/eng name = "\improper AR-E glasses" - desc = "The KHI-62-E AR glasses are a design from Kitsuhana Heavy Industries. \ + desc = "The ARG-62-E AR Glasses are capable of displaying information on individuals. \ These have been upgraded with advanced electrochromic lenses to protect your eyes during welding." mode = "eng" flash_protection = FLASH_PROTECTION_MAJOR @@ -110,7 +110,7 @@ /obj/item/clothing/glasses/omnihud/rnd name = "\improper AR-R glasses" - desc = "The KHI-62-R AR glasses are a design from Kitsuhana Heavy Industries. \ + desc = "The ARG-62-R AR Glasses are capable of displaying information on individuals. \ These have been ... modified ... to fit into a different frame." mode = "sci" icon = 'icons/obj/clothing/glasses.dmi' @@ -156,7 +156,7 @@ /obj/item/clothing/glasses/omnihud/all name = "\improper AR-B glasses" - desc = "The KHI-62-B AR glasses are a design from Kitsuhana Heavy Industries. \ + desc = "The ARG-62-B AR Glasses are capable of displaying information on individuals. \ These have been upgraded with every feature the lesser models have. Now we're talkin'." mode = "best" flash_protection = FLASH_PROTECTION_MAJOR diff --git a/code/modules/clothing/spacesuits/rig/suits/station_vr.dm b/code/modules/clothing/spacesuits/rig/suits/station_vr.dm index a76b752b1b1..f543b95431b 100644 --- a/code/modules/clothing/spacesuits/rig/suits/station_vr.dm +++ b/code/modules/clothing/spacesuits/rig/suits/station_vr.dm @@ -17,39 +17,39 @@ //Area allowing backpacks to be placed on rigsuits. /obj/item/weapon/rig/vox - allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio, /obj/item/device/defib_kit) + allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/backpack, /obj/item/device/bluespaceradio, /obj/item/device/defib_kit) /obj/item/weapon/rig/combat - allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton,/obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio, /obj/item/device/defib_kit) + allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton,/obj/item/weapon/storage/backpack,/obj/item/device/bluespaceradio, /obj/item/device/defib_kit) /obj/item/weapon/rig/ert allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/t_scanner, /obj/item/weapon/rcd, /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/device/multitool, \ /obj/item/device/radio, /obj/item/device/analyzer,/obj/item/weapon/storage/briefcase/inflatable, /obj/item/weapon/melee/baton, /obj/item/weapon/gun, \ - /obj/item/weapon/storage/firstaid, /obj/item/weapon/reagent_containers/hypospray, /obj/item/roller, /obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio, /obj/item/device/defib_kit) + /obj/item/weapon/storage/firstaid, /obj/item/weapon/reagent_containers/hypospray, /obj/item/roller, /obj/item/weapon/storage/backpack,/obj/item/device/bluespaceradio, /obj/item/device/defib_kit) /obj/item/weapon/rig/light/ninja - 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,/obj/item/device/suit_cooling_unit,/obj/item/weapon/cell, /obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio, /obj/item/device/defib_kit) + 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,/obj/item/device/suit_cooling_unit,/obj/item/weapon/cell, /obj/item/weapon/storage/backpack,/obj/item/device/bluespaceradio, /obj/item/device/defib_kit) /obj/item/weapon/rig/merc - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/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/storage/backpack,/obj/item/device/subspaceradio, /obj/item/device/defib_kit) + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/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/storage/backpack,/obj/item/device/bluespaceradio, /obj/item/device/defib_kit) /obj/item/weapon/rig/ce - 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,/obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio, /obj/item/device/defib_kit) + 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,/obj/item/weapon/storage/backpack,/obj/item/device/bluespaceradio, /obj/item/device/defib_kit) /obj/item/weapon/rig/medical - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical,/obj/item/roller,/obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio, /obj/item/device/defib_kit) + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical,/obj/item/roller,/obj/item/weapon/storage/backpack,/obj/item/device/bluespaceradio, /obj/item/device/defib_kit) /obj/item/weapon/rig/hazmat - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/stack/flag,/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/device/healthanalyzer,/obj/item/device/measuring_tape,/obj/item/device/ano_scanner,/obj/item/device/depth_scanner,/obj/item/device/core_sampler,/obj/item/device/gps,/obj/item/device/beacon_locator,/obj/item/device/radio/beacon,/obj/item/weapon/pickaxe/hand,/obj/item/weapon/storage/bag/fossils,/obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio, /obj/item/device/defib_kit) + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/stack/flag,/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/device/healthanalyzer,/obj/item/device/measuring_tape,/obj/item/device/ano_scanner,/obj/item/device/depth_scanner,/obj/item/device/core_sampler,/obj/item/device/gps,/obj/item/device/beacon_locator,/obj/item/device/radio/beacon,/obj/item/weapon/pickaxe/hand,/obj/item/weapon/storage/bag/fossils,/obj/item/weapon/storage/backpack,/obj/item/device/bluespaceradio, /obj/item/device/defib_kit) /obj/item/weapon/rig/hazard - allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton,/obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio, /obj/item/device/defib_kit) + allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton,/obj/item/weapon/storage/backpack,/obj/item/device/bluespaceradio, /obj/item/device/defib_kit) /obj/item/weapon/rig/industrial - 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,/obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio, /obj/item/device/defib_kit) + 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,/obj/item/weapon/storage/backpack,/obj/item/device/bluespaceradio, /obj/item/device/defib_kit) /obj/item/weapon/rig/military allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/handcuffs, \ /obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/weldingtool, /obj/item/weapon/tool, /obj/item/device/multitool, \ /obj/item/device/radio, /obj/item/device/analyzer,/obj/item/weapon/storage/briefcase/inflatable, /obj/item/weapon/melee/baton, /obj/item/weapon/gun, \ - /obj/item/weapon/storage/firstaid, /obj/item/weapon/reagent_containers/hypospray, /obj/item/roller, /obj/item/device/suit_cooling_unit, /obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio, /obj/item/device/defib_kit) + /obj/item/weapon/storage/firstaid, /obj/item/weapon/reagent_containers/hypospray, /obj/item/roller, /obj/item/device/suit_cooling_unit, /obj/item/weapon/storage/backpack,/obj/item/device/bluespaceradio, /obj/item/device/defib_kit) /obj/item/weapon/rig/pmc allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/t_scanner, /obj/item/weapon/rcd, /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/device/multitool, \ /obj/item/device/radio, /obj/item/device/analyzer,/obj/item/weapon/storage/briefcase/inflatable, /obj/item/weapon/melee/baton, /obj/item/weapon/gun, \ - /obj/item/weapon/storage/firstaid, /obj/item/weapon/reagent_containers/hypospray, /obj/item/roller, /obj/item/weapon/storage/backpack,/obj/item/device/subspaceradio, /obj/item/device/defib_kit) + /obj/item/weapon/storage/firstaid, /obj/item/weapon/reagent_containers/hypospray, /obj/item/roller, /obj/item/weapon/storage/backpack,/obj/item/device/bluespaceradio, /obj/item/device/defib_kit) /obj/item/weapon/rig/robotics allowed = list(/obj/item/device/flashlight, /obj/item/weapon/storage/box, /obj/item/weapon/storage/belt, /obj/item/device/defib_kit/compact) diff --git a/code/modules/clothing/spacesuits/void/void.dm b/code/modules/clothing/spacesuits/void/void.dm index b8b185a4b21..83dbdfd345f 100644 --- a/code/modules/clothing/spacesuits/void/void.dm +++ b/code/modules/clothing/spacesuits/void/void.dm @@ -13,7 +13,7 @@ // flags_inv = HIDEEARS|BLOCKHAIR //Species-specific stuff. - species_restricted = list(SPECIES_HUMAN, SPECIES_PROMETHEAN, SPECIES_XENOCHIMERA) //VOREStation Edit + species_restricted = list("Human", "Promethean") sprite_sheets_refit = list( SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi', SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi', @@ -42,7 +42,7 @@ min_pressure_protection = 0 * ONE_ATMOSPHERE max_pressure_protection = 10 * ONE_ATMOSPHERE - species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_NEVREAN, SPECIES_RAPALA, SPECIES_VASILISSAN, SPECIES_ALRAUNE, SPECIES_PROMETHEAN, SPECIES_XENOCHIMERA) //VOREStation Edit + species_restricted = list("Human", SPECIES_SKRELL, "Promethean") sprite_sheets_refit = list( SPECIES_UNATHI = 'icons/mob/species/unathi/suit.dmi', SPECIES_TAJ = 'icons/mob/species/tajaran/suit.dmi', diff --git a/code/modules/clothing/spacesuits/void/void_vr.dm b/code/modules/clothing/spacesuits/void/void_vr.dm index cdbdd16a287..b82f18d2feb 100644 --- a/code/modules/clothing/spacesuits/void/void_vr.dm +++ b/code/modules/clothing/spacesuits/void/void_vr.dm @@ -6,6 +6,7 @@ // /obj/item/clothing/head/helmet/space/void + species_restricted = list(SPECIES_HUMAN, SPECIES_NEVREAN, SPECIES_RAPALA, SPECIES_VASILISSAN, SPECIES_ALRAUNE, SPECIES_PROMETHEAN, SPECIES_XENOCHIMERA) sprite_sheets = list( SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi', SPECIES_SKRELL = 'icons/mob/species/skrell/helmet.dmi', @@ -18,7 +19,6 @@ SPECIES_ZORREN_HIGH = 'icons/mob/species/vulpkanin/helmet.dmi', SPECIES_FENNEC = 'icons/mob/species/vulpkanin/helmet.dmi' ) - sprite_sheets_obj = list( SPECIES_TAJ = 'icons/obj/clothing/species/tajaran/hats.dmi', // Copied from void.dm SPECIES_SKRELL = 'icons/obj/clothing/species/skrell/hats.dmi', // Copied from void.dm @@ -33,6 +33,7 @@ ) /obj/item/clothing/suit/space/void + species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_NEVREAN, SPECIES_RAPALA, SPECIES_VASILISSAN, SPECIES_ALRAUNE, SPECIES_PROMETHEAN, SPECIES_XENOCHIMERA) sprite_sheets = list( SPECIES_TAJ = 'icons/mob/species/tajaran/suit.dmi', SPECIES_SKRELL = 'icons/mob/species/skrell/suit.dmi', @@ -45,9 +46,6 @@ SPECIES_ZORREN_HIGH = 'icons/mob/species/vulpkanin/suit.dmi', SPECIES_FENNEC = 'icons/mob/species/vulpkanin/suit.dmi' ) - - - sprite_sheets_obj = list( SPECIES_TAJ = 'icons/obj/clothing/species/tajaran/suits.dmi', // Copied from void.dm SPECIES_SKRELL = 'icons/obj/clothing/species/skrell/suits.dmi', // Copied from void.dm diff --git a/code/modules/clothing/suits/hooded_vr.dm b/code/modules/clothing/suits/hooded_vr.dm index 28ae2ccf3f4..0f57317284d 100644 --- a/code/modules/clothing/suits/hooded_vr.dm +++ b/code/modules/clothing/suits/hooded_vr.dm @@ -9,7 +9,5 @@ icon_override = 'icons/mob/suit_vr.dmi' icon_state = "techpriest" hoodtype = /obj/item/clothing/head/hood/techpriest - body_parts_covered = FEET|LOWER_TORSO|UPPER_TORSO|LEGS|ARMS - flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER armor = list(melee = 20, bullet = 10, laser = 10, energy = 10, bomb = 25, bio = 50, rad = 25) item_state_slots = list(slot_r_hand_str = "engspace_suit", slot_l_hand_str = "engspace_suit") diff --git a/code/modules/clothing/under/accessories/accessory_vr.dm b/code/modules/clothing/under/accessories/accessory_vr.dm index 9f1e33f4573..6926e68f8a7 100644 --- a/code/modules/clothing/under/accessories/accessory_vr.dm +++ b/code/modules/clothing/under/accessories/accessory_vr.dm @@ -4,30 +4,30 @@ /obj/item/clothing/accessory/collar slot_flags = SLOT_TIE | SLOT_OCLOTHING - icon = 'icons/obj/clothing/collars_vr.dmi' - icon_override = 'icons/obj/clothing/collars_vr.dmi' + icon = 'icons/obj/clothing/ties_vr.dmi' + icon_override = 'icons/mob/ties_vr.dmi' var/writtenon = 0 /obj/item/clothing/accessory/collar/silver name = "Silver tag collar" desc = "A collar for your little pets... or the big ones." icon_state = "collar_blk" - item_state = "collar_blk_overlay" - overlay_state = "collar_blk_overlay" + item_state = "collar_blk" + overlay_state = "collar_blk" /obj/item/clothing/accessory/collar/gold name = "Golden tag collar" desc = "A collar for your little pets... or the big ones." icon_state = "collar_gld" - item_state = "collar_gld_overlay" - overlay_state = "collar_gld_overlay" + item_state = "collar_gld" + overlay_state = "collar_gld" /obj/item/clothing/accessory/collar/bell name = "Bell collar" desc = "A collar with a tiny bell hanging from it, purrfect furr kitties." icon_state = "collar_bell" - item_state = "collar_bell_overlay" - overlay_state = "collar_bell_overlay" + item_state = "collar_bell" + overlay_state = "collar_bell" var/jingled = 0 /obj/item/clothing/accessory/collar/bell/verb/jinglebell() @@ -50,8 +50,8 @@ name = "Shock collar" desc = "A collar used to ease hungry predators." icon_state = "collar_shk0" - item_state = "collar_shk_overlay" - overlay_state = "collar_shk_overlay" + item_state = "collar_shk" + overlay_state = "collar_shk" var/on = FALSE // 0 for off, 1 for on, starts off to encourage people to set non-default frequencies and codes. var/frequency = 1449 var/code = 2 @@ -165,31 +165,26 @@ name = "Spiked collar" desc = "A collar with spikes that look as sharp as your teeth." icon_state = "collar_spik" - item_state = "collar_spik_overlay" - overlay_state = "collar_spik_overlay" + item_state = "collar_spik" + overlay_state = "collar_spik" /obj/item/clothing/accessory/collar/pink name = "Pink collar" desc = "This collar will make your pets look FA-BU-LOUS." icon_state = "collar_pnk" - item_state = "collar_pnk_overlay" - overlay_state = "collar_pnk_overlay" + item_state = "collar_pnk" + overlay_state = "collar_pnk" /obj/item/clothing/accessory/collar/holo name = "Holo-collar" desc = "An expensive holo-collar for the modern day pet." icon_state = "collar_holo" - item_state = "collar_holo_overlay" - overlay_state = "collar_holo_overlay" + item_state = "collar_holo" + overlay_state = "collar_holo" matter = list(DEFAULT_WALL_MATERIAL = 50) -//TFF 17/6/19 - public loadout addition: Indigestible Holocollar /obj/item/clothing/accessory/collar/holo/indigestible - name = "Holo-collar" desc = "A special variety of the holo-collar that seems to be made of a very durable fabric that fits around the neck." - icon_state = "collar_holo" - item_state = "collar_holo_overlay" - overlay_state = "collar_holo_overlay" //Make indigestible /obj/item/clothing/accessory/collar/holo/indigestible/digest_act(var/atom/movable/item_storage = null) return FALSE @@ -276,3 +271,11 @@ /obj/item/clothing/accessory/medal/silver/unity name = "medal of unity" desc = "A silver medal awarded to a group which has demonstrated exceptional teamwork to achieve a notable feat." + +/obj/item/clothing/accessory/medal/silver/unity/tabiranth + icon = 'icons/obj/clothing/ties_vr.dmi' + icon_override = 'icons/mob/ties_vr.dmi' + icon_state = "silverthree" + item_state = "silverthree" + overlay_state = "silverthree" + desc = "A silver medal awarded to a group which has demonstrated exceptional teamwork to achieve a notable feat. This one has two bronze service stars, denoting that it has been awarded three times." diff --git a/code/modules/economy/Accounts.dm b/code/modules/economy/Accounts.dm index cfd720d4dc8..37979f96c53 100644 --- a/code/modules/economy/Accounts.dm +++ b/code/modules/economy/Accounts.dm @@ -9,6 +9,7 @@ var/security_level = 0 //0 - auto-identify from worn ID, require only account number //1 - require manual login / account number and pin //2 - require card and manual login + var/offmap = FALSE //Should this account be hidden from station consoles? /datum/transaction var/target_name = "" @@ -18,10 +19,11 @@ var/time = "" var/source_terminal = "" -/proc/create_account(var/new_owner_name = "Default user", var/starting_funds = 0, var/obj/machinery/account_database/source_db) +/proc/create_account(var/new_owner_name = "Default user", var/starting_funds = 0, var/obj/machinery/account_database/source_db, var/offmap = FALSE) //create a new account var/datum/money_account/M = new() + M.offmap = offmap M.owner_name = new_owner_name M.remote_access_pin = rand(1111, 111111) M.money = starting_funds diff --git a/code/modules/economy/Accounts_DB.dm b/code/modules/economy/Accounts_DB.dm index 251ba09e368..9e116ecf60d 100644 --- a/code/modules/economy/Accounts_DB.dm +++ b/code/modules/economy/Accounts_DB.dm @@ -14,31 +14,31 @@ var/creating_new_account = 0 var/const/fund_cap = 1000000 - proc/get_access_level() - if (!held_card) - return 0 - if(access_cent_captain in held_card.access) - return 2 - else if(access_hop in held_card.access || access_captain in held_card.access) - return 1 +/obj/machinery/account_database/proc/get_access_level() + if (!held_card) + return 0 + if(access_cent_captain in held_card.access) + return 2 + else if(access_hop in held_card.access || access_captain in held_card.access) + return 1 - proc/create_transation(target, reason, amount) - var/datum/transaction/T = new() - T.target_name = target - T.purpose = reason - T.amount = amount - T.date = current_date_string - T.time = stationtime2text() - T.source_terminal = machine_id - return T +/obj/machinery/account_database/proc/create_transation(target, reason, amount) + var/datum/transaction/T = new() + T.target_name = target + T.purpose = reason + T.amount = amount + T.date = current_date_string + T.time = stationtime2text() + T.source_terminal = machine_id + return T - proc/accounting_letterhead(report_name) - return {" -

    [report_name]

    -
    [station_name()] Accounting Report
    -
    - Generated By: [held_card.registered_name], [held_card.assignment]
    - "} +/obj/machinery/account_database/proc/accounting_letterhead(report_name) + return {" +

    [report_name]

    +
    [station_name()] Accounting Report
    +
    + Generated By: [held_card.registered_name], [held_card.assignment]
    + "} /obj/machinery/account_database/New() machine_id = "[station_name()] Acc. DB #[num_financial_terminals++]" @@ -98,6 +98,8 @@ var/list/accounts[0] for(var/i=1, i<=all_money_accounts.len, i++) var/datum/money_account/D = all_money_accounts[i] + if(D.offmap) + continue accounts.Add(list(list(\ "account_number"=D.account_number,\ "owner_name"=D.owner_name,\ diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index 3064234b500..f5736146669 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -40,12 +40,10 @@ if(spawn_locations.len) // Okay we've got landmarks, lets use those! shuffle_inplace(spawn_locations) num_groups = min(num_groups, spawn_locations.len) - var/i = 1 - while (i <= num_groups) + for (var/i = 1, i <= num_groups, i++) var/group_size = rand(group_size_min, group_size_max) for (var/j = 0, j < group_size, j++) spawn_one_carp(spawn_locations[i]) - i++ return // Okay we did *not* have any landmarks, so lets do our best! diff --git a/code/modules/events/electrical_storm.dm b/code/modules/events/electrical_storm.dm index b7040258de6..c8ecbad8d40 100644 --- a/code/modules/events/electrical_storm.dm +++ b/code/modules/events/electrical_storm.dm @@ -35,8 +35,16 @@ /datum/event/electrical_storm/tick() ..() - // See if shields can stop it first (It would be nice to port baystation's cooler shield gens perhaps) - // TODO - We need a better shield generator system to handle this properly. + // See if shields can stop it first + var/list/shields = list() + for(var/obj/machinery/power/shield_generator/G in global.machines) + if((G.z in affecting_z) && G.running && G.check_flag(MODEFLAG_EM)) + shields += G + if(shields.len) + var/obj/machinery/power/shield_generator/shield_gen = pick(shields) + //Minor breaches aren't enough to let through frying amounts of power + if(shield_gen.deal_shield_damage(30 * severity, SHIELD_DAMTYPE_EM) <= SHIELD_BREACHED_MINOR) + return if(!valid_apcs.len) log_debug("No valid APCs found for electrical storm event ship=[victim]!") return diff --git a/code/modules/events/event.dm b/code/modules/events/event.dm index 33c211485c9..a17489921f6 100644 --- a/code/modules/events/event.dm +++ b/code/modules/events/event.dm @@ -58,7 +58,7 @@ var/datum/event_meta/event_meta = null var/list/affecting_z = null // List of z-levels to affect, null lets the event choose (usally station_levels) var/has_skybox_image = FALSE // True if SSskybox should query this event for an image to put in the skybox. - var/obj/effect/overmap/visitable/ship/victim = null // Ship that triggered this event on itself. Some messages might be different etc. + var/obj/effect/overmap/visitable/ship/victim = null // Ship this event is acting upon (If this is event is due to overmap travel).nt etc. /datum/event/nothing @@ -137,27 +137,29 @@ activeFor++ //Called when start(), announce() and end() has all been called. -/datum/event/proc/kill() +/datum/event/proc/kill(external_use = FALSE) // If this event was forcefully killed run end() for individual cleanup if(isRunning) isRunning = 0 end() endedAt = world.time - SSevents.event_complete(src) + if(!external_use) + SSevents.event_complete(src) //Called during building of skybox to get overlays /datum/event/proc/get_skybox_image() return -/datum/event/New(var/datum/event_meta/EM) +/datum/event/New(var/datum/event_meta/EM, external_use = FALSE) // event needs to be responsible for this, as stuff like APLUs currently make their own events for curious reasons - SSevents.active_events += src + if(!external_use) + SSevents.active_events += src - event_meta = EM - severity = event_meta.severity - if(severity < EVENT_LEVEL_MUNDANE) severity = EVENT_LEVEL_MUNDANE - if(severity > EVENT_LEVEL_MAJOR) severity = EVENT_LEVEL_MAJOR + event_meta = EM + severity = event_meta.severity + if(severity < EVENT_LEVEL_MUNDANE) severity = EVENT_LEVEL_MUNDANE + if(severity > EVENT_LEVEL_MAJOR) severity = EVENT_LEVEL_MAJOR startedAt = world.time diff --git a/code/modules/events/event_container_vr.dm b/code/modules/events/event_container_vr.dm index 3c6733984c1..ce5d14d9202 100644 --- a/code/modules/events/event_container_vr.dm +++ b/code/modules/events/event_container_vr.dm @@ -82,8 +82,8 @@ //Evil grubs that drain station power slightly new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grub Infestation", /datum/event/grub_infestation, 0, list(ASSIGNMENT_SECURITY = 10, ASSIGNMENT_ENGINEER = 30), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Drone Pod Drop", /datum/event/drone_pod_drop, 10, list(ASSIGNMENT_SCIENTIST = 40), 1), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/morph_spawn, 75, list(ASSIGNMENT_SECURITY = 35), 1), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Maintenance Predator", /datum/event/maintenance_predator, 75, list(ASSIGNMENT_SECURITY = 25, ASSIGNMENT_SCIENTIST = 10), 1) + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/morph_spawn, 75, list(ASSIGNMENT_SECURITY = 30, ASSIGNMENT_SCIENTIST = 10), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Maintenance Predator", /datum/event/maintenance_predator, 75, list(ASSIGNMENT_SECURITY = 40), 0) ) add_disabled_events(list( new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1), diff --git a/code/modules/events/event_dynamic.dm b/code/modules/events/event_dynamic.dm index c1b44720218..e391637f4f7 100644 --- a/code/modules/events/event_dynamic.dm +++ b/code/modules/events/event_dynamic.dm @@ -52,7 +52,7 @@ var/list/event_last_fired = list() possibleEvents[/datum/event/pda_spam] = max(min(25, player_list.len) * 4, 200) possibleEvents[/datum/event/money_lotto] = max(min(5, player_list.len), 50) - if(account_hack_attempted) + if(GLOB.account_hack_attempted) possibleEvents[/datum/event/money_hacker] = max(min(25, player_list.len) * 4, 200) diff --git a/code/modules/events/gravity.dm b/code/modules/events/gravity.dm index 049464cb545..aa13f9f7ac6 100644 --- a/code/modules/events/gravity.dm +++ b/code/modules/events/gravity.dm @@ -15,7 +15,7 @@ /datum/event/gravity/start() gravity_is_on = 0 - for(var/area/A in all_areas) + for(var/area/A in world) if(A.z in zLevels) A.gravitychange(gravity_is_on) @@ -23,7 +23,7 @@ if(!gravity_is_on) gravity_is_on = 1 - for(var/area/A in all_areas) + for(var/area/A in world) if(A.z in zLevels) A.gravitychange(gravity_is_on) diff --git a/code/modules/events/ion_storm.dm b/code/modules/events/ion_storm.dm index 3018a01d8b2..5ac9dfda17b 100644 --- a/code/modules/events/ion_storm.dm +++ b/code/modules/events/ion_storm.dm @@ -2,6 +2,7 @@ /datum/event/ionstorm has_skybox_image = TRUE + announceWhen = -1 // Never (setup may override) var/botEmagChance = 0 //VOREStation Edit var/cloud_hueshift var/list/players = list() @@ -17,10 +18,13 @@ /datum/event/ionstorm/setup() endWhen = rand(500, 1500) + if(prob(50)) + announceWhen = endWhen + rand(250, 400) -// Interestingly enough, announce() actually *DOES* this event for some reason. /datum/event/ionstorm/announce() -// command_alert("The station has entered an ion storm. Monitor all electronic equipment for malfunctions", "Anomaly Alert") + command_announcement.Announce("It has come to our attention that \the [location_name()] passed through an ion storm. Please monitor all electronic equipment for malfunctions.", "Anomaly Alert") + +/datum/event/ionstorm/start() for (var/mob/living/carbon/human/player in player_list) if( !player.mind || player_is_antag(player.mind, only_offstation_roles = 1) || player.client.inactivity > MinutesToTicks(10)) continue @@ -67,11 +71,6 @@ if(prob(botEmagChance)) bot.emag_act(1) -/datum/event/ionstorm/end() - ..() - if(prob(50)) - spawn(rand(5000,8000)) - command_announcement.Announce("It has come to our attention that \the [location_name()] passed through an ion storm. Please monitor all electronic equipment for malfunctions.", "Anomaly Alert") // Overmap version /datum/event/ionstorm/overmap/announce() diff --git a/code/modules/events/meteors.dm b/code/modules/events/meteors.dm index 5322ab375da..0e4ec62b749 100644 --- a/code/modules/events/meteors.dm +++ b/code/modules/events/meteors.dm @@ -2,7 +2,8 @@ startWhen = 30 // About one minute early warning endWhen = 60 // Adjusted automatically in tick() has_skybox_image = TRUE - var/next_meteor = 6 + var/alarmWhen = 30 + var/next_meteor = 40 var/waves = 1 var/start_side var/next_meteor_lower = 10 @@ -32,6 +33,12 @@ command_announcement.Announce("\The [location_name()] is now in a meteor shower.", "Meteor Alert") /datum/event/meteor_wave/tick() + // Begin sending the alarm signals to shield diffusers so the field is already regenerated (if it exists) by the time actual meteors start flying around. + if(activeFor >= alarmWhen) + for(var/obj/machinery/shield_diffuser/SD in global.machines) + if(SD.z in affecting_z) + SD.meteor_alarm(10) + if(waves && activeFor >= next_meteor) send_wave() @@ -105,10 +112,11 @@ next_meteor_lower = 5 next_meteor_upper = 10 next_meteor = 0 + alarmWhen = 0 /datum/event/meteor_wave/overmap/tick() - if(victim && !victim.is_still()) // Meteors mostly fly in your face - start_side = prob(90) ? victim.fore_dir : pick(GLOB.cardinal) + if(victim && !victim.is_still() && prob(90)) // Meteors mostly fly in your face + start_side = victim.fore_dir else //Unless you're standing still start_side = pick(GLOB.cardinal) ..() diff --git a/code/modules/events/money_hacker.dm b/code/modules/events/money_hacker.dm index 0e604b9956a..025bcc6901f 100644 --- a/code/modules/events/money_hacker.dm +++ b/code/modules/events/money_hacker.dm @@ -1,5 +1,7 @@ //var/global/account_hack_attempted = 0 +GLOBAL_VAR_INIT(account_hack_attempted, 0) + /datum/event/money_hacker var/datum/money_account/affected_account endWhen = 100 @@ -10,7 +12,7 @@ if(all_money_accounts.len) affected_account = pick(all_money_accounts) - account_hack_attempted = 1 + GLOB.account_hack_attempted = 1 else kill() diff --git a/code/modules/events/prison_break.dm b/code/modules/events/prison_break.dm index 81717fd6f71..f2675a0ede1 100644 --- a/code/modules/events/prison_break.dm +++ b/code/modules/events/prison_break.dm @@ -41,7 +41,7 @@ /datum/event/prison_break/start() - for(var/area/A in all_areas) + for(var/area/A in world) if(is_type_in_list(A,areaType) && !is_type_in_list(A,areaNotType)) areas += A diff --git a/code/modules/gamemaster/actions/action.dm b/code/modules/gamemaster/actions/action.dm deleted file mode 100644 index f8ea16994ec..00000000000 --- a/code/modules/gamemaster/actions/action.dm +++ /dev/null @@ -1,27 +0,0 @@ -/datum/gm_action - var/name = "no name" // Simple name, for organization. - var/enabled = TRUE // If not enabled, this action is never taken. - var/departments = list() // What kinds of departments are affected by this action. Multiple departments can be listed. - var/chaotic = 0 // A number showing how chaotic the action may be. If danger is high, the GM will avoid it. - var/reusable = FALSE // If true, the event does not become disabled upon being used. Should be used sparingly. - var/observers_used = FALSE // Determines if the GM should check if ghosts are available before using this. - var/length = 0 // Determines how long the event lasts, until end() is called. - var/datum/game_master/gm = null - var/severity = 1 // The severity of the action. This is here to prevent continued future defining of this var on actions, un-used. - -/datum/gm_action/proc/set_up() - return - -/datum/gm_action/proc/get_weight() - return - -/datum/gm_action/proc/start() - if(!reusable) - enabled = FALSE - return - -/datum/gm_action/proc/end() - return - -/datum/gm_action/proc/announce() - return \ No newline at end of file diff --git a/code/modules/gamemaster/actions/atmos_leak.dm b/code/modules/gamemaster/actions/atmos_leak.dm deleted file mode 100644 index e40ed48c37f..00000000000 --- a/code/modules/gamemaster/actions/atmos_leak.dm +++ /dev/null @@ -1,77 +0,0 @@ -/datum/gm_action/atmos_leak - name = "atmospherics leak" - departments = list(DEPARTMENT_ENGINEERING, DEPARTMENT_SYNTHETIC) - var/area/target_area // Chosen target area - var/area/target_turf // Chosen target turf in target_area - var/gas_type // Chosen gas to release - // Exclude these types and sub-types from targeting eligibilty - var/list/area/excluded = list( - /area/submap, - /area/shuttle, - /area/crew_quarters, - /area/holodeck, - /area/engineering/engine_room - ) - - severity - -// Decide which area will be targeted! -/datum/gm_action/atmos_leak/set_up() - severity = pickweight(EVENT_LEVEL_MUNDANE = 8, - EVENT_LEVEL_MODERATE = 5, - EVENT_LEVEL_MAJOR = 3 - ) - - var/gas_choices = list("carbon_dioxide", "sleeping_agent") // Annoying - if(severity >= EVENT_LEVEL_MODERATE) - gas_choices += "phoron" // Dangerous - if(severity >= EVENT_LEVEL_MAJOR) - gas_choices += "volatile_fuel" // Dangerous and no default atmos setup! - gas_type = pick(gas_choices) - - var/list/area/grand_list_of_areas = get_station_areas(excluded) - - // Okay, now lets try and pick a target! Lets try 10 times, otherwise give up - for(var/i in 1 to 10) - var/area/A = pick(grand_list_of_areas) - if(is_area_occupied(A)) - log_debug("atmos_leak event: Rejected [A] because it is occupied.") - continue - // A good area, great! Lets try and pick a turf - var/list/turfs = list() - for(var/turf/simulated/floor/F in A) - if(turf_clear(F)) - turfs += F - if(turfs.len == 0) - log_debug("atmos_leak event: Rejected [A] because it has no clear turfs.") - continue - target_area = A - target_turf = pick(turfs) - - // If we can't find a good target, give up - if(!target_area) - log_debug("atmos_leak event: Giving up after too many failures to pick target area") - return - -/datum/gm_action/atmos_leak/announce() - if(target_area) - command_announcement.Announce("Warning, hazardous [gas_data.name[gas_type]] gas leak detected in \the [target_area], evacuate the area.", "Hazard Alert") - -/datum/gm_action/atmos_leak/start() - if(!target_turf) - return - ..() - spawn(rand(0, 600)) - // Okay, time to actually put the gas in the room! - // TODO - Would be nice to break a waste pipe perhaps? - // TODO - Maybe having it released from a single point and thus causing airflow to blow stuff around - - // Fow now just add a bunch of it to the air - var/datum/gas_mixture/air_contents = new - air_contents.temperature = T20C + ((severity - 1) * rand(-50, 50)) - air_contents.gas[gas_type] = 10 * MOLES_CELLSTANDARD - target_turf.assume_air(air_contents) - playsound(target_turf, 'sound/effects/smoke.ogg', 50, 1) - -/datum/gm_action/atmos_leak/get_weight() - return 15 + (metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 10 + metric.count_people_in_department(DEPARTMENT_SYNTHETIC) * 30) // Synthetics are counted in higher value because they can wirelessly connect to alarms. diff --git a/code/modules/gamemaster/actions/blob.dm b/code/modules/gamemaster/actions/blob.dm deleted file mode 100644 index dd9939a11de..00000000000 --- a/code/modules/gamemaster/actions/blob.dm +++ /dev/null @@ -1,74 +0,0 @@ -/datum/gm_action/blob - name = "blob infestation" - departments = list(DEPARTMENT_ENGINEERING, DEPARTMENT_SECURITY, DEPARTMENT_MEDICAL) - chaotic = 25 - - var/list/area/excluded = list( - /area/submap, - /area/shuttle, - /area/crew_quarters, - /area/holodeck, - /area/engineering/engine_room - ) - - var/area/target_area // Chosen target area - var/turf/target_turf // Chosen target turf in target_area - - var/obj/structure/blob/core/Blob - var/spawn_blob_type = /obj/structure/blob/core/random_medium - -/datum/gm_action/blob/set_up() - severity = pickweight(EVENT_LEVEL_MUNDANE = 4, - EVENT_LEVEL_MODERATE = 2, - EVENT_LEVEL_MAJOR = 1 - ) - - var/list/area/grand_list_of_areas = get_station_areas(excluded) - - for(var/i in 1 to 10) - var/area/A = pick(grand_list_of_areas) - if(is_area_occupied(A)) - log_debug("Blob infestation event: Rejected [A] because it is occupied.") - continue - var/list/turfs = list() - for(var/turf/simulated/floor/F in A) - if(turf_clear(F)) - turfs += F - if(turfs.len == 0) - log_debug("Blob infestation event: Rejected [A] because it has no clear turfs.") - continue - target_area = A - target_turf = pick(turfs) - - if(!target_area) - log_debug("Blob infestation event: Giving up after too many failures to pick target area") - -/datum/gm_action/blob/start() - ..() - var/turf/T - - if(severity == EVENT_LEVEL_MUNDANE || !target_area || !target_turf) - T = pick(blobstart) - else if(severity == EVENT_LEVEL_MODERATE) - T = target_turf - else - T = target_turf - spawn_blob_type = /obj/structure/blob/core/random_hard - - Blob = new spawn_blob_type(T) - -/datum/gm_action/blob/announce() - spawn(rand(600, 3000)) // 1-5 minute leeway for the blob to go un-detected. - command_announcement.Announce("Confirmed outbreak of level 7 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", new_sound = 'sound/AI/outbreak7.ogg') - -/datum/gm_action/blob/get_weight() - var/engineers = metric.count_people_in_department(DEPARTMENT_ENGINEERING) - var/security = metric.count_people_in_department(DEPARTMENT_SECURITY) - var/medical = metric.count_people_in_department(DEPARTMENT_MEDICAL) - - var/assigned_staff = engineers + security - if(engineers || security) // Medical only counts if one of the other two exists, and even then they count as half. - assigned_staff += round(medical / 2) - - var/weight = (max(assigned_staff - 2, 0) * 20) // An assigned staff count of 2 must be had to spawn a blob. - return weight diff --git a/code/modules/gamemaster/actions/brand_intelligence.dm b/code/modules/gamemaster/actions/brand_intelligence.dm deleted file mode 100644 index 28ed6a9928a..00000000000 --- a/code/modules/gamemaster/actions/brand_intelligence.dm +++ /dev/null @@ -1,69 +0,0 @@ -/datum/gm_action/brand_intelligence - name = "rampant vending machines" - length = 30 MINUTES - departments = list(DEPARTMENT_ENGINEERING, DEPARTMENT_EVERYONE) - - var/list/obj/machinery/vending/vendingMachines = list() - var/list/obj/machinery/vending/infectedVendingMachines = list() - var/obj/machinery/vending/originMachine - var/start_time = 0 - - var/active = FALSE // Are we currently infecting? - -/datum/gm_action/brand_intelligence/announce() - if(prob(90)) - command_announcement.Announce("An ongoing mass upload of malware for vendors has been detected onboard [station_name()], which appears to transmit \ - to other nearby vendors. The original infected machine is believed to be \a [originMachine.name].", "Vendor Service Alert") - -/datum/gm_action/brand_intelligence/set_up() - vendingMachines.Cut() - infectedVendingMachines.Cut() - - for(var/obj/machinery/vending/V in machines) - if(isNotStationLevel(V.z)) continue - vendingMachines.Add(V) - - if(!vendingMachines.len) - length = 0 - return - - originMachine = pick(vendingMachines) - vendingMachines.Remove(originMachine) - originMachine.shut_up = 0 - originMachine.shoot_inventory = 1 - - start_time = world.time - active = TRUE - -/datum/gm_action/brand_intelligence/start() - ..() - while(originMachine || active) - if(!vendingMachines.len || !originMachine || originMachine.shut_up) //if every machine is infected, or if the original vending machine is missing or has it's voice switch flipped - end() - return - - if(ISMULTIPLE(world.time - start_time, 5)) - if(prob(15)) - var/obj/machinery/vending/infectedMachine = pick(vendingMachines) - vendingMachines.Remove(infectedMachine) - infectedVendingMachines.Add(infectedMachine) - infectedMachine.shut_up = 0 - infectedMachine.shoot_inventory = 1 - - if(ISMULTIPLE(world.time - start_time, 12)) - originMachine.speak(pick("Try our aggressive new marketing strategies!", \ - "You should buy products to feed your lifestyle obsession!", \ - "Consume!", \ - "Your money can buy happiness!", \ - "Engage direct marketing!", \ - "Advertising is legalized lying! But don't let that put you off our great deals!", \ - "You don't want to buy anything? Yeah, well I didn't want to buy your mom either.")) - -/datum/gm_action/brand_intelligence/end() - active = FALSE - for(var/obj/machinery/vending/infectedMachine in infectedVendingMachines) - infectedMachine.shut_up = 1 - infectedMachine.shoot_inventory = 0 - -/datum/gm_action/brand_intelligence/get_weight() - return 60 + (metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 20) diff --git a/code/modules/gamemaster/actions/camera_damage.dm b/code/modules/gamemaster/actions/camera_damage.dm deleted file mode 100644 index 10ccb510ce8..00000000000 --- a/code/modules/gamemaster/actions/camera_damage.dm +++ /dev/null @@ -1,52 +0,0 @@ -/datum/gm_action/camera_damage - name = "random camera damage" - reusable = TRUE - departments = list(DEPARTMENT_SYNTHETIC, DEPARTMENT_ENGINEERING) - -/datum/gm_action/camera_damage/start() - var/obj/machinery/camera/C = acquire_random_camera() - if(!C) - return - ..() - - var/severity_range = 0 - severity = pickweight(EVENT_LEVEL_MUNDANE = 10, - EVENT_LEVEL_MODERATE = 5, - EVENT_LEVEL_MAJOR = 1 - ) - - switch(severity) - if(EVENT_LEVEL_MUNDANE) - severity_range = 0 - if(EVENT_LEVEL_MODERATE) - severity_range = 7 - if(EVENT_LEVEL_MAJOR) - severity_range = 15 - - for(var/obj/machinery/camera/cam in range(severity_range,C)) - if(is_valid_camera(cam)) - if(prob(2*severity)) - cam.destroy() - else - cam.wires.UpdateCut(CAMERA_WIRE_POWER, 0) - if(prob(5*severity)) - cam.wires.UpdateCut(CAMERA_WIRE_ALARM, 0) - -/datum/gm_action/camera_damage/proc/acquire_random_camera(var/remaining_attempts = 5) - if(!cameranet.cameras.len) - return - if(!remaining_attempts) - return - - var/obj/machinery/camera/C = pick(cameranet.cameras) - if(is_valid_camera(C)) - return C - return acquire_random_camera(remaining_attempts--) - -/datum/gm_action/camera_damage/proc/is_valid_camera(var/obj/machinery/camera/C) - // Only return a functional camera, not installed in a silicon/hardsuit/circuit/etc, and that exists somewhere players have access - var/turf/T = get_turf(C) - return T && C.can_use() && istype(C.loc, /turf) && (T.z in using_map.player_levels) - -/datum/gm_action/camera_damage/get_weight() - return 40 + (metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 20) + (metric.count_people_in_department(DEPARTMENT_SYNTHETIC) * 40) diff --git a/code/modules/gamemaster/actions/carp_migration.dm b/code/modules/gamemaster/actions/carp_migration.dm deleted file mode 100644 index 137c2cccb96..00000000000 --- a/code/modules/gamemaster/actions/carp_migration.dm +++ /dev/null @@ -1,58 +0,0 @@ -//carp_migration -/datum/gm_action/carp_migration - name = "carp migration" - departments = list(DEPARTMENT_SECURITY, DEPARTMENT_EVERYONE) - chaotic = 50 - var/list/spawned_carp = list() - var/carp_amount = 0 - length = 20 MINUTES - -/datum/gm_action/carp_migration/get_weight() - return 50 + (metric.count_people_in_department(DEPARTMENT_SECURITY) * 10) + (metric.count_all_space_mobs() * 20) - -/datum/gm_action/carp_migration/announce() - var/announcement = "Unknown biological entities have been detected near [station_name()], please stand-by." - command_announcement.Announce(announcement, "Lifesign Alert") - -/datum/gm_action/carp_migration/set_up() - // Higher filled roles means more groups of fish. - var/station_strength = 0 - station_strength += (metric.count_people_in_department(DEPARTMENT_SECURITY) * 3) - station_strength += (metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 2) - station_strength += metric.count_people_in_department(DEPARTMENT_MEDICAL) - - // Less active emergency response departments tones the event down. - var/activeness = ((metric.assess_department(DEPARTMENT_SECURITY) + metric.assess_department(DEPARTMENT_ENGINEERING) + metric.assess_department(DEPARTMENT_MEDICAL)) / 3) - activeness = max(activeness, 20) - - carp_amount = CEILING(station_strength * (activeness / 100) + 1, 1) - -/datum/gm_action/carp_migration/start() - ..() - var/list/spawn_locations = list() - - var/group_size_min = 3 - var/group_size_max = 5 - - for(var/obj/effect/landmark/C in landmarks_list) - if(C.name == "carpspawn") - spawn_locations.Add(C.loc) - - spawn_locations = shuffle(spawn_locations) - carp_amount = min(carp_amount, spawn_locations.len) - - var/i = 1 - 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_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_mob/animal/space/carp/C in spawned_carp) - if(!C.stat) - var/turf/T = get_turf(C) - if(istype(T, /turf/space)) - if(!prob(25)) - qdel(C) \ No newline at end of file diff --git a/code/modules/gamemaster/actions/comms_blackout.dm b/code/modules/gamemaster/actions/comms_blackout.dm deleted file mode 100644 index 353a3bd92b6..00000000000 --- a/code/modules/gamemaster/actions/comms_blackout.dm +++ /dev/null @@ -1,21 +0,0 @@ -/datum/gm_action/comms_blackout - name = "communications blackout" - departments = list(DEPARTMENT_ENGINEERING, DEPARTMENT_EVERYONE) - chaotic = 35 - -/datum/gm_action/comms_blackout/get_weight() - return 50 + (metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 40) - -/datum/gm_action/comms_blackout/announce() - if(prob(33)) - command_announcement.Announce("Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you-BZZT", new_sound = 'sound/misc/interference.ogg') - // AIs will always know if there's a comm blackout, rogue AIs could then lie about comm blackouts in the future while they shutdown comms - for(var/mob/living/silicon/ai/A in player_list) - to_chat(A, "
    ") - to_chat(A, "Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you-BZZT") - to_chat(A, "
    ") - -/datum/gm_action/comms_blackout/start() - ..() - for(var/obj/machinery/telecomms/T in telecomms_list) - T.emp_act(1) diff --git a/code/modules/gamemaster/actions/drill_announcement.dm b/code/modules/gamemaster/actions/drill_announcement.dm deleted file mode 100644 index 47f44e2caf1..00000000000 --- a/code/modules/gamemaster/actions/drill_announcement.dm +++ /dev/null @@ -1,10 +0,0 @@ -/datum/gm_action/security_drill - name = "security drills" - departments = list(DEPARTMENT_SECURITY, DEPARTMENT_EVERYONE) - -/datum/gm_action/security_drill/announce() - spawn(rand(1 MINUTE, 2 MINUTES)) - command_announcement.Announce("[pick("A NanoTrasen security director", "A Vir-Gov correspondant", "Local Sif authoritiy")] has advised the enactment of [pick("a rampant wildlife", "a fire", "a hostile boarding", "a nonstandard", "a bomb", "an emergent intelligence")] drill with the personnel onboard \the [station_name()].", "Security Advisement") - -/datum/gm_action/security_drill/get_weight() - return max(-20, 10 + gm.staleness - (gm.danger * 2)) + (metric.count_people_in_department(DEPARTMENT_SECURITY) * 5) + (metric.count_people_in_department(DEPARTMENT_EVERYONE) * 1.5) diff --git a/code/modules/gamemaster/actions/dust.dm b/code/modules/gamemaster/actions/dust.dm deleted file mode 100644 index 49d0a33b95a..00000000000 --- a/code/modules/gamemaster/actions/dust.dm +++ /dev/null @@ -1,17 +0,0 @@ -/datum/gm_action/dust - name = "dust" - departments = list(DEPARTMENT_ENGINEERING) - chaotic = 10 - reusable = TRUE - -/datum/gm_action/dust/announce() - command_announcement.Announce("Debris resulting from activity on another nearby asteroid is approaching your colony.", "Dust Alert") - -/datum/gm_action/dust/get_weight() - var/engineers = metric.count_people_in_department(DEPARTMENT_ENGINEERING) - var/weight = 30 + (engineers * 25) - return weight - -/datum/gm_action/dust/start() - ..() - dust_swarm("norm") diff --git a/code/modules/gamemaster/actions/electrical_storm.dm b/code/modules/gamemaster/actions/electrical_storm.dm deleted file mode 100644 index 4cd4c39df63..00000000000 --- a/code/modules/gamemaster/actions/electrical_storm.dm +++ /dev/null @@ -1,33 +0,0 @@ -/datum/gm_action/electrical_storm - name = "electrical storm" - departments = list(DEPARTMENT_EVERYONE) - reusable = TRUE - var/lightsoutAmount = 1 - var/lightsoutRange = 25 - -/datum/gm_action/electrical_storm/announce() - command_announcement.Announce("An electrical issue has been detected in your area, please repair potential electronic overloads.", "Electrical Alert") - -/datum/gm_action/electrical_storm/start() - ..() - var/list/epicentreList = list() - - for(var/i=1, i <= lightsoutAmount, i++) - var/list/possibleEpicentres = list() - for(var/obj/effect/landmark/newEpicentre in landmarks_list) - if(newEpicentre.name == "lightsout" && !(newEpicentre in epicentreList)) - possibleEpicentres += newEpicentre - if(possibleEpicentres.len) - epicentreList += pick(possibleEpicentres) - else - break - - if(!epicentreList.len) - return - - for(var/obj/effect/landmark/epicentre in epicentreList) - for(var/obj/machinery/power/apc/apc in range(epicentre,lightsoutRange)) - apc.overload_lighting() - -/datum/gm_action/electrical_storm/get_weight() - return 30 + (metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 15) + (metric.count_people_in_department(DEPARTMENT_EVERYONE) * 5) diff --git a/code/modules/gamemaster/actions/electrified_door.dm b/code/modules/gamemaster/actions/electrified_door.dm deleted file mode 100644 index 213c0c02928..00000000000 --- a/code/modules/gamemaster/actions/electrified_door.dm +++ /dev/null @@ -1,75 +0,0 @@ -/datum/gm_action/electrified_door - name = "airlock short-circuit" - departments = list(DEPARTMENT_ENGINEERING, DEPARTMENT_MEDICAL) - chaotic = 10 - var/obj/machinery/door/airlock/chosen_door - var/area/target_area - var/list/area/excluded = list( - /area/submap, - /area/shuttle, - /area/crew_quarters - ) - -/datum/gm_action/electrified_door/set_up() - var/list/area/grand_list_of_areas = get_station_areas(excluded) - - severity = pickweight(EVENT_LEVEL_MUNDANE = 10, - EVENT_LEVEL_MODERATE = 5, - EVENT_LEVEL_MAJOR = 1 - ) - - //try 10 times - for(var/i in 1 to 10) - target_area = pick(grand_list_of_areas) - var/list/obj/machinery/door/airlock/target_doors = list() - for(var/obj/machinery/door/airlock/target_door in target_area.contents) - target_doors += target_door - target_doors = shuffle(target_doors) - - for(var/obj/machinery/door/airlock/target_door in target_doors) - if(!target_door.isElectrified() && target_door.arePowerSystemsOn() && target_door.maxhealth == target_door.health) - chosen_door = target_door - return - -/datum/gm_action/electrified_door/start() - ..() - if(!chosen_door) - return - command_announcement.Announce("An electrical issue has been detected in your area, please repair potential electronic overloads.", "Electrical Alert") - chosen_door.visible_message("\The [chosen_door]'s panel sparks!") - chosen_door.set_safeties(0) - playsound(get_turf(chosen_door), 'sound/machines/buzz-sigh.ogg', 50, 1) - if(severity >= EVENT_LEVEL_MODERATE) - chosen_door.electrify(-1) - spawn(rand(10 SECONDS, 2 MINUTES)) - if(chosen_door && chosen_door.arePowerSystemsOn() && prob(25 + 25 * severity)) - command_announcement.Announce("Overload has been localized to \the [target_area].", "Electrical Alert") - - if(severity >= EVENT_LEVEL_MAJOR) // New Major effect. Hydraulic boom. - spawn() - chosen_door.visible_message("\The [chosen_door] buzzes.") - playsound(get_turf(chosen_door), 'sound/machines/buzz-sigh.ogg', 50, 1) - sleep(rand(10 SECONDS, 3 MINUTES)) - if(!chosen_door || !chosen_door.arePowerSystemsOn()) - return - chosen_door.visible_message("\The [chosen_door]'s hydraulics creak.") - playsound(get_turf(chosen_door), 'sound/machines/airlock_creaking.ogg', 50, 1) - sleep(rand(30 SECONDS, 10 MINUTES)) - if(!chosen_door || !chosen_door.arePowerSystemsOn()) - return - chosen_door.visible_message("\The [chosen_door] emits a hydraulic shriek!") - playsound(get_turf(chosen_door), 'sound/machines/airlock.ogg', 80, 1) - spawn(rand(5 SECONDS, 30 SECONDS)) - if(!chosen_door || !chosen_door.arePowerSystemsOn()) - return - chosen_door.visible_message("\The [chosen_door]'s hydraulics detonate!") - chosen_door.fragmentate(get_turf(chosen_door), rand(5, 10), rand(3, 5), list(/obj/item/projectile/bullet/pellet/fragment/tank/small)) - explosion(get_turf(chosen_door),-1,-1,2,3) - - chosen_door.lock() - chosen_door.health = chosen_door.maxhealth / 6 - chosen_door.aiControlDisabled = 1 - chosen_door.update_icon() - -/datum/gm_action/electrified_door/get_weight() - return 10 + (metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 5 + metric.count_people_in_department(DEPARTMENT_MEDICAL) * 10) diff --git a/code/modules/gamemaster/actions/gravity.dm b/code/modules/gamemaster/actions/gravity.dm deleted file mode 100644 index f568de9eae2..00000000000 --- a/code/modules/gamemaster/actions/gravity.dm +++ /dev/null @@ -1,36 +0,0 @@ -/datum/gm_action/gravity - name = "gravity failure" - departments = list(DEPARTMENT_EVERYONE) - length = 600 - var/list/zLevels - -/datum/gm_action/gravity/set_up() - length = rand(length, length * 5) - // Setup which levels we will disrupt gravit on. - zLevels = using_map.station_levels.Copy() - for(var/datum/planet/P in SSplanets.planets) - zLevels -= P.expected_z_levels - -/datum/gm_action/gravity/announce() - command_announcement.Announce("Feedback surge detected in mass-distributions systems. Artificial gravity has been disabled whilst the system \ - reinitializes. Please stand by while the gravity system reinitializes.", "Gravity Failure") - -/datum/gm_action/gravity/start() - ..() - gravity_is_on = 0 - for(var/area/A in all_areas) - if(A.z in zLevels) - A.gravitychange(gravity_is_on) - -/datum/gm_action/gravity/end() - if(!gravity_is_on) - gravity_is_on = 1 - - for(var/area/A in all_areas) - if(A.z in zLevels) - A.gravitychange(gravity_is_on) - - command_announcement.Announce("Gravity generators are again functioning within normal parameters. Sorry for any inconvenience.", "Gravity Restored") - -/datum/gm_action/gravity/get_weight() - return 30 + (metric.count_people_in_department(DEPARTMENT_EVERYONE) * 20) diff --git a/code/modules/gamemaster/actions/grid_check.dm b/code/modules/gamemaster/actions/grid_check.dm deleted file mode 100644 index ddd0cd923e1..00000000000 --- a/code/modules/gamemaster/actions/grid_check.dm +++ /dev/null @@ -1,23 +0,0 @@ -// New grid check event: -// Very similar to the old one, power goes out in most of the colony, however the new feature is the ability for engineering to -// get power back on sooner, if they are able to reach a special machine and initiate a manual reboot. If no one is able to do so, -// it will reboot itself after a few minutes, just like the old one. Bad things happen if there is no grid checker machine protecting -// the powernet when this event fires. - -/datum/gm_action/grid_check - name = "grid check" - departments = list(DEPARTMENT_ENGINEERING, DEPARTMENT_EVERYONE) - chaotic = 20 - -/datum/gm_action/grid_check/get_weight() - return 50 + (metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 30) - -/datum/gm_action/grid_check/start() - ..() - // This sets off a chain of events that lead to the actual grid check (or perhaps worse). - // First, the Supermatter engine makes a power spike. - for(var/obj/machinery/power/generator/engine in machines) - engine.power_spike() - break // Just one engine, please. - // After that, the engine checks if a grid checker exists on the same powernet, and if so, it triggers a blackout. - // If not, lots of stuff breaks. See code/modules/power/generator.dm for that piece of code. \ No newline at end of file diff --git a/code/modules/gamemaster/actions/infestation.dm b/code/modules/gamemaster/actions/infestation.dm deleted file mode 100644 index a887a3b5d39..00000000000 --- a/code/modules/gamemaster/actions/infestation.dm +++ /dev/null @@ -1,116 +0,0 @@ -#define LOC_KITCHEN 0 -#define LOC_ATMOS 1 -#define LOC_CHAPEL 2 -#define LOC_LIBRARY 3 -#define LOC_HYDRO 4 -#define LOC_VAULT 5 -#define LOC_CONSTR 6 -#define LOC_TECH 7 -#define LOC_GARDEN 8 - -#define VERM_MICE 0 -#define VERM_LIZARDS 1 -#define VERM_SPIDERS 2 - -/datum/gm_action/infestation - name = "animal infestation" - departments = list(DEPARTMENT_EVERYONE) - var/location - var/locstring - var/vermin - var/vermstring - - var/list/turf/simulated/floor/turfs = list() - - var/spawn_types - var/max_number - -/datum/gm_action/infestation/set_up() - location = rand(0,8) - turfs.Cut() - var/spawn_area_type - switch(location) - if(LOC_KITCHEN) - spawn_area_type = /area/crew_quarters/kitchen - locstring = "the kitchen" - if(LOC_ATMOS) - spawn_area_type = /area/engineering/atmos - locstring = "atmospherics" - if(LOC_CHAPEL) - spawn_area_type = /area/chapel/main - locstring = "the chapel" - if(LOC_LIBRARY) - spawn_area_type = /area/library - locstring = "the library" - if(LOC_HYDRO) - spawn_area_type = /area/hydroponics - locstring = "hydroponics" - if(LOC_VAULT) - spawn_area_type = /area/security/nuke_storage - locstring = "the vault" - if(LOC_CONSTR) - spawn_area_type = /area/construction - locstring = "the construction area" - if(LOC_TECH) - spawn_area_type = /area/storage/tech - locstring = "technical storage" - if(LOC_GARDEN) - spawn_area_type = /area/hydroponics/garden - locstring = "the public garden" - - for(var/areapath in typesof(spawn_area_type)) - var/area/A = locate(areapath) - for(var/turf/simulated/floor/F in A.contents) - if(turf_clear(F)) - turfs += F - - spawn_types = list() - max_number = 0 - vermin = rand(0,2) - switch(vermin) - if(VERM_MICE) - 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, /mob/living/simple_mob/animal/passive/mouse/rat) - max_number = 12 - vermstring = "mice" - if(VERM_LIZARDS) - spawn_types = list(/mob/living/simple_mob/animal/passive/lizard, /mob/living/simple_mob/animal/passive/lizard, /mob/living/simple_mob/animal/passive/lizard/large, /mob/living/simple_mob/animal/passive/lizard/large/defensive) - max_number = 6 - vermstring = "lizards" - if(VERM_SPIDERS) - spawn_types = list(/obj/effect/spider/spiderling) - max_number = 3 - vermstring = "spiders" - -/datum/gm_action/infestation/start() - spawn() - var/num = rand(2,max_number) - while(turfs.len > 0 && num > 0) - var/turf/simulated/floor/T = pick(turfs) - turfs.Remove(T) - num-- - - if(vermin == VERM_SPIDERS) - var/obj/effect/spider/spiderling/S = new(T) - S.amount_grown = -1 - else - var/spawn_type = pick(spawn_types) - new spawn_type(T) - -/datum/gm_action/infestation/announce() - command_announcement.Announce("Bioscans indicate that [vermstring] have been breeding in [locstring]. Clear them out, before this starts to affect productivity.", "Vermin infestation") - -/datum/gm_action/infestation/get_weight() - return 5 + (metric.count_people_in_department(DEPARTMENT_EVERYONE) * 20) - -#undef LOC_KITCHEN -#undef LOC_ATMOS -#undef LOC_CHAPEL -#undef LOC_LIBRARY -#undef LOC_HYDRO -#undef LOC_VAULT -#undef LOC_TECH -#undef LOC_GARDEN - -#undef VERM_MICE -#undef VERM_LIZARDS -#undef VERM_SPIDERS \ No newline at end of file diff --git a/code/modules/gamemaster/actions/ion_storm.dm b/code/modules/gamemaster/actions/ion_storm.dm deleted file mode 100644 index 5ff51ccbaa6..00000000000 --- a/code/modules/gamemaster/actions/ion_storm.dm +++ /dev/null @@ -1,50 +0,0 @@ -/datum/gm_action/ionstorm - name = "ion storm" - departments = list(DEPARTMENT_SYNTHETIC) - var/botEmagChance = 0.5 - var/list/players = list() - var/active = FALSE - length = 1 MINUTE - -/datum/gm_action/ionstorm/set_up() - length = rand(length, length * 10) -// command_alert("The station has entered an ion storm. Monitor all electronic equipment for malfunctions", "Anomaly Alert") - for (var/mob/living/carbon/human/player in player_list) - if( !player.mind || player_is_antag(player.mind, only_offstation_roles = 1) || player.client.inactivity > MinutesToTicks(10)) - continue - players += player.real_name - - for (var/mob/living/silicon/ai/target in silicon_mob_list) - var/law = target.generate_ion_law() - to_chat(target, "You have detected a change in your laws information:") - to_chat(target,law) - target.add_ion_law(law) - target.show_laws() - -/datum/gm_action/ionstorm/announce() - if(message_servers) - for (var/obj/machinery/message_server/MS in message_servers) - MS.spamfilter.Cut() - var/i - for (i = 1, i <= MS.spamfilter_limit, i++) - MS.spamfilter += pick("kitty","HONK","rev","malf","liberty","freedom","drugs", "[using_map.station_short]", \ - "admin","ponies","heresy","meow","Pun Pun","monkey","Ian","moron","pizza","message","spam",\ - "director", "Hello", "Hi!"," ","nuke","crate","dwarf","xeno") - -/datum/gm_action/ionstorm/start() - while(active) - sleep(1) - if(botEmagChance) - for(var/mob/living/bot/bot in mob_list) - if(prob(botEmagChance)) - bot.emag_act(1) - -/datum/gm_action/ionstorm/end() - spawn(rand(5000,8000)) - if(prob(50)) - ion_storm_announcement() - -/datum/gm_action/ionstorm/get_weight() - var/bots = metric.count_people_in_department(DEPARTMENT_SYNTHETIC) - var/weight = 5 + (bots * 20) - return weight diff --git a/code/modules/gamemaster/actions/manifest_malfunction.dm b/code/modules/gamemaster/actions/manifest_malfunction.dm deleted file mode 100644 index 2b924a41577..00000000000 --- a/code/modules/gamemaster/actions/manifest_malfunction.dm +++ /dev/null @@ -1,52 +0,0 @@ -/datum/gm_action/manifest_malfunction - name = "manifest malfunction" - enabled = TRUE - departments = list(DEPARTMENT_SECURITY, DEPARTMENT_SYNTHETIC, DEPARTMENT_EVERYONE) - chaotic = 3 - reusable = FALSE - length = 0 - - var/recordtype - -/datum/gm_action/manifest_malfunction/set_up() - severity = pickweight(EVENT_LEVEL_MUNDANE = 6, - EVENT_LEVEL_MODERATE = 2, - EVENT_LEVEL_MAJOR = 1 - ) - - recordtype = pickweight("medical" = 10,"security" = (severity * 15)) - - return - -/datum/gm_action/manifest_malfunction/get_weight() - . = -10 - - var/security = metric.count_people_in_department(DEPARTMENT_SECURITY) - - if(security && data_core) - . += (metric.count_people_in_department(DEPARTMENT_EVERYONE) * 5) - (metric.count_people_in_department(DEPARTMENT_SYNTHETIC) * 5) - - return . - -/datum/gm_action/manifest_malfunction/start() - ..() - - var/manifest_cut_count = 1 * severity - - for(var/I = 1 to manifest_cut_count) - var/datum/data/record/R - - switch(recordtype) - if("security") - R = pick(data_core.security) - - if("medical") - R = pick(data_core.medical) - - qdel(R) - -/datum/gm_action/manifest_malfunction/announce() - if(prob(30 * severity)) - spawn(rand(5 MINUTES, 10 MINUTES)) - command_announcement.Announce("An ongoing mass upload of malware for [recordtype] record cores has been detected onboard [station_name()]", "Data Breach Alert") - return diff --git a/code/modules/gamemaster/actions/meteor_defense.dm b/code/modules/gamemaster/actions/meteor_defense.dm deleted file mode 100644 index dc92413a82e..00000000000 --- a/code/modules/gamemaster/actions/meteor_defense.dm +++ /dev/null @@ -1,71 +0,0 @@ -// This event gives the station an advance warning about meteors, so that they can prepare in various ways. - -/datum/gm_action/meteor_defense - name = "meteor defense" - departments = list(DEPARTMENT_ENGINEERING, DEPARTMENT_CARGO) - chaotic = 50 - var/direction = null - var/dir_text = null - var/waves = 0 - - var/meteor_types - -/datum/gm_action/meteor_defense/get_weight() - var/engineers = metric.count_people_in_department(DEPARTMENT_ENGINEERING) - var/cargo = metric.count_people_in_department(DEPARTMENT_CARGO) - var/bots = metric.count_people_in_department(DEPARTMENT_SYNTHETIC) - var/weight = (max(engineers - 1, 0) * 20) // If only one engineer exists, no meteors for now. - - if(engineers >= 2) - weight += ((cargo - 1) * 10) - weight += (bots * 15) - - return weight - -/datum/gm_action/meteor_defense/set_up() - severity = pickweight(EVENT_LEVEL_MUNDANE = 10, - EVENT_LEVEL_MODERATE = 3 - ) - - switch(severity) - if(EVENT_LEVEL_MUNDANE) - meteor_types = meteors_threatening.Copy() - - if(EVENT_LEVEL_MODERATE) - meteor_types = meteors_catastrophic.Copy() - - direction = pick(cardinal) // alldirs doesn't work with current meteor code unfortunately. - waves = rand(5, 8) - switch(direction) - if(NORTH) - dir_text = "aft" // For some reason this is needed. - if(SOUTH) - dir_text = "fore" - if(EAST) - dir_text = "port" - if(WEST) - dir_text = "starboard" - -/datum/gm_action/meteor_defense/announce() - var/announcement = "Alert! Two asteroids have collided near [station_name()]. Chunks of it are expected to approach from the [dir_text] side. ETA to arrival is \ - approximately [round(5 * severity * 2)] minutes." - command_announcement.Announce(announcement, "Meteor Alert", new_sound = 'sound/AI/meteors.ogg') - -/datum/gm_action/meteor_defense/start() - ..() - spawn(0) - sleep(round(5 * severity) MINUTES) - var/announcement = "The incoming debris are expected to approach from the [dir_text] side. ETA to arrival is approximately [round(5 * severity)] minutes." - command_announcement.Announce(announcement, "Meteor Alert - Update") - sleep(round(5 * severity) MINUTES) - announcement = "Incoming debris approaches from the [dir_text] side!" - command_announcement.Announce(announcement, "Meteor Alert - Update") - while(waves) - message_admins("[waves] more wave\s of meteors remain.") - spawn(1) // Dir is reversed because the direction describes where meteors are going, not what side it's gonna hit. - spawn_meteors(rand(8, 12), meteors_threatening, reverse_dir[direction]) - waves-- - sleep(30 SECONDS) - announcement = "The station has cleared the incoming debris." - command_announcement.Announce(announcement, "Meteor Alert - Update") - message_admins("Meteor defense event has ended.") diff --git a/code/modules/gamemaster/actions/money_hacker.dm b/code/modules/gamemaster/actions/money_hacker.dm deleted file mode 100644 index 2705de450c7..00000000000 --- a/code/modules/gamemaster/actions/money_hacker.dm +++ /dev/null @@ -1,79 +0,0 @@ -/var/global/account_hack_attempted = 0 - -/datum/gm_action/money_hacker - name = "bank account hacker" - departments = list(DEPARTMENT_EVERYONE) - reusable = TRUE - var/datum/money_account/affected_account - var/active - var/activeFor - var/end_time - -/datum/gm_action/money_hacker/set_up() - active = TRUE - end_time = world.time + 6000 - if(all_money_accounts.len) - affected_account = pick(all_money_accounts) - - account_hack_attempted = 1 - -/datum/gm_action/money_hacker/announce() - var/message = "A brute force hack has been detected (in progress since [stationtime2text()]). The target of the attack is: Financial account #[affected_account.account_number], \ - without intervention this attack will succeed in approximately 10 minutes. Required intervention: temporary suspension of affected accounts until the attack has ceased. \ - Notifications will be sent as updates occur.
    " - var/my_department = "[station_name()] firewall subroutines" - - for(var/obj/machinery/message_server/MS in machines) - if(!MS.active) continue - MS.send_rc_message("Head of Personnel's Desk", my_department, message, "", "", 2) - - -/datum/gm_action/money_hacker/start() - ..() - spawn(0) - while(active) - sleep(1) - activeFor++ - if(world.time >= end_time) - length = activeFor - else - length = activeFor + 10 - -/datum/gm_action/money_hacker/end() - active = FALSE - var/message - if(affected_account && !affected_account.suspended) - //hacker wins - message = "The hack attempt has succeeded." - - //subtract the money - var/lost = affected_account.money * 0.8 + (rand(2,4) - 2) / 10 - affected_account.money -= lost - - //create a taunting log entry - var/datum/transaction/T = new() - T.target_name = pick("","yo brotha from anotha motha","el Presidente","chieF smackDowN","Nobody") - T.purpose = pick("Ne$ ---ount fu%ds init*&lisat@*n","PAY BACK YOUR MUM","Funds withdrawal","pWnAgE","l33t hax","liberationez","Hit","Nothing") - T.amount = pick("","([rand(0,99999)])","alla money","9001$","HOLLA HOLLA GET DOLLA","([lost])") - var/date1 = "31 December, 1999" - var/date2 = "[num2text(rand(1,31))] [pick("January","February","March","April","May","June","July","August","September","October","November","December")], [rand(1000,3000)]" - T.date = pick("", current_date_string, date1, date2,"Nowhen") - var/time1 = rand(0, 99999999) - var/time2 = "[round(time1 / 36000)+12]:[(time1 / 600 % 60) < 10 ? add_zero(time1 / 600 % 60, 1) : time1 / 600 % 60]" - T.time = pick("", stationtime2text(), time2, "Never") - T.source_terminal = pick("","[pick("Biesel","New Gibson")] GalaxyNet Terminal #[rand(111,999)]","your mums place","nantrasen high CommanD","Angessa's Pearl","Nowhere") - - affected_account.transaction_log.Add(T) - - else - //crew wins - message = "The attack has ceased, the affected accounts can now be brought online." - - var/my_department = "[station_name()] firewall subroutines" - - for(var/obj/machinery/message_server/MS in machines) - if(!MS.active) continue - MS.send_rc_message("Head of Personnel's Desk", my_department, message, "", "", 2) - -/datum/gm_action/money_hacker/get_weight() - return 30 * all_money_accounts.len diff --git a/code/modules/gamemaster/actions/money_lotto.dm b/code/modules/gamemaster/actions/money_lotto.dm deleted file mode 100644 index ea82510e571..00000000000 --- a/code/modules/gamemaster/actions/money_lotto.dm +++ /dev/null @@ -1,39 +0,0 @@ -/datum/gm_action/money_lotto - name = "lottery win" - departments = list(DEPARTMENT_EVERYONE) - var/winner_name = "John Smith" - var/winner_sum = 0 - var/deposit_success = 0 - -/datum/gm_action/money_lotto/start() - ..() - winner_sum = pick(5000, 10000, 50000, 100000, 500000, 1000000, 1500000) - if(all_money_accounts.len) - var/datum/money_account/D = pick(all_money_accounts) - winner_name = D.owner_name - if(!D.suspended) - D.money += winner_sum - - var/datum/transaction/T = new() - T.target_name = "The [using_map.starsys_name] Times Grand Slam -Stellar- Lottery" - T.purpose = "Winner!" - T.amount = winner_sum - T.date = current_date_string - T.time = stationtime2text() - T.source_terminal = "Sif TCD Terminal #[rand(111,333)]" - D.transaction_log.Add(T) - - deposit_success = 1 - -/datum/gm_action/money_lotto/announce() - var/author = "[using_map.company_name] Editor" - var/channel = "The [using_map.starsys_name] Times" - - var/body = "The [using_map.starsys_name] Times wishes to congratulate [winner_name] for recieving the [using_map.starsys_name] Stellar Slam Lottery, and receiving the out of this world sum of [winner_sum] credits!" - if(!deposit_success) - body += "
    Unfortunately, we were unable to verify the account details provided, so we were unable to transfer the money. Send a cheque containing the sum of 5000 Thalers to ND 'Stellar Slam' office on the The [using_map.starsys_name] Times gateway containing updated details, and your winnings'll be re-sent within the month." - - news_network.SubmitArticle(body, author, channel, null, 1) - -/datum/gm_action/money_lotto/get_weight() - return 25 * metric.count_people_in_department(DEPARTMENT_EVERYONE) diff --git a/code/modules/gamemaster/actions/money_spam.dm b/code/modules/gamemaster/actions/money_spam.dm deleted file mode 100644 index 80b5fed8080..00000000000 --- a/code/modules/gamemaster/actions/money_spam.dm +++ /dev/null @@ -1,131 +0,0 @@ -/datum/gm_action/pda_spam - name = "PDA spam" - departments = list(DEPARTMENT_EVERYONE) - reusable = TRUE - var/last_spam_time = 0 - var/obj/machinery/message_server/useMS - var/obj/machinery/exonet_node/node - -/datum/gm_action/pda_spam/set_up() - last_spam_time = world.time - pick_message_server() - -/datum/gm_action/pda_spam/proc/pick_message_server() - if(message_servers) - for (var/obj/machinery/message_server/MS in message_servers) - if(MS.active) - useMS = MS - break - -/datum/gm_action/pda_spam/start() - ..() - while(world.time < last_spam_time + 3000) - if(!node) - node = get_exonet_node() - - if(!node || !node.on || !node.allow_external_PDAs) - return - - if(!useMS || !useMS.active) - useMS = null - pick_message_server() - - if(useMS) - if(prob(5)) - // /obj/machinery/message_server/proc/send_pda_message(var/recipient = "",var/sender = "",var/message = "") - var/obj/item/device/pda/P - var/list/viables = list() - for(var/obj/item/device/pda/check_pda in sortAtom(PDAs)) - if (!check_pda.owner||check_pda.toff||check_pda == src||check_pda.hidden) - continue - viables.Add(check_pda) - - if(!viables.len) - return - P = pick(viables) - - var/sender - var/message - switch(pick(1,2,3,4,5,6,7)) - if(1) - sender = pick("MaxBet","MaxBet Online Casino","There is no better time to register","I'm excited for you to join us") - message = pick("Triple deposits are waiting for you at MaxBet Online when you register to play with us.",\ - "You can qualify for a 200% Welcome Bonus at MaxBet Online when you sign up today.",\ - "Once you are a player with MaxBet, you will also receive lucrative weekly and monthly promotions.",\ - "You will be able to enjoy over 450 top-flight casino games at MaxBet.") - if(2) - sender = pick(300;"QuickDatingSystem",200;"Find your russian bride",50;"Tajaran beauties are waiting",50;"Find your secret skrell crush",50;"Beautiful unathi brides") - message = pick("Your profile caught my attention and I wanted to write and say hello (QuickDating).",\ - "If you will write to me on my email [pick(first_names_female)]@[pick(last_names)].[pick("ru","ck","tj","ur","nt")] I shall necessarily send you a photo (QuickDating).",\ - "I want that we write each other and I hope, that you will like my profile and you will answer me (QuickDating).",\ - "You have (1) new message!",\ - "You have (2) new profile views!") - if(3) - sender = pick("Galactic Payments Association","Better Business Bureau","[using_map.starsys_name] E-Payments","NAnoTransen Finance Deparmtent","Luxury Replicas") - message = pick("Luxury watches for Blowout sale prices!",\ - "Watches, Jewelry & Accessories, Bags & Wallets !",\ - "Deposit 100$ and get 300$ totally free!",\ - " 100K NT.|WOWGOLD õnly $89 ",\ - "We have been filed with a complaint from one of your customers in respect of their business relations with you.",\ - "We kindly ask you to open the COMPLAINT REPORT (attached) to reply on this complaint..") - if(4) - sender = pick("Buy Dr. Maxman","Having dysfuctional troubles?") - message = pick("DR MAXMAN: REAL Doctors, REAL Science, REAL Results!",\ - "Dr. Maxman was created by George Acuilar, M.D, a [using_map.boss_short] Certified Urologist who has treated over 70,000 patients sector wide with 'male problems'.",\ - "After seven years of research, Dr Acuilar and his team came up with this simple breakthrough male enhancement formula.",\ - "Men of all species report AMAZING increases in length, width and stamina.") - if(5) - sender = pick("Dr","Crown prince","King Regent","Professor","Captain") - sender += " " + pick("Robert","Alfred","Josephat","Kingsley","Sehi","Zbahi") - sender += " " + pick("Mugawe","Nkem","Gbatokwia","Nchekwube","Ndim","Ndubisi") - message = pick("YOUR FUND HAS BEEN MOVED TO [pick("Salusa","Segunda","Cepheus","Andromeda","Gruis","Corona","Aquila","ARES","Asellus")] DEVELOPMENTARY BANK FOR ONWARD REMITTANCE.",\ - "We are happy to inform you that due to the delay, we have been instructed to IMMEDIATELY deposit all funds into your account",\ - "Dear fund beneficiary, We have please to inform you that overdue funds payment has finally been approved and released for payment",\ - "Due to my lack of agents I require an off-world financial account to immediately deposit the sum of 1 POINT FIVE MILLION credits.",\ - "Greetings sir, I regretfully to inform you that as I lay dying here due to my lack ofheirs I have chosen you to recieve the full sum of my lifetime savings of 1.5 billion credits") - if(6) - sender = pick("[using_map.company_name] Morale Divison","Feeling Lonely?","Bored?","www.wetskrell.nt") - message = pick("The [using_map.company_name] Morale Division wishes to provide you with quality entertainment sites.",\ - "WetSkrell.nt is a xenophillic website endorsed by NT for the use of male crewmembers among it's many stations and outposts.",\ - "Wetskrell.nt only provides the higest quality of male entertaiment to [using_map.company_name] Employees.",\ - "Simply enter your [using_map.company_name] Bank account system number and pin. With three easy steps this service could be yours!") - if(7) - sender = pick("You have won free tickets!","Click here to claim your prize!","You are the 1000th vistor!","You are our lucky grand prize winner!") - message = pick("You have won tickets to the newest ACTION JAXSON MOVIE!",\ - "You have won tickets to the newest crime drama DETECTIVE MYSTERY IN THE CLAMITY CAPER!",\ - "You have won tickets to the newest romantic comedy 16 RULES OF LOVE!",\ - "You have won tickets to the newest thriller THE CULT OF THE SLEEPING ONE!") - - if (useMS.send_pda_message("[P.owner]", sender, message)) //Message been filtered by spam filter. - return - - last_spam_time = world.time - - /* //VOREStation Removal: no need to spam the AI tenfold - if (prob(50)) //Give the AI an increased chance to intercept the message - for(var/mob/living/silicon/ai/ai in mob_list) - // Allows other AIs to intercept the message but the AI won't intercept their own message. - if(ai.aiPDA != P && ai.aiPDA != src) - ai.show_message("Intercepted message from [sender] (Unknown / spam?) to [P:owner]: [message]") - */ - - //Commented out because we don't send messages like this anymore. Instead it will just popup in their chat window. - //P.tnote += "← From [sender] (Unknown / spam?):
    [message]
    " - - if (!P.message_silent) - playsound(P.loc, 'sound/machines/twobeep.ogg', 50, 1) - for (var/mob/O in hearers(3, P.loc)) - if(!P.message_silent) O.show_message(text("[bicon(P)] *[P.ttone]*")) - //Search for holder of the PDA. - var/mob/living/L = null - if(P.loc && isliving(P.loc)) - L = P.loc - //Maybe they are a pAI! - else - L = get(P, /mob/living/silicon) - - if(L) - to_chat(L, "[bicon(P)] Message from [sender] (Unknown / spam?), \"[message]\" (Unable to Reply)") - -/datum/gm_action/pda_spam/get_weight() - return 25 * metric.count_people_in_department(DEPARTMENT_EVERYONE) diff --git a/code/modules/gamemaster/actions/planet_weather_change.dm b/code/modules/gamemaster/actions/planet_weather_change.dm deleted file mode 100644 index 641244bf0af..00000000000 --- a/code/modules/gamemaster/actions/planet_weather_change.dm +++ /dev/null @@ -1,35 +0,0 @@ -/datum/gm_action/planet_weather_shift - name = "sudden weather shift" - enabled = TRUE - departments = list(DEPARTMENT_EVERYONE) - reusable = TRUE - var/datum/planet/target_planet - - var/list/banned_weathers = list( - //VOREStation Edit - Virgo 3B Weather, - /datum/weather/virgo3b/ash_storm, - /datum/weather/virgo3b/emberfall, - /datum/weather/virgo3b/blood_moon, - /datum/weather/virgo3b/fallout) - //VOREStation Edit End - var/list/possible_weathers = list() - -/datum/gm_action/planet_weather_shift/set_up() - if(!target_planet || isnull(target_planet)) - target_planet = pick(SSplanets.planets) - possible_weathers |= target_planet.weather_holder.allowed_weather_types - possible_weathers -= banned_weathers - return - -/datum/gm_action/planet_weather_shift/get_weight() - return max(0, -15 + (metric.count_all_outdoor_mobs() * 20)) - -/datum/gm_action/planet_weather_shift/start() - ..() - var/new_weather = pick(possible_weathers) - target_planet.weather_holder.change_weather(new_weather) - -/datum/gm_action/planet_weather_shift/announce() - spawn(rand(3 SECONDS, 2 MINUTES)) - command_announcement.Announce("Local weather patterns on [target_planet.name] suggest that a sudden atmospheric fluctuation has occurred. All groundside personnel should be wary of rapidly deteriorating conditions.", "Weather Alert") - return diff --git a/code/modules/gamemaster/actions/prison_break.dm b/code/modules/gamemaster/actions/prison_break.dm deleted file mode 100644 index 0111ea0ecdf..00000000000 --- a/code/modules/gamemaster/actions/prison_break.dm +++ /dev/null @@ -1,93 +0,0 @@ -/datum/gm_action/prison_break - name = "prison break" - departments = list(DEPARTMENT_SECURITY, DEPARTMENT_SYNTHETIC) - - var/start_time = 0 - var/active = FALSE // Are we doing stuff? - var/releaseWhen = 60 // The delay for the breakout to occur. - var/list/area/areas = list() // List of areas to affect. Filled by start() - - var/eventDept = "Security" // Department name in announcement - var/list/areaName = list("Brig") // Names of areas mentioned in AI and Engineering announcements - var/list/areaType = list(/area/security/prison, /area/security/brig) // Area types to include. - var/list/areaNotType = list() // Area types to specifically exclude. - -/datum/gm_action/prison_break/get_weight() - var/afflicted_staff = 0 - var/assigned_staff = metric.count_people_in_department(DEPARTMENT_ENGINEERING) - for(var/department in departments) - afflicted_staff += round(metric.count_people_in_department(department) / 2) - - var/weight = 20 + (assigned_staff * 10) - - if(assigned_staff) - weight += afflicted_staff - - return weight - -/datum/gm_action/prison_break/virology - name = "virology breakout" - departments = list(DEPARTMENT_MEDICAL, DEPARTMENT_SYNTHETIC) - eventDept = "Medical" - areaName = list("Virology") - areaType = list(/area/medical/virology, /area/medical/virologyaccess) - -/datum/gm_action/prison_break/xenobiology - name = "xenobiology breakout" - departments = list(DEPARTMENT_RESEARCH, DEPARTMENT_SYNTHETIC) - eventDept = "Science" - areaName = list("Xenobiology") - areaType = list(/area/rnd/xenobiology) - areaNotType = list(/area/rnd/xenobiology/xenoflora, /area/rnd/xenobiology/xenoflora_storage) - -/datum/gm_action/prison_break/station - name = "station-wide breakout" - departments = list(DEPARTMENT_SECURITY, DEPARTMENT_MEDICAL, DEPARTMENT_RESEARCH, DEPARTMENT_SYNTHETIC) - eventDept = "Station" - areaName = list("Brig","Virology","Xenobiology") - areaType = list(/area/security/prison, /area/security/brig, /area/medical/virology, /area/medical/virologyaccess, /area/rnd/xenobiology) - areaNotType = list(/area/rnd/xenobiology/xenoflora, /area/rnd/xenobiology/xenoflora_storage) - -/datum/gm_action/prison_break/set_up() - releaseWhen = rand(60, 90) - start_time = world.time - active = TRUE - length = releaseWhen + 1 SECOND - -/datum/gm_action/prison_break/announce() - if(areas && areas.len > 0) - command_announcement.Announce("[pick("Gr3y.T1d3 virus","Malignant trojan")] detected in [station_name()] [(eventDept == "Security")? "imprisonment":"containment"] subroutines. Secure any compromised areas immediately. Station AI involvement is recommended.", "[eventDept] Alert") - -/datum/gm_action/prison_break/start() - ..() - for(var/area/A in all_areas) - if(is_type_in_list(A,areaType) && !is_type_in_list(A,areaNotType)) - areas += A - - if(areas && areas.len > 0) - var/my_department = "[station_name()] firewall subroutines" - var/rc_message = "An unknown malicious program has been detected in the [english_list(areaName)] lighting and airlock control systems at [stationtime2text()]. Systems will be fully compromised within approximately three minutes. Direct intervention is required immediately.
    " - for(var/obj/machinery/message_server/MS in machines) - MS.send_rc_message("Engineering", my_department, rc_message, "", "", 2) - for(var/mob/living/silicon/ai/A in player_list) - to_chat(A, "Malicious program detected in the [english_list(areaName)] lighting and airlock control systems by [my_department].") - - else - to_world_log("ERROR: Could not initate grey-tide. Unable to find suitable containment area.") - - if(areas && areas.len > 0) - spawn() - while(active) - sleep(1) - if(world.time >= releaseWhen + start_time) - var/obj/machinery/power/apc/theAPC = null - for(var/area/A in areas) - theAPC = A.get_apc() - if(theAPC.operating) //If the apc's off, it's a little hard to overload the lights. - for(var/obj/machinery/light/L in A) - L.flicker(10) - -/datum/gm_action/prison_break/end() - active = FALSE - for(var/area/A in shuffle(areas)) - A.prison_break() diff --git a/code/modules/gamemaster/actions/radiation_storm.dm b/code/modules/gamemaster/actions/radiation_storm.dm deleted file mode 100644 index e6a31a6da8d..00000000000 --- a/code/modules/gamemaster/actions/radiation_storm.dm +++ /dev/null @@ -1,67 +0,0 @@ -/datum/gm_action/radiation_storm - name = "radiation storm" - departments = list(DEPARTMENT_EVERYONE) - reusable = TRUE - - var/enterBelt = 30 - var/radIntervall = 5 - var/leaveBelt = 80 - var/revokeAccess = 165 - var/activeFor = 0 - var/postStartTicks = 0 - var/active = FALSE - -/datum/gm_action/radiation_storm/announce() - command_announcement.Announce("High levels of radiation detected near \the [station_name()]. Please evacuate into one of the shielded maintenance tunnels.", "Anomaly Alert", new_sound = 'sound/AI/radiation.ogg') - -/datum/gm_action/radiation_storm/set_up() - active = TRUE - -/datum/gm_action/radiation_storm/start() - ..() - make_maint_all_access() - - while(active) - sleep(1 SECOND) - activeFor ++ - if(activeFor == enterBelt) - command_announcement.Announce("The station has entered the radiation belt. Please remain in a sheltered area until we have passed the radiation belt.", "Anomaly Alert") - radiate() - - if(activeFor >= enterBelt && activeFor <= leaveBelt) - postStartTicks++ - - if(postStartTicks == radIntervall) - postStartTicks = 0 - radiate() - - else if(activeFor == leaveBelt) - command_announcement.Announce("The station has passed the radiation belt. Please allow for up to one minute while radiation levels dissipate, and report to medbay if you experience any unusual symptoms. Maintenance will lose all access again shortly.", "Anomaly Alert") - -/datum/gm_action/radiation_storm/proc/radiate() - var/radiation_level = rand(15, 35) - for(var/z in using_map.station_levels) - SSradiation.z_radiate(locate(1, 1, z), radiation_level, 1) - - for(var/mob/living/carbon/C in living_mob_list) - var/area/A = get_area(C) - if(!A) - continue - if(A.flags & RAD_SHIELDED) - continue - if(istype(C,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = C - if(prob(5)) - if (prob(75)) - randmutb(H) // Applies bad mutation - domutcheck(H,null,MUTCHK_FORCED) - else - randmutg(H) // Applies good mutation - domutcheck(H,null,MUTCHK_FORCED) - -/datum/gm_action/radiation_storm/end() - spawn(revokeAccess SECONDS) - revoke_maint_all_access() - -/datum/gm_action/radiation_storm/get_weight() - return 20 + (metric.count_people_in_department(DEPARTMENT_MEDICAL) * 10) + (metric.count_all_space_mobs() * 40) + (metric.count_people_in_department(DEPARTMENT_EVERYONE) * 20) diff --git a/code/modules/gamemaster/actions/random_antagonist.dm b/code/modules/gamemaster/actions/random_antagonist.dm deleted file mode 100644 index bf1169bb732..00000000000 --- a/code/modules/gamemaster/actions/random_antagonist.dm +++ /dev/null @@ -1,23 +0,0 @@ -// The random spawn proc on the antag datum will handle announcing the spawn and whatnot. -/datum/gm_action/random_antag - name = "random antagonist" - departments = list(DEPARTMENT_EVERYONE) - chaotic = 30 - reusable = TRUE - -/datum/gm_action/random_antag/start() - ..() - var/list/valid_types = list() - for(var/antag_type in all_antag_types) - var/datum/antagonist/antag = all_antag_types[antag_type] - if(antag.flags & ANTAG_RANDSPAWN) - valid_types |= antag - if(valid_types.len) - var/datum/antagonist/antag = pick(valid_types) - antag.attempt_random_spawn() - -/datum/gm_action/random_antag/get_weight() - . = ..() - if(gm) - var/weight = max(0, (metric.count_people_in_department(DEPARTMENT_SECURITY) * 20) + (metric.count_people_in_department(DEPARTMENT_EVERYONE) * 5) + gm.staleness) - return weight diff --git a/code/modules/gamemaster/actions/rogue_drones.dm b/code/modules/gamemaster/actions/rogue_drones.dm deleted file mode 100644 index a1594fd370c..00000000000 --- a/code/modules/gamemaster/actions/rogue_drones.dm +++ /dev/null @@ -1,63 +0,0 @@ -/datum/gm_action/rogue_drone - name = "rogue drones" - departments = list(DEPARTMENT_SECURITY) - chaotic = 60 - length = 20 MINUTES - var/list/drones_list = list() - -/datum/gm_action/rogue_drone/start() - ..() - //spawn them at the same place as carp - var/list/possible_spawns = list() - for(var/obj/effect/landmark/C in landmarks_list) - if(C.name == "carpspawn") - possible_spawns.Add(C) - - //25% chance for this to be a false alarm - var/num - if(prob(25)) - num = 0 - else - num = rand(2,6) - for(var/i=0, i drones_list.len * 0.75) - command_announcement.Announce("The drones that were malfunctioning have been recovered safely.", "Rogue drone alert") - else - command_announcement.Announce("We're disappointed at the loss of the drones, but the survivors have been recovered.", "Rogue drone alert") - -/datum/gm_action/rogue_drone/get_weight() - return 20 + (metric.count_people_in_department(DEPARTMENT_SECURITY) * 10) + (metric.count_all_space_mobs() * 30) diff --git a/code/modules/gamemaster/actions/security_advisement.dm b/code/modules/gamemaster/actions/security_advisement.dm deleted file mode 100644 index e98504df097..00000000000 --- a/code/modules/gamemaster/actions/security_advisement.dm +++ /dev/null @@ -1,49 +0,0 @@ -/datum/gm_action/security_screening - name = "security screening" - departments = list(DEPARTMENT_SECURITY, DEPARTMENT_EVERYONE) - - var/list/species_weights = list( - SPECIES_SKRELL = 9, - SPECIES_UNATHI = 15, - SPECIES_HUMAN_VATBORN = 6, - SPECIES_TESHARI = 2, - SPECIES_TAJ = 3, - SPECIES_DIONA = 1, - SPECIES_ZADDAT = 25, - SPECIES_HUMAN = 3, - SPECIES_PROMETHEAN = 30 - ) - - var/list/synth_weights = list( - "Cybernetic" = 15, - "Drone" = 30, - "Positronic" = 25 - ) - - var/list/end_weights = list() - -/datum/gm_action/security_screening/set_up() - for(var/species_name in species_weights) - var/giveweight = 0 - - for(var/datum/data/record/R in data_core.general) - if(R.fields["species"] == species_name) - giveweight += species_weights[species_name] - - end_weights[species_name] = giveweight - - for(var/bottype in synth_weights) - var/giveweight = 0 - - for(var/datum/data/record/R in data_core.general) - if(R.fields["brain_type"] == bottype) - giveweight += synth_weights[bottype] - - end_weights[bottype] = giveweight - -/datum/gm_action/security_screening/announce() - spawn(rand(1 MINUTE, 2 MINUTES)) - command_announcement.Announce("[pick("A nearby Navy vessel", "A Solar official", "A Vir-Gov official", "A NanoTrasen board director")] has requested the screening of [pick("every other", "every", "suspicious", "willing")] [pickweight(end_weights)] personnel onboard \the [station_name()].", "Security Advisement") - -/datum/gm_action/security_screening/get_weight() - return max(-20, 10 + round(gm.staleness * 1.5) - (gm.danger * 2)) + (metric.count_people_in_department(DEPARTMENT_SECURITY) * 10) + (metric.count_people_in_department(DEPARTMENT_EVERYONE) * 1.5) diff --git a/code/modules/gamemaster/actions/shipping_error.dm b/code/modules/gamemaster/actions/shipping_error.dm deleted file mode 100644 index 95611d6e290..00000000000 --- a/code/modules/gamemaster/actions/shipping_error.dm +++ /dev/null @@ -1,17 +0,0 @@ -/datum/gm_action/shipping_error - name = "shipping error" - departments = list(DEPARTMENT_CARGO) - reusable = TRUE - -/datum/gm_action/shipping_error/get_weight() - var/cargo = metric.count_people_in_department(DEPARTMENT_CARGO) - var/weight = (cargo * 40) - return weight - -/datum/gm_action/shipping_error/start() - ..() - var/datum/supply_order/O = new /datum/supply_order() - O.ordernum = SSsupply.ordernum - O.object = SSsupply.supply_pack[pick(SSsupply.supply_pack)] - O.ordered_by = random_name(pick(MALE,FEMALE), species = "Human") - SSsupply.shoppinglist += O \ No newline at end of file diff --git a/code/modules/gamemaster/actions/solar_storm.dm b/code/modules/gamemaster/actions/solar_storm.dm deleted file mode 100644 index f468c024a95..00000000000 --- a/code/modules/gamemaster/actions/solar_storm.dm +++ /dev/null @@ -1,56 +0,0 @@ -/datum/gm_action/solar_storm - name = "solar storm" - var/rad_interval = 1 SECOND - var/base_solar_gen_rate - length = 3 MINUTES - var/duration // Duration for the storm - var/start_time = 0 - - reusable = TRUE - -/datum/gm_action/solar_storm/set_up() - start_time = world.time - duration = length - duration += rand(-1 * 1 MINUTE, 1 MINUTE) - -/datum/gm_action/solar_storm/announce() - command_announcement.Announce("A solar storm has been detected approaching \the [station_name()]. Please halt all EVA activites immediately and return to the interior of the station.", "Anomaly Alert", new_sound = 'sound/AI/radiation.ogg') - adjust_solar_output(1.5) - -/datum/gm_action/solar_storm/proc/adjust_solar_output(var/mult = 1) - if(isnull(base_solar_gen_rate)) base_solar_gen_rate = GLOB.solar_gen_rate - GLOB.solar_gen_rate = mult * base_solar_gen_rate - -/datum/gm_action/solar_storm/start() - ..() - length = duration - command_announcement.Announce("The solar storm has reached the station. Please refain from EVA and remain inside the station until it has passed.", "Anomaly Alert") - adjust_solar_output(5) - - var/start_time = world.time - - spawn() - while(world.time <= start_time + duration) - sleep(rad_interval) - radiate() - -/datum/gm_action/solar_storm/get_weight() - return 20 + (metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 10) + (metric.count_all_space_mobs() * 30) - -/datum/gm_action/solar_storm/proc/radiate() - // Note: Too complicated to be worth trying to use the radiation system for this. Its only in space anyway, so we make an exception in this case. - for(var/mob/living/L in player_list) - var/turf/T = get_turf(L) - if(!T) - continue - - if(!istype(T.loc,/area/space) && !istype(T,/turf/space)) //Make sure you're in a space area or on a space turf - continue - - //Todo: Apply some burn damage from the heat of the sun. Until then, enjoy some moderate radiation. - L.rad_act(rand(15, 30)) - -/datum/gm_action/solar_storm/end() - command_announcement.Announce("The solar storm has passed the station. It is now safe to resume EVA activities. Please report to medbay if you experience any unusual symptoms. ", "Anomaly Alert") - adjust_solar_output() - length = initial(length) diff --git a/code/modules/gamemaster/actions/spacevine.dm b/code/modules/gamemaster/actions/spacevine.dm deleted file mode 100644 index 759329dbbc2..00000000000 --- a/code/modules/gamemaster/actions/spacevine.dm +++ /dev/null @@ -1,14 +0,0 @@ -/datum/gm_action/spacevine - name = "space-vine infestation" - departments = list(DEPARTMENT_ENGINEERING) - chaotic = 2 - -/datum/gm_action/spacevine/start() - ..() - spacevine_infestation() - -/datum/gm_action/spacevine/announce() - level_seven_announcement() - -/datum/gm_action/spacevine/get_weight() - return 20 + (metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 20) + (metric.count_people_in_department(DEPARTMENT_EVERYONE) * 10) diff --git a/code/modules/gamemaster/actions/spider_infestation.dm b/code/modules/gamemaster/actions/spider_infestation.dm deleted file mode 100644 index 4105a8e1d4b..00000000000 --- a/code/modules/gamemaster/actions/spider_infestation.dm +++ /dev/null @@ -1,56 +0,0 @@ -/datum/gm_action/spider_infestation - name = "spider infestation" - departments = list(DEPARTMENT_SECURITY, DEPARTMENT_MEDICAL, DEPARTMENT_EVERYONE) - chaotic = 30 - - severity = 1 - - var/spawncount = 1 - - var/spawntype = /obj/effect/spider/spiderling - -/datum/gm_action/spider_infestation/set_up() - severity = pickweight(EVENT_LEVEL_MUNDANE = max(1,(12 - (3 * metric.count_people_in_department(DEPARTMENT_SECURITY)))), - EVENT_LEVEL_MODERATE = (7 + (2 * metric.count_people_in_department(DEPARTMENT_SECURITY))), - EVENT_LEVEL_MAJOR = (1 + (2 * metric.count_people_in_department(DEPARTMENT_SECURITY))) - ) - - switch(severity) - if(EVENT_LEVEL_MUNDANE) - spawntype = /obj/effect/spider/spiderling/stunted - if(EVENT_LEVEL_MODERATE) - spawntype = /obj/effect/spider/spiderling - if(EVENT_LEVEL_MAJOR) - spawntype = /obj/effect/spider/spiderling - - spawncount = rand(4 * severity, 6 * severity) - -/datum/gm_action/spider_infestation/announce() - command_announcement.Announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", new_sound = 'sound/AI/aliens.ogg') - - if(severity >= EVENT_LEVEL_MAJOR) - spawn(rand(600, 3000)) - command_announcement.Announce("Unidentified lifesigns previously detected coming aboard [station_name()] have been classified as a swarm of arachnids. Extreme caution is advised.", "Arachnid Alert") - -/datum/gm_action/spider_infestation/start() - ..() - var/list/vents = list() - for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in machines) - if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in using_map.station_levels) - if(temp_vent.network.normal_members.len > 50) - vents += temp_vent - - while((spawncount >= 1) && vents.len) - var/obj/vent = pick(vents) - new /obj/effect/spider/spiderling(vent.loc) - vents -= vent - spawncount-- - -/datum/gm_action/spider_infestation/get_weight() - var/security = metric.count_people_in_department(DEPARTMENT_SECURITY) - var/medical = metric.count_people_in_department(DEPARTMENT_MEDICAL) - var/engineering = metric.count_people_in_department(DEPARTMENT_ENGINEERING) - - var/assigned_staff = security + round(medical / 2) + round(engineering / 2) - - return 10 + (assigned_staff * 15) diff --git a/code/modules/gamemaster/actions/spontaneous_appendicitis.dm b/code/modules/gamemaster/actions/spontaneous_appendicitis.dm deleted file mode 100644 index ef7efde26bc..00000000000 --- a/code/modules/gamemaster/actions/spontaneous_appendicitis.dm +++ /dev/null @@ -1,13 +0,0 @@ -/datum/gm_action/spontaneous_appendicitis - name = "appendicitis" - departments = list(DEPARTMENT_MEDICAL, DEPARTMENT_EVERYONE) - chaotic = 1 - -/datum/gm_action/spontaneous_appendicitis/start() - ..() - for(var/mob/living/carbon/human/H in shuffle(living_mob_list)) - if(H.client && !player_is_antag(H.mind) && H.appendicitis()) - break - -/datum/gm_action/spontaneous_appendicitis/get_weight() - return max(0, -5 + (metric.count_people_in_department(DEPARTMENT_MEDICAL) * 10)) diff --git a/code/modules/gamemaster/actions/station_fundraise.dm b/code/modules/gamemaster/actions/station_fundraise.dm deleted file mode 100644 index 96d4299053a..00000000000 --- a/code/modules/gamemaster/actions/station_fundraise.dm +++ /dev/null @@ -1,14 +0,0 @@ -/datum/gm_action/station_fund_raise - name = "local funding drive" - departments = list(DEPARTMENT_SECURITY, DEPARTMENT_CARGO, DEPARTMENT_EVERYONE) - -/datum/gm_action/station_fund_raise/announce() - spawn(rand(1 MINUTE, 2 MINUTES)) - command_announcement.Announce("Due to [pick("recent", "unfortunate", "possible future")] budget [pick("changes", "issues")], in-system stations are now advised to increase funding income.", "Security & Supply Advisement") - -/datum/gm_action/station_fund_raise/get_weight() - var/weight_modifier = 0.5 - if(station_account.money <= 80000) - weight_modifier = 1 - - return (max(-20, 10 + gm.staleness) + ((metric.count_people_in_department(DEPARTMENT_SECURITY) + (metric.count_people_in_department(DEPARTMENT_CARGO))) * 5) + (metric.count_people_in_department(DEPARTMENT_EVERYONE) * 3)) * weight_modifier diff --git a/code/modules/gamemaster/actions/stowaway.dm b/code/modules/gamemaster/actions/stowaway.dm deleted file mode 100644 index b7185e1ed48..00000000000 --- a/code/modules/gamemaster/actions/stowaway.dm +++ /dev/null @@ -1,80 +0,0 @@ -/datum/gm_action/stowaway - name = "stowaway pod" - departments = list(DEPARTMENT_EVERYONE, DEPARTMENT_SECURITY) - chaotic = 10 - observers_used = TRUE - var/area/target_area // Chosen target area - var/area/target_turf // Chosen target turf in target_area - var/list/area/excluded = list( - /area/submap, - /area/shuttle, - /area/crew_quarters, - /area/holodeck, - /area/engineering/engine_room - ) - - var/list/area/included = list( - /area/maintenance - ) - -/datum/gm_action/stowaway/set_up() - severity = pickweight(EVENT_LEVEL_MUNDANE = 20, - EVENT_LEVEL_MODERATE = 5, - EVENT_LEVEL_MAJOR = 1 - ) - - var/list/area/grand_list_of_areas = get_station_areas(excluded) - - for(var/area/Incl in included) - for(var/area/A in grand_list_of_areas) - if(!istype(A, Incl)) - grand_list_of_areas -= A - - // Okay, now lets try and pick a target! Lets try 10 times, otherwise give up - for(var/i in 1 to 10) - var/area/A = pick(grand_list_of_areas) - if(is_area_occupied(A)) - log_debug("[name] event: Rejected [A] because it is occupied.") - continue - // A good area, great! Lets try and pick a turf - var/list/turfs = list() - for(var/turf/simulated/floor/F in A) - if(turf_clear(F)) - turfs += F - if(turfs.len == 0) - log_debug("[name] event: Rejected [A] because it has no clear turfs.") - continue - target_area = A - target_turf = pick(turfs) - - if(!target_area) - log_debug("[name] event: Giving up after too many failures to pick target area") - return - -/datum/gm_action/stowaway/start() - if(!target_turf) - return - ..() - - var/obj/structure/ghost_pod/ghost_activated/human/HP = new (target_turf) - - if(severity == EVENT_LEVEL_MUNDANE || istype(ticker.mode, /datum/game_mode/extended)) - HP.make_antag = MODE_STOWAWAY - - else if(severity == EVENT_LEVEL_MODERATE) - HP.make_antag = MODE_RENEGADE - HP.occupant_type = "renegade [HP.occupant_type]" - - else if(severity == EVENT_LEVEL_MAJOR) - HP.make_antag = MODE_INFILTRATOR - HP.occupant_type = "volatile [HP.occupant_type]" - - say_dead_object("A [HP.occupant_type] pod is now available in \the [target_area].", HP) - -/datum/gm_action/stowaway/get_weight() - return -20 + (metric.count_people_in_department(DEPARTMENT_SECURITY) * 15 + metric.count_people_in_department(DEPARTMENT_SYNTHETIC) * 5 + metric.count_people_in_department(DEPARTMENT_EVERYONE) * 1) - -/datum/gm_action/stowaway/announce() - spawn(rand(15 MINUTES, 30 MINUTES)) - if(prob(20) && severity >= EVENT_LEVEL_MODERATE && atc && !atc.squelched) - atc.msg("Attention civilian vessels in [using_map.starsys_name] shipping lanes, caution is advised as [pick("an unidentified vessel", "a known criminal's vessel", "a derelict vessel")] has been detected passing multiple local stations.") diff --git a/code/modules/gamemaster/actions/supply_conversion.dm b/code/modules/gamemaster/actions/supply_conversion.dm deleted file mode 100644 index 3817dcce636..00000000000 --- a/code/modules/gamemaster/actions/supply_conversion.dm +++ /dev/null @@ -1,65 +0,0 @@ -/datum/gm_action/nanotrasen_budget_allocation - name = "supply point to cargo budget" - enabled = TRUE - departments = list(DEPARTMENT_CARGO) - chaotic = 0 - reusable = TRUE - - var/datum/controller/subsystem/supply/SC - var/running = FALSE - var/last_run - - var/thaler_earned - -/datum/gm_action/nanotrasen_budget_allocation/New() - ..() - SC = SSsupply - -/datum/gm_action/nanotrasen_budget_allocation/set_up() - running = TRUE - return - -/datum/gm_action/nanotrasen_budget_allocation/get_weight() - . = round(SC.points / 15) - - var/cargo = metric.count_people_in_department(DEPARTMENT_CARGO) - var/personnel = metric.count_people_in_department(DEPARTMENT_EVERYONE) - if(cargo) - . = round(SC.points / (10 + personnel)) + cargo * 10 - - if(running || ( world.time < (last_run + 30 MINUTES))) - . = 0 - - return . - -/datum/gm_action/nanotrasen_budget_allocation/start() - . = ..() - - last_run = world.time - - var/point_difference = SC.points - - if(SC.points >= 1000) - SC.points = round(SC.points / 3) - point_difference -= SC.points - - else if(SC.points >= 500) - SC.points -= 100 * (rand(5, 20) / 10) - point_difference -= SC.points - - else - SC.points = round(SC.points / 1.25) - point_difference -= SC.points - - if(point_difference > 0) - thaler_earned = round(point_difference / SC.points_per_money) - -/datum/gm_action/nanotrasen_budget_allocation/end() - spawn(5 MINUTES) - running = FALSE - return - -/datum/gm_action/nanotrasen_budget_allocation/announce() - spawn(rand(1 MINUTE, 5 MINUTES)) - command_announcement.Announce("[station_name()] Supply Department has earned a converted thaler budget of [thaler_earned] due to their backlogged daily requisition tokens.", "Supply Budget Conversion") - return diff --git a/code/modules/gamemaster/actions/supplyrequest.dm b/code/modules/gamemaster/actions/supplyrequest.dm deleted file mode 100644 index 0ba9366542e..00000000000 --- a/code/modules/gamemaster/actions/supplyrequest.dm +++ /dev/null @@ -1,11 +0,0 @@ -/datum/gm_action/request - name = "general request" - departments = list(DEPARTMENT_CARGO) - -/datum/gm_action/request/announce() - spawn(rand(1 MINUTE, 2 MINUTES)) - command_announcement.Announce("[pick("A nearby vessel", "A Solar contractor", "A Skrellian contractor", "A NanoTrasen board director")] has requested the delivery of [pick("one","two","three","several")] [pick("medical","engineering","research","civilian")] supply packages. The [station_name()] has been tasked with completing this request.", "Supply Request") - -/datum/gm_action/request/get_weight() - return max(15, 15 + round(gm.staleness / 2) - gm.danger) + (metric.count_people_in_department(DEPARTMENT_CARGO) * 10) - diff --git a/code/modules/gamemaster/actions/surprise_carp_attack.dm b/code/modules/gamemaster/actions/surprise_carp_attack.dm deleted file mode 100644 index eb7b61841ca..00000000000 --- a/code/modules/gamemaster/actions/surprise_carp_attack.dm +++ /dev/null @@ -1,45 +0,0 @@ -// This event sends a few carp after someone in space. - -/datum/gm_action/surprise_carp_attack - name = "surprise carp attack" - departments = list(DEPARTMENT_EVERYONE) - reusable = TRUE - chaotic = 10 - var/mob/living/victim = null - -/datum/gm_action/surprise_carp_attack/get_weight() - return metric.count_all_space_mobs() * 50 - -/datum/gm_action/surprise_carp_attack/set_up() - var/list/potential_victims = list() - victim = null - for(var/mob/living/L in player_list) - if(!(L.z in using_map.station_levels)) - continue // Not on the right z-level. - if(L.stat) - continue // Don't want dead people. - var/turf/T = get_turf(L) - if(istype(T, /turf/space) && istype(T.loc,/area/space)) - potential_victims.Add(L) - if(potential_victims.len) - victim = pick(potential_victims) - - -/datum/gm_action/surprise_carp_attack/start() - ..() - if(!victim) - message_admins("Surprise carp attack failed to find a target.") - return - var/number_of_carp = rand(1, 2) - message_admins("Sending [number_of_carp] carp\s after [victim].") - while(number_of_carp) - var/turf/spawning_turf = null - var/list/nearby_things = oview(10, victim) - for(var/turf/space/space in nearby_things) - if(get_dist(space, victim) <= 7) - continue - spawning_turf = space - break - if(spawning_turf) - 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/actions/surprise_meteor.dm b/code/modules/gamemaster/actions/surprise_meteor.dm deleted file mode 100644 index 9bdf8949486..00000000000 --- a/code/modules/gamemaster/actions/surprise_meteor.dm +++ /dev/null @@ -1,17 +0,0 @@ -// This event sends one wave of meteors unannounced. - -/datum/gm_action/surprise_meteors - name = "surprise meteors" - departments = list(DEPARTMENT_ENGINEERING) - chaotic = 25 - -/datum/gm_action/surprise_meteors/get_weight() - var/engineers = metric.count_people_in_department(DEPARTMENT_ENGINEERING) - var/weight = (max(engineers - 1, 0) * 25) // If only one engineer exists, no meteors for now. - return weight - -/datum/gm_action/surprise_meteors/start() - ..() - spawn(1) - spawn_meteors(rand(4, 8), meteors_normal, pick(cardinal)) - message_admins("Surprise meteors event has ended.") \ No newline at end of file diff --git a/code/modules/gamemaster/actions/swarmboarder.dm b/code/modules/gamemaster/actions/swarmboarder.dm deleted file mode 100644 index fb98dc535ec..00000000000 --- a/code/modules/gamemaster/actions/swarmboarder.dm +++ /dev/null @@ -1,75 +0,0 @@ -/datum/gm_action/swarm_boarder - name = "swarmer shell" - departments = list(DEPARTMENT_EVERYONE, DEPARTMENT_SECURITY, DEPARTMENT_ENGINEERING) - chaotic = 60 - observers_used = TRUE - var/area/target_area // Chosen target area - var/area/target_turf // Chosen target turf in target_area - var/list/area/excluded = list( - /area/submap, - /area/shuttle, - /area/crew_quarters, - /area/holodeck, - /area/engineering/engine_room - ) - - var/list/area/included = list( - /area/maintenance - ) - -/datum/gm_action/swarm_boarder/set_up() - severity = pickweight(EVENT_LEVEL_MUNDANE = 30, - EVENT_LEVEL_MODERATE = 10, - EVENT_LEVEL_MAJOR = 1 - ) - - var/list/area/grand_list_of_areas = get_station_areas(excluded) - - for(var/area/Incl in included) - for(var/area/A in grand_list_of_areas) - if(!istype(A, Incl)) - grand_list_of_areas -= A - - // Okay, now lets try and pick a target! Lets try 10 times, otherwise give up - for(var/i in 1 to 10) - var/area/A = pick(grand_list_of_areas) - if(is_area_occupied(A)) - log_debug("[name] event: Rejected [A] because it is occupied.") - continue - // A good area, great! Lets try and pick a turf - var/list/turfs = list() - for(var/turf/simulated/floor/F in A) - if(turf_clear(F)) - turfs += F - if(turfs.len == 0) - log_debug("[name] event: Rejected [A] because it has no clear turfs.") - continue - target_area = A - target_turf = pick(turfs) - - if(!target_area) - log_debug("[name] event: Giving up after too many failures to pick target area") - return - -/datum/gm_action/swarm_boarder/start() - if(!target_turf) - return - ..() - - var/swarmertype = /obj/structure/ghost_pod/ghost_activated/swarm_drone/event - - if(severity == EVENT_LEVEL_MODERATE) - swarmertype = /obj/structure/ghost_pod/ghost_activated/swarm_drone/event/melee - - if(severity == EVENT_LEVEL_MAJOR) - swarmertype = /obj/structure/ghost_pod/ghost_activated/swarm_drone/event/gunner - - new swarmertype(target_turf) - -/datum/gm_action/swarm_boarder/get_weight() - return max(0, -60 + (metric.count_people_in_department(DEPARTMENT_SECURITY) * 10 + metric.count_people_in_department(DEPARTMENT_SYNTHETIC) * 5)) - -/datum/gm_action/swarm_boarder/announce() - spawn(rand(5 MINUTES, 15 MINUTES)) - if(prob(80) && severity >= EVENT_LEVEL_MODERATE && atc && !atc.squelched) - atc.msg("Attention civilian vessels in [using_map.starsys_name] shipping lanes, caution is advised as [pick("an unidentified vessel", "a known criminal's vessel", "a derelict vessel")] has been detected passing multiple local stations.") diff --git a/code/modules/gamemaster/actions/viral_infection.dm b/code/modules/gamemaster/actions/viral_infection.dm deleted file mode 100644 index 97a646e2a3c..00000000000 --- a/code/modules/gamemaster/actions/viral_infection.dm +++ /dev/null @@ -1,83 +0,0 @@ -/var/global/list/event_viruses = list() // so that event viruses are kept around for admin logs, rather than being GCed - -/datum/gm_action/viral_infection - name = "viral infection" - departments = list(DEPARTMENT_MEDICAL) - chaotic = 5 - var/list/viruses = list() - severity = 1 - -/datum/gm_action/viral_infection/set_up() - severity = pickweight(EVENT_LEVEL_MUNDANE = 20, - EVENT_LEVEL_MODERATE = 10, - EVENT_LEVEL_MAJOR = 3 - ) - - //generate 1-3 viruses. This way there's an upper limit on how many individual diseases need to be cured if many people are initially infected - var/num_diseases = rand(1,3) - for (var/i=0, i < num_diseases, i++) - var/datum/disease2/disease/D = new /datum/disease2/disease - - var/strength = 1 //whether the disease is of the greater or lesser variety - if (severity >= EVENT_LEVEL_MAJOR && prob(75)) - strength = 2 - D.makerandom(strength) - viruses += D - -/datum/gm_action/viral_infection/announce() - var/level - if (severity == EVENT_LEVEL_MUNDANE) - return - else if (severity == EVENT_LEVEL_MODERATE) - level = pick("one", "two", "three", "four") - else - level = "five" - - spawn(rand(0, 3000)) - if(severity == EVENT_LEVEL_MAJOR || prob(60)) - command_announcement.Announce("Confirmed outbreak of level [level] biohazard aboard \the [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", new_sound = 'sound/AI/outbreak5.ogg') - -/datum/gm_action/viral_infection/start() - if(!viruses.len) return - - ..() - - var/list/candidates = list() //list of candidate keys - for(var/mob/living/carbon/human/G in player_list) - if(G.mind && G.stat != DEAD && G.is_client_active(5) && !player_is_antag(G.mind)) - var/turf/T = get_turf(G) - if(T.z in using_map.station_levels) - candidates += G - if(!candidates.len) return - candidates = shuffle(candidates)//Incorporating Donkie's list shuffle - - var/list/used_viruses = list() - var/list/used_candidates = list() - severity = max(EVENT_LEVEL_MUNDANE, severity - 1) - var/actual_severity = severity * rand(1, 3) - while(actual_severity > 0 && candidates.len) - var/datum/disease2/disease/D = pick(viruses) - infect_mob(candidates[1], D.getcopy()) - used_candidates += candidates[1] - candidates.Remove(candidates[1]) - actual_severity-- - used_viruses |= D - - event_viruses |= used_viruses - var/list/used_viruses_links = list() - var/list/used_viruses_text = list() - for(var/datum/disease2/disease/D in used_viruses) - used_viruses_links += "[D.name()]" - used_viruses_text += D.name() - - var/list/used_candidates_links = list() - var/list/used_candidates_text = list() - for(var/mob/M in used_candidates) - used_candidates_links += key_name_admin(M) - used_candidates_text += key_name(M) - - log_admin("Virus event affecting [english_list(used_candidates_text)] started; Viruses: [english_list(used_viruses_text)]") - message_admins("Virus event affecting [english_list(used_candidates_links)] started; Viruses: [english_list(used_viruses_links)]") - -/datum/gm_action/viral_infection/get_weight() - return (metric.count_people_in_department(DEPARTMENT_MEDICAL) * 20) diff --git a/code/modules/gamemaster/actions/viral_outbreak.dm b/code/modules/gamemaster/actions/viral_outbreak.dm deleted file mode 100644 index 352627bd24d..00000000000 --- a/code/modules/gamemaster/actions/viral_outbreak.dm +++ /dev/null @@ -1,44 +0,0 @@ -/datum/gm_action/viral_outbreak - name = "viral outbreak" - departments = list(DEPARTMENT_MEDICAL, DEPARTMENT_EVERYONE) - chaotic = 30 - severity = 1 - var/list/candidates = list() - -/datum/gm_action/viral_outbreak/set_up() - candidates.Cut() // Incase we somehow get run twice. - severity = rand(2, 4) - for(var/mob/living/carbon/human/G in player_list) - if(G.client && G.stat != DEAD) - candidates += G - if(!candidates.len) return - candidates = shuffle(candidates)//Incorporating Donkie's list shuffle - -/datum/gm_action/viral_outbreak/announce() - command_announcement.Announce("Confirmed outbreak of level 7 biohazard aboard \the [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", new_sound = 'sound/AI/outbreak7.ogg') - -/datum/gm_action/viral_outbreak/start() - ..() - while(severity > 0 && candidates.len) - if(prob(33)) - infect_mob_random_lesser(candidates[1]) - else - infect_mob_random_greater(candidates[1]) - - candidates.Remove(candidates[1]) - severity-- - -/datum/gm_action/viral_outbreak/get_weight() - var/medical = metric.count_people_in_department(DEPARTMENT_MEDICAL) - var/security = metric.count_people_in_department(DEPARTMENT_SECURITY) - var/everyone = metric.count_people_in_department(DEPARTMENT_EVERYONE) - - var/assigned_staff = medical + round(security / 2) - - if(!medical) // No docs, no staff. - assigned_staff = 0 - - if(assigned_staff < round(everyone / 6) - assigned_staff) // A doc or half an officer per roughly six people. Any less, and assigned staff is halved. - assigned_staff /= 2 - - return (assigned_staff * 10) diff --git a/code/modules/gamemaster/actions/wallrot.dm b/code/modules/gamemaster/actions/wallrot.dm deleted file mode 100644 index deabfbe34a5..00000000000 --- a/code/modules/gamemaster/actions/wallrot.dm +++ /dev/null @@ -1,43 +0,0 @@ -/datum/gm_action/wallrot - name = "wall rot" - departments = list(DEPARTMENT_ENGINEERING) - reusable = TRUE - var/turf/simulated/wall/center - severity = 1 - -/datum/gm_action/wallrot/set_up() - severity = rand(1,3) - center = null - // 100 attempts - for(var/i=0, i<100, i++) - var/turf/candidate = locate(rand(1, world.maxx), rand(1, world.maxy), 1) - if(istype(candidate, /turf/simulated/wall)) - center = candidate - return 1 - return 0 - -/datum/gm_action/wallrot/announce() - if(center && prob(min(90,40 * severity))) - command_announcement.Announce("Harmful fungi detected on \the [station_name()] nearby [center.loc.name]. Station structures may be contaminated.", "Biohazard Alert") - -/datum/gm_action/wallrot/start() - ..() - spawn() - if(center) - // Make sure at least one piece of wall rots! - center.rot() - - // Have a chance to rot lots of other walls. - var/rotcount = 0 - var/actual_severity = severity * rand(5, 10) - for(var/turf/simulated/wall/W in range(5, center)) - if(prob(50)) - W.rot() - rotcount++ - - // Only rot up to severity walls - if(rotcount >= actual_severity) - break - -/datum/gm_action/wallrot/get_weight() - return 60 + (metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 35) diff --git a/code/modules/gamemaster/actions/waste_disposal.dm b/code/modules/gamemaster/actions/waste_disposal.dm deleted file mode 100644 index e8412d7e95e..00000000000 --- a/code/modules/gamemaster/actions/waste_disposal.dm +++ /dev/null @@ -1,9 +0,0 @@ -// A shuttle full of junk docks, and cargo is tasked with sifting through it all to find valuables, or just dispose of it. - -/datum/gm_action/waste_disposal - name = "waste disposal" - departments = list(DEPARTMENT_CARGO) - chaotic = 0 - -/datum/gm_action/waste_disposal/get_weight() - return metric.count_people_in_department(DEPARTMENT_CARGO) * 50 \ No newline at end of file diff --git a/code/modules/gamemaster/actions/window_break.dm b/code/modules/gamemaster/actions/window_break.dm deleted file mode 100644 index c409388c233..00000000000 --- a/code/modules/gamemaster/actions/window_break.dm +++ /dev/null @@ -1,78 +0,0 @@ -/datum/gm_action/window_break - name = "window breach" - departments = list(DEPARTMENT_ENGINEERING) - chaotic = 5 - var/obj/structure/window/chosen_window - var/list/obj/structure/window/collateral_windows - var/turf/chosen_location - var/list/area/excluded = list( - /area/shuttle, - /area/crew_quarters - ) - -/datum/gm_action/window_break/set_up() - var/list/area/grand_list_of_areas = get_station_areas(excluded) - //try 10 times - for(var/i in 1 to 10) - var/area/A = pick(grand_list_of_areas) - var/list/obj/structure/window/possible_target_windows = list() - for(var/obj/structure/window/target_window in A.contents) - possible_target_windows += target_window - possible_target_windows = shuffle(possible_target_windows) - - for(var/obj/structure/window/target_window in possible_target_windows) - //if() don't have any conditions, for isn't strictly necessary - chosen_window = target_window - chosen_location = chosen_window.loc - collateral_windows = gather_collateral_windows(chosen_window) - return - -//TL;DR: breadth first search for all connected turfs with windows -/datum/gm_action/window_break/proc/gather_collateral_windows(var/obj/structure/window/target_window) - var/list/turf/frontier_set = list(target_window.loc) - var/list/obj/structure/window/result_set = list() - var/list/turf/explored_set = list() - - while(frontier_set.len > 0) - var/turf/current = frontier_set[1] - frontier_set -= current - explored_set += current - - var/contains_windows = 0 - for(var/obj/structure/window/to_add in current.contents) - contains_windows = 1 - result_set += to_add - - if(contains_windows) - //add adjacent turfs to be checked for windows as well - var/turf/neighbor = locate(current.x + 1, current.y, current.z) - if(!(neighbor in frontier_set) && !(neighbor in explored_set)) - frontier_set += neighbor - neighbor = locate(current.x - 1, current.y, current.z) - if(!(neighbor in frontier_set) && !(neighbor in explored_set)) - frontier_set += neighbor - neighbor = locate(current.x, current.y + 1, current.z) - if(!(neighbor in frontier_set) && !(neighbor in explored_set)) - frontier_set += neighbor - neighbor = locate(current.x, current.y - 1, current.z) - if(!(neighbor in frontier_set) && !(neighbor in explored_set)) - frontier_set += neighbor - return result_set - -/datum/gm_action/window_break/start() - if(!chosen_window) - return - ..() - chosen_window.shatter(0) - - spawn() - for(var/obj/structure/window/current_collateral in collateral_windows) - sleep(rand(1,20)) - current_collateral.take_damage(current_collateral.health - (current_collateral.maxhealth / 5)) //set to 1/5th health - -/datum/gm_action/window_break/announce() - if(chosen_window) - command_announcement.Announce("Structural integrity of windows at [chosen_location.loc.name] is failing. Immediate repair or replacement is advised.", "Structural Alert") - -/datum/gm_action/window_break/get_weight() - return 20 * metric.count_people_in_department(DEPARTMENT_ENGINEERING) diff --git a/code/modules/gamemaster/actions/wormholes.dm b/code/modules/gamemaster/actions/wormholes.dm deleted file mode 100644 index a7650713b32..00000000000 --- a/code/modules/gamemaster/actions/wormholes.dm +++ /dev/null @@ -1,23 +0,0 @@ -/datum/gm_action/wormholes - name = "space-time anomalies" - chaotic = 70 - length = 12 MINUTES - departments = list(DEPARTMENT_EVERYONE) - severity = 1 - -/datum/gm_action/wormholes/set_up() // 1 out of 5 will be full-duration wormholes, meaning up to a minute long. - severity = pickweight(list( - 3 = 5, - 2 = 7, - 1 = 13 - )) - -/datum/gm_action/wormholes/start() - ..() - wormhole_event(length / 2, (severity / 3)) - -/datum/gm_action/wormholes/get_weight() - return 10 + max(0, -30 + (metric.count_people_in_department(DEPARTMENT_EVERYONE) * 5) + (metric.count_people_in_department(DEPARTMENT_ENGINEERING) + 10) + (metric.count_people_in_department(DEPARTMENT_MEDICAL) * 20)) - -/datum/gm_action/wormholes/end() - command_announcement.Announce("There are no more space-time anomalies detected on the station.", "Anomaly Alert") diff --git a/code/modules/gamemaster/controller.dm b/code/modules/gamemaster/controller.dm deleted file mode 100644 index 343f05842d1..00000000000 --- a/code/modules/gamemaster/controller.dm +++ /dev/null @@ -1,92 +0,0 @@ -/client/proc/show_gm_status() - set category = "Debug" - set name = "Show GM Status" - set desc = "Shows you what the GM is thinking. If only that existed in real life..." - - game_master.interact(usr) - -/datum/game_master/proc/interact(var/client/user) - if(!user) - return - - var/HTML = "Game Master AI" - - HTML += "\[Toggle Time Restrictions\] | \ - \[Toggle GM\] | \ - \[Force Event Decision\]
    " - - HTML += "Status: [pre_action_checks() ? "Ready" : "Suppressed"]

    " - - HTML += "Staleness: [staleness] \[Adjust\]
    " - HTML += "Danger: [danger] \[Adjust\]

    " - - HTML += "Actions available;
    " - for(var/datum/gm_action/action in available_actions) - if(action.enabled == FALSE) - continue - HTML += "[action.name] ([english_list(action.departments)]) (weight: [action.get_weight()]) \[Force\]
    " - - HTML += "
    " - HTML += "All living mobs activity: [metric.assess_all_living_mobs()]%
    " - HTML += "All ghost activity: [metric.assess_all_dead_mobs()]%
    " - - HTML += "
    " - HTML += "Departmental activity;
    " - for(var/department in metric.departments) - HTML += " [department] : [metric.assess_department(department)]%
    " - - HTML += "
    " - HTML += "Activity of players;
    " - for(var/mob/player in player_list) - HTML += " [player] ([player.key]) : [metric.assess_player_activity(player)]%
    " - - - - HTML +="" - user << browse(HTML, "window=log;size=400x450;border=1;can_resize=1;can_close=1;can_minimize=1") - -/datum/game_master/Topic(href, href_list) - if(..()) - return - - if(!is_admin(usr)) - message_admins("[usr] has attempted to modify the Game Master values without being an admin.") - return - - if(href_list["toggle_time_restrictions"]) - ignore_time_restrictions = !ignore_time_restrictions - message_admins("GM event time restrictions was [ignore_time_restrictions ? "dis" : "en"]abled by [usr.key].") - - if(href_list["force_choose_event"]) - start_action() - message_admins("[usr.key] forced the Game Master to choose an event immediately.") - - if(href_list["suspend"]) - suspended = !suspended - message_admins("GM was [suspended ? "dis" : "en"]abled by [usr.key].") - - if(href_list["adjust_staleness"]) - var/amount = input(usr, "How much staleness should be added or subtracted?", "Game Master") as null|num - if(amount) - adjust_staleness(amount) - message_admins("GM staleness was adjusted by [amount] by [usr.key].") - - if(href_list["adjust_danger"]) - var/amount = input(usr, "How much danger should be added or subtracted?", "Game Master") as null|num - if(amount) - adjust_danger(amount) - message_admins("GM danger was adjusted by [amount] by [usr.key].") - - interact(usr) // To refresh the UI. - -/datum/gm_action/Topic(href, href_list) - if(..()) - return - - if(!is_admin(usr)) - message_admins("[usr] has attempted to force an event without being an admin.") - return - - if(href_list["force"]) - gm.run_action(src) - message_admins("GM event [name] was forced by [usr.key].") \ No newline at end of file diff --git a/code/modules/gamemaster/defines.dm b/code/modules/gamemaster/defines.dm index 2e486ee23b2..5bc17b462c7 100644 --- a/code/modules/gamemaster/defines.dm +++ b/code/modules/gamemaster/defines.dm @@ -1 +1,3 @@ -#define EVENT_BASELINE_WEIGHT 200 \ No newline at end of file +#define EVENT_CHAOS_THRESHOLD_HIGH_IMPACT 25 +#define EVENT_CHAOS_THRESHOLD_MEDIUM_IMPACT 50 +#define EVENT_CHAOS_THRESHOLD_LOW_IMPACT 100 \ No newline at end of file diff --git a/code/modules/gamemaster/event2/event.dm b/code/modules/gamemaster/event2/event.dm new file mode 100644 index 00000000000..7c69f23c96c --- /dev/null +++ b/code/modules/gamemaster/event2/event.dm @@ -0,0 +1,230 @@ +// This object holds the code that is needed to execute an event. +// Code for judging whether doing that event is a good idea or not belongs inside its meta event object. + + +/* + +Important: DO NOT `sleep()` in any of the procs here, or the GM will get stuck. Use callbacks insead. +Also please don't use spawn(), but use callbacks instead. + +Note that there is an important distinction between an event being ended, and an event being finished. +- Ended is for when the actual event is over, regardless of whether an announcement happened or not. +- Finished is for when both the event itself is over, and it was announced. The event will stop being +processed after it is finished. + +For an event to finish, it must have done two things: +- Go through its entire cycle, of start() -> end(), and +- Have the event be announced. +If an event has ended, but the announcement didn't happen, the event will not be finished. +This allows for events that have their announcement happen after the end itself. + +*/ + +// +/datum/event2/event + var/announced = FALSE // Is set to TRUE when `announce()` is called by `process()`. + var/started = FALSE // Is set to TRUE when `start()` is called by `process()`. + var/ended = FALSE // Is set to TRUE when `end()` is called by `process()`. + var/finished = FALSE // Is set to TRUE when `ended` and `announced` are TRUE. + + // `world.time`s when this event started, and finished, for bookkeeping. + var/time_started = null + var/time_finished = null + + // If these are set, the announcement will be delayed by a random time between the lower and upper bounds. + // If the upper bound is not defined, then it will use the lower bound instead. + // Note that this is independant of the event itself, so you can have the announcement happen long after the event ended. + // This may not work if should_announce() is overrided. + var/announce_delay_lower_bound = null + var/announce_delay_upper_bound = null + + // If these are set, the event will be delayed by a random time between the lower and upper bounds. + // If the upper bound is not defined, then it will use the lower bound instead. + // This may not work if should_start() is overrided. + var/start_delay_lower_bound = null + var/start_delay_upper_bound = null + + // If these are set, the event will automatically end at a random time between the lower and upper bounds. + // If the upper bound is not defined, then it will use the lower bound instead. + // This may not work if should_end() is overrided. + var/length_lower_bound = null + var/length_upper_bound = null + + // Set automatically, don't touch. + var/time_to_start = null + var/time_to_announce = null + var/time_to_end = null + + // These are also set automatically, and are provided for events to know what RNG decided for the various durations. + var/start_delay = null + var/announce_delay = null + var/length = null + +// Returns the name of where the event is taking place. +// In the future this might be handy for off-station events. +/datum/event2/event/proc/location_name() + return station_name() + +// Returns the z-levels that are involved with the event. +// In the future this might be handy for off-station events. +/datum/event2/event/proc/get_location_z_levels() + return using_map.station_levels + +// Returns a list of empty turfs in the same area. +/datum/event2/event/proc/find_random_turfs(minimum_free_space = 5, list/specific_areas = list(), ignore_occupancy = FALSE) + var/list/area/grand_list_of_areas = find_random_areas(specific_areas) + + if(!LAZYLEN(grand_list_of_areas)) + return list() + + for(var/thing in grand_list_of_areas) + var/list/A = thing + var/list/turfs = list() + for(var/turf/T in A) + if(!T.check_density()) + turfs += T + + if(turfs.len < minimum_free_space) + continue // Not enough free space. + return turfs + + return list() + +/datum/event2/event/proc/find_random_areas(list/specific_areas = list(), ignore_occupancy = FALSE) + if(!LAZYLEN(specific_areas)) + specific_areas = global.the_station_areas.Copy() + + var/list/area/grand_list_of_areas = get_all_existing_areas_of_types(specific_areas) + . = list() + for(var/thing in shuffle(grand_list_of_areas)) + var/area/A = thing + if(A.forbid_events) + continue + if(!(A.z in get_location_z_levels())) + continue + if(!ignore_occupancy && is_area_occupied(A)) + continue // Occupied. + . += A + +// Starts the event. +/datum/event2/event/proc/execute() + time_started = world.time + + if(announce_delay_lower_bound) + announce_delay = rand(announce_delay_lower_bound, announce_delay_upper_bound ? announce_delay_upper_bound : announce_delay_lower_bound) + time_to_announce = world.time + announce_delay + + if(start_delay_lower_bound) + start_delay = rand(start_delay_lower_bound, start_delay_upper_bound ? start_delay_upper_bound : start_delay_lower_bound) + time_to_start = world.time + start_delay + + if(length_lower_bound) + var/starting_point = time_to_start ? time_to_start : world.time + length = rand(length_lower_bound, length_upper_bound ? length_upper_bound : length_lower_bound) + time_to_end = starting_point + length + + set_up() + +// Called at the very end of the event's lifecycle, or when aborted. +// Don't override this, use `end()` for cleanup instead. +/datum/event2/event/proc/finish() + finished = TRUE + time_finished = world.time + +// Called by admins wanting to stop an event immediately. +/datum/event2/event/proc/abort() + if(!announced) + announce() + if(!ended) // `end()` generally has cleanup procs, so call that. + end() + finish() + +// Called by the GM processer. +/datum/event2/event/process() + // Handle announcement track. + if(!announced && should_announce()) + announced = TRUE + announce() + + // Handle event track. + if(!started) + if(should_start()) + started = TRUE + start() + else + wait_tick() + + if(started && !ended) + if(should_end()) + ended = TRUE + end() + else + event_tick() + + // In order to be finished, the event needs to end, and be announced. + if(ended && announced) + finish() + +/datum/event2/event/Topic(href, href_list) + if(..()) + return + + if(!check_rights(R_ADMIN|R_EVENT|R_DEBUG)) + message_admins("[usr] has attempted to manipulate an event without sufficent privilages.") + return + + if(href_list["abort"]) + abort() + message_admins("Event '[type]' was aborted by [usr.key].") + + // SSgame_master.interact(usr) // To refresh the UI. // VOREStation Edit - We don't use SSgame_master yet. + +/* + * Procs to Override + */ + +// Override this for code to be ran before the event is started. +/datum/event2/event/proc/set_up() + +// Called every tick from the GM system, and determines if the announcement should happen. +// Override this for special logic on when it should be announced, e.g. after `ended` is set to TRUE, +// however be aware that the event cannot finish until this returns TRUE at some point. +/datum/event2/event/proc/should_announce() + if(!time_to_announce) + return TRUE + return time_to_announce <= world.time + +// Override this for code that alerts the crew that the event is happening in some form, e.g. a centcom announcement or some other message. +// If you want them to not know, you can just not override it. +/datum/event2/event/proc/announce() + +// Override for code that runs every few seconds, while the event is waiting for `should_start()` to return TRUE. +// Note that events that have `should_start()` return TRUE at the start will never have this proc called. +/datum/event2/event/proc/wait_tick() + +// Called every tick from the GM system, and determines if the event should offically start. +// Override this for special logic on when it should start. +/datum/event2/event/proc/should_start() + if(!time_to_start) + return TRUE + return time_to_start <= world.time + +// Override this for code to do the actual event. +/datum/event2/event/proc/start() + + +// Override for code that runs every few seconds, while the event is waiting for `should_end()` to return TRUE. +// Note that events that have `should_end()` return TRUE at the start will never have this proc called. +/datum/event2/event/proc/event_tick() + + +// Called every tick from the GM system, and determines if the event should end. +// If this returns TRUE at the very start, then the event ends instantly and `tick()` will never be called. +// Override this for special logic on when it should end, e.g. blob core has to die before event ends. +/datum/event2/event/proc/should_end() + if(!time_to_end) + return TRUE + return time_to_end <= world.time + +// Override this for code to run when the event is over, e.g. cleanup. +/datum/event2/event/proc/end() diff --git a/code/modules/gamemaster/event2/events/cargo/shipping_error.dm b/code/modules/gamemaster/event2/events/cargo/shipping_error.dm new file mode 100644 index 00000000000..eaab32cb8a5 --- /dev/null +++ b/code/modules/gamemaster/event2/events/cargo/shipping_error.dm @@ -0,0 +1,16 @@ +/datum/event2/meta/shipping_error + name = "shipping error" + departments = list(DEPARTMENT_CARGO) + chaos = -10 // A helpful event. + reusable = TRUE + event_type = /datum/event2/event/shipping_error + +/datum/event2/meta/shipping_error/get_weight() + return (metric.count_people_with_job(/datum/job/cargo_tech) + metric.count_people_with_job(/datum/job/qm)) * 30 + +/datum/event2/event/shipping_error/start() + var/datum/supply_order/O = new /datum/supply_order() + O.ordernum = SSsupply.ordernum + O.object = SSsupply.supply_pack[pick(SSsupply.supply_pack)] + O.ordered_by = random_name(pick(MALE,FEMALE), species = "Human") + SSsupply.shoppinglist += O diff --git a/code/modules/gamemaster/event2/events/command/manifest_malfunction.dm b/code/modules/gamemaster/event2/events/command/manifest_malfunction.dm new file mode 100644 index 00000000000..0a19ec7a655 --- /dev/null +++ b/code/modules/gamemaster/event2/events/command/manifest_malfunction.dm @@ -0,0 +1,61 @@ +/datum/event2/meta/manifest_malfunction + name = "manifest_malfunction" + departments = list(DEPARTMENT_COMMAND, DEPARTMENT_SECURITY, DEPARTMENT_EVERYONE) + chaos = 10 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_LOW_IMPACT + event_type = /datum/event2/event/manifest_malfunction + +/datum/event2/meta/manifest_malfunction/get_weight() + var/security = metric.count_people_in_department(DEPARTMENT_SECURITY) + + if(!security || !data_core) + return 0 + + var/command = metric.count_people_with_job(/datum/job/hop) + metric.count_people_with_job(/datum/job/captain) + var/synths = metric.count_people_in_department(DEPARTMENT_SYNTHETIC) + var/everyone = metric.count_people_in_department(DEPARTMENT_EVERYONE) - (synths + security + command) // So they don't get counted twice. + + return (security * 10) + (synths * 20) + (command * 20) + (everyone * 5) + + + +/datum/event2/event/manifest_malfunction + announce_delay_lower_bound = 5 MINUTES + announce_delay_upper_bound = 10 MINUTES + var/records_to_delete = 2 + var/record_class_to_delete = null + +/datum/event2/event/manifest_malfunction/set_up() + record_class_to_delete = pickweight(list("medical" = 10, "security" = 30)) + +/datum/event2/event/manifest_malfunction/announce() + if(prob(30)) + var/message = null + var/author = null + var/rng = rand(1, 2) + switch(rng) + if(1) + author = "Data Breach Alert" + message = "The [record_class_to_delete] record database has suffered from an attack by one or more hackers. \ + They appear to have wiped several records, before disconnecting." + if(2) + author = "Downtime Alert" + message = "The [record_class_to_delete] record database server has suffered a hardware failure, and is no longer functional. \ + A temporary replacement server has been activated, containing recovered data from the main server. \ + A few records became corrupted, and could not be transferred." + command_announcement.Announce(message, author) + +/datum/event2/event/manifest_malfunction/start() + for(var/i = 1 to records_to_delete) + var/datum/data/record/R + + switch(record_class_to_delete) + if("security") + R = safepick(data_core.security) + + if("medical") + R = safepick(data_core.medical) + + if(R) + log_debug("Manifest malfunction event is now deleting [R.fields["name"]]'s [record_class_to_delete] record.") + qdel(R) diff --git a/code/modules/gamemaster/event2/events/command/money_hacker.dm b/code/modules/gamemaster/event2/events/command/money_hacker.dm new file mode 100644 index 00000000000..a1dbd1e18b3 --- /dev/null +++ b/code/modules/gamemaster/event2/events/command/money_hacker.dm @@ -0,0 +1,110 @@ +/datum/event2/meta/money_hacker + name = "money hacker" + departments = list(DEPARTMENT_COMMAND) + chaos = 10 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_LOW_IMPACT + event_type = /datum/event2/event/money_hacker + +/datum/event2/meta/money_hacker/get_weight() + var/command = metric.count_people_with_job(/datum/job/hop) + metric.count_people_with_job(/datum/job/captain) + + if(!command) + return 0 + return 30 + (command * 20) + (all_money_accounts.len * 5) + + + +/datum/event2/event/money_hacker + length_lower_bound = 8 MINUTES + length_upper_bound = 12 MINUTES + var/datum/money_account/targeted_account = null + +/datum/event2/event/money_hacker/set_up() + if(LAZYLEN(all_money_accounts)) + targeted_account = pick(all_money_accounts) + + if(!targeted_account) + log_debug("Money hacker event could not find an account to hack. Aborting.") + abort() + return + +/datum/event2/event/money_hacker/announce() + var/message = "A brute force hack has been detected (in progress since [stationtime2text()]). The target of the attack is: Financial account #[targeted_account.account_number], \ + without intervention this attack will succeed in approximately 10 minutes. Required intervention: temporary suspension of affected accounts until the attack has ceased. \ + Notifications will be sent as updates occur." + var/my_department = "[location_name()] Firewall Subroutines" + + for(var/obj/machinery/message_server/MS in machines) + if(!MS.active) + continue + MS.send_rc_message("Head of Personnel's Desk", my_department, "[message]
    ", "", "", 2) + + // Nobody reads the requests consoles so lets use the radio as well. + global_announcer.autosay(message, my_department, DEPARTMENT_COMMAND) + +/datum/event2/event/money_hacker/end() + var/message = null + if(targeted_account && !targeted_account.suspended) // Hacker wins. + message = "The hack attempt has succeeded." + hack_account(targeted_account) + log_debug("Money hacker event managed to hack the targeted account.") + + else // Crew wins. + message = "The attack has ceased, the affected accounts can now be brought online." + log_debug("Money hacker event failed to hack the targeted account due to intervention by the crew.") + + var/my_department = "[location_name()] Firewall Subroutines" + + for(var/obj/machinery/message_server/MS in machines) + if(!MS.active) continue + MS.send_rc_message("Head of Personnel's Desk", my_department, message, "", "", 2) + + global_announcer.autosay(message, my_department, DEPARTMENT_COMMAND) + +/datum/event2/event/money_hacker/proc/hack_account(datum/money_account/A) + // Subtract the money. + var/lost = A.money * 0.8 + (rand(2,4) - 2) / 10 + A.money -= lost + + // Create a taunting log entry. + var/datum/transaction/T = new() + T.target_name = pick(list( + "", + "yo brotha from anotha motha", + "el Presidente", + "chieF smackDowN", + "Nobody" + )) + + T.purpose = pick(list( + "Ne$ ---ount fu%ds init*&lisat@*n", + "PAY BACK YOUR MUM", + "Funds withdrawal", + "pWnAgE", + "l33t hax", + "liberationez", + "Hit", + "Nothing" + )) + + T.amount = pick(list( + "", + "([rand(0,99999)])", + "alla money", + "9001$", + "HOLLA HOLLA GET DOLLA", + "([lost])", + "69,420t" + )) + + var/date1 = "1 January 1970" // Unix epoch. + var/date2 = "[num2text(rand(1,31))] [pick("January","February","March","April","May","June","July","August","September","October","November","December")], [rand(1000,3000)]" + T.date = pick("", current_date_string, date1, date2,"Nowhen") + + var/time1 = rand(0, 99999999) + var/time2 = "[round(time1 / 36000)+12]:[(time1 / 600 % 60) < 10 ? add_zero(time1 / 600 % 60, 1) : time1 / 600 % 60]" + T.time = pick("", stationtime2text(), time2, "Never") + + T.source_terminal = pick("","[pick("Biesel","New Gibson")] GalaxyNet Terminal #[rand(111,999)]","your mums place","nantrasen high CommanD","Angessa's Pearl","Nowhere") + + A.transaction_log.Add(T) diff --git a/code/modules/gamemaster/event2/events/command/raise_funds.dm b/code/modules/gamemaster/event2/events/command/raise_funds.dm new file mode 100644 index 00000000000..31e88163501 --- /dev/null +++ b/code/modules/gamemaster/event2/events/command/raise_funds.dm @@ -0,0 +1,96 @@ +/datum/event2/meta/raise_funds + name = "local funding drive" + enabled = FALSE // There isn't really any suitable way for the crew to generate thalers right now, if that gets fixed feel free to turn this event on. + departments = list(DEPARTMENT_COMMAND, DEPARTMENT_CARGO) + chaotic_threshold = EVENT_CHAOS_THRESHOLD_LOW_IMPACT + event_type = /datum/event2/event/raise_funds + +/datum/event2/meta/raise_funds/get_weight() + var/command = metric.count_people_in_department(DEPARTMENT_COMMAND) + if(!command) // Need someone to read the centcom message. + return 0 + + var/cargo = metric.count_people_in_department(DEPARTMENT_CARGO) + return (command * 20) + (cargo * 20) + + + +/datum/event2/event/raise_funds + length_lower_bound = 30 MINUTES + length_upper_bound = 45 MINUTES + var/money_at_start = 0 + +/datum/event2/event/raise_funds/announce() + var/message = "Due to [pick("recent", "unfortunate", "possible future")] budget \ + [pick("changes", "issues")], in-system stations are now advised to increase funding income." + + send_command_report("Budget Advisement", message) + +/datum/event2/event/raise_funds/start() + // Note that the event remembers the amount of money when it started. If an issue develops where people try to scam centcom by + // taking out loads of money before the event, then depositing it back in after the event fires, feel free to make this check for + // roundstart money instead. + money_at_start = count_money() + log_debug("Funding Drive event logged a sum of [money_at_start] thalers in all station accounts at the start of the event.") + +/datum/event2/event/raise_funds/end() + var/money_at_end = count_money() + log_debug("Funding Drive event logged a sum of [money_at_end] thalers in all station accounts at the end of the event, compared \ + to [money_at_start] thalers. A difference of [money_at_end / money_at_start] was calculated.") + + // A number above 1 indicates money was made, while below 1 does the opposite. + var/budget_shift = money_at_end / money_at_start + + // Centcom will say different things based on if they gained or lost money. + var/message = null + switch(budget_shift) + if(0 to 0.02) // Abyssmal response. + message = "We are very interested in learning where [round(money_at_start, 1000)] thaler went in \ + just half an hour. We highly recommend rectifying this issue before the end of the shift, otherwise a \ + discussion regarding your future employment prospects will occur.

    \ + Your facility's current balance of requisition tokens has been revoked." + SSsupply.points = 0 + log_debug("Funding Drive event ended with an abyssmal response, and the loss of all cargo points.") + + if(0.02 to 0.98) // Bad response. + message = "We're very disappointed that \the [location_name()] has ran a deficit since our request. \ + As such, we will be taking away some requisition tokens to cover the cost of operating your facility." + var/points_lost = round(SSsupply.points * rand(0.5, 0.8)) + SSsupply.points -= points_lost + log_debug("Funding Drive event ended with a bad response, and [points_lost] cargo points was taken away.") + + if(0.98 to 1.02) // Neutral response. + message = "It is unfortunate that \the [location_name()]'s finances remain at a standstill, however \ + that is still preferred over having a decicit. We hope that in the future, your facility will be able to be \ + more profitable." + log_debug("Funding Drive event ended with a neutral response.") + + if(1.02 to INFINITY) // Good response. + message = "We appreciate the efforts made by \the [location_name()] to run at a surplus. \ + Together, along with the other facilities present in the [using_map.starsys_name] system, \ + the company is expected to meet the quota.

    \ + We will allocate additional requisition tokens for the cargo department as a reward." + + // If cargo is ever made to use station funds instead of cargo points, then a new kind of reward will be needed. + // Otherwise it would be weird for centcom to go 'thanks for not spending money, your reward is money to spend'. + var/point_reward = rand(100, 200) + SSsupply.points += point_reward + log_debug("Funding Drive event ended with a good response and a bonus of [point_reward] cargo points.") + + send_command_report("Budget Followup", message) + + + +// Returns the sum of the station account and all the departmental accounts. +/datum/event2/event/raise_funds/proc/count_money() + . = 0 + . += station_account.money + for(var/i = 1 to SSjob.department_datums.len) + var/datum/money_account/account = LAZYACCESS(department_accounts, SSjob.department_datums[i]) + if(istype(account)) + . += account.money + +/datum/event2/event/raise_funds/proc/send_command_report(title, message) + post_comm_message(title, message) + to_world(span("danger", "New [using_map.company_name] Update available at all communication consoles.")) + SEND_SOUND(world, 'sound/AI/commandreport.ogg') diff --git a/code/modules/gamemaster/event2/events/engineering/airlock_failure.dm b/code/modules/gamemaster/event2/events/engineering/airlock_failure.dm new file mode 100644 index 00000000000..69b596d7996 --- /dev/null +++ b/code/modules/gamemaster/event2/events/engineering/airlock_failure.dm @@ -0,0 +1,100 @@ +/datum/event2/meta/airlock_failure + event_class = "airlock failure" + departments = list(DEPARTMENT_ENGINEERING, DEPARTMENT_MEDICAL) + chaos = 15 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_MEDIUM_IMPACT + event_type = /datum/event2/event/airlock_failure + +/datum/event2/meta/airlock_failure/emag + name = "airlock failure - emag" + event_type = /datum/event2/event/airlock_failure/emag + +/datum/event2/meta/airlock_failure/door_crush + name = "airlock failure - crushing" + event_type = /datum/event2/event/airlock_failure/door_crush + +/datum/event2/meta/airlock_failure/shock + name = "airlock failure - shock" + chaos = 30 + event_type = /datum/event2/event/airlock_failure/shock + + +/datum/event2/meta/airlock_failure/get_weight() + var/engineering = metric.count_people_in_department(DEPARTMENT_ENGINEERING) + + // Synths are good both for fixing the doors and getting blamed for the doors zapping people. + var/synths = metric.count_people_in_department(DEPARTMENT_SYNTHETIC) + if(!engineering && !synths) // Nobody's around to fix the door. + return 0 + + // Medical might be needed for some of the more violent airlock failures. + var/medical = metric.count_people_in_department(DEPARTMENT_MEDICAL) + + return (engineering * 20) + (medical * 20) + (synths * 20) + + + +/datum/event2/event/airlock_failure + announce_delay_lower_bound = 20 SECONDS + announce_delay_upper_bound = 40 SECONDS + var/announce_odds = 0 + var/doors_to_break = 1 + var/list/affected_areas = list() + +/datum/event2/event/airlock_failure/emag + announce_odds = 10 // To make people wonder if the emagged door was from a baddie or from this event. + doors_to_break = 2 // Replacing emagged doors really sucks for engineering so don't overdo it. + +/datum/event2/event/airlock_failure/door_crush + announce_odds = 30 + doors_to_break = 5 + +/datum/event2/event/airlock_failure/shock + announce_odds = 70 + +/datum/event2/event/airlock_failure/start() + var/list/areas = find_random_areas() + if(!LAZYLEN(areas)) + log_debug("Airlock Failure event could not find any areas. Aborting.") + abort() + return + + while(areas.len) + var/area/area = pick(areas) + areas -= area + + for(var/obj/machinery/door/airlock/door in area.contents) + if(can_break_door(door)) + addtimer(CALLBACK(src, .proc/break_door, door), 1) // Emagging proc is actually a blocking proc and that's bad for the ticker. + door.visible_message(span("danger", "\The [door]'s panel sparks!")) + playsound(door, "sparks", 50, 1) + log_debug("Airlock Failure event has broken \the [door] airlock in [area].") + affected_areas |= area + doors_to_break-- + + if(doors_to_break <= 0) + return + +/datum/event2/event/airlock_failure/announce() + if(prob(announce_odds)) + command_announcement.Announce("An electrical issue has been detected in the airlock grid at [english_list(affected_areas)]. \ + Some airlocks may require servicing by a qualified technician.", "Electrical Alert") + + +/datum/event2/event/airlock_failure/proc/can_break_door(obj/machinery/door/airlock/door) + if(istype(door, /obj/machinery/door/airlock/lift)) + return FALSE + return door.arePowerSystemsOn() + +// Override this for door busting. +/datum/event2/event/airlock_failure/proc/break_door(obj/machinery/door/airlock/door) + +/datum/event2/event/airlock_failure/emag/break_door(obj/machinery/door/airlock/door) + door.emag_act(1) + +/datum/event2/event/airlock_failure/door_crush/break_door(obj/machinery/door/airlock/door) + door.normalspeed = FALSE + door.safe = FALSE + +/datum/event2/event/airlock_failure/shock/break_door(obj/machinery/door/airlock/door) + door.electrify(-1) diff --git a/code/modules/gamemaster/event2/events/engineering/blob.dm b/code/modules/gamemaster/event2/events/engineering/blob.dm new file mode 100644 index 00000000000..3ace8f0894e --- /dev/null +++ b/code/modules/gamemaster/event2/events/engineering/blob.dm @@ -0,0 +1,163 @@ +/datum/event2/meta/blob + name = "blob" + departments = list(DEPARTMENT_ENGINEERING, DEPARTMENT_SECURITY, DEPARTMENT_MEDICAL) + chaos = 30 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_HIGH_IMPACT + event_class = "blob" // This makes it so there is no potential for multiple blob events of different types happening in the same round. + event_type = /datum/event2/event/blob + // In the distant future, if a mechanical skill system were to come into being, these vars could be replaced with skill checks so off duty people could count. + var/required_fighters = 2 // Fighters refers to engineering OR security. + var/required_support = 1 // Support refers to doctors AND roboticists, depending on fighter composition. + +/datum/event2/meta/blob/hard + name = "harder blob" + chaos = 40 + event_type = /datum/event2/event/blob/hard_blob + required_fighters = 3 + +/datum/event2/meta/blob/multi_blob + name = "multi blob" + chaos = 60 + event_type = /datum/event2/event/blob/multi_blob + required_fighters = 4 + required_support = 2 + +// For bussing only. +/datum/event2/meta/blob/omni_blob + name = "omni blob" + chaos = 200 + event_type = /datum/event2/event/blob/omni_blob + enabled = FALSE + +/datum/event2/meta/blob/get_weight() + // Count the 'fighters'. + var/list/engineers = metric.get_people_in_department(DEPARTMENT_ENGINEERING) + var/list/security = metric.get_people_in_department(DEPARTMENT_SECURITY) + + if(engineers.len + security.len < required_fighters) + return 0 + + // Now count the 'support'. + var/list/medical = metric.get_people_in_department(DEPARTMENT_MEDICAL) + var/need_medical = FALSE + + var/list/robotics = metric.get_people_with_job(/datum/job/roboticist) + var/need_robotics = FALSE + + // Determine what kind of support might be needed. + for(var/mob/living/L in engineers|security) + if(L.isSynthetic()) + need_robotics = TRUE + else + need_medical = TRUE + + // Medical is more important than robotics, since robits tend to not suffer slow deaths if there isn't a roboticist. + if(medical.len < required_support && need_medical) + return 0 + + // Engineers can sometimes fill in as robotics. This is done in the interest of the event having a chance of not being super rare. + // In the uncertain future, a mechanical skill system check could replace this check here. + if(robotics.len + engineers.len < required_support && need_robotics) + return 0 + + var/fighter_weight = (engineers.len + security.len) * 20 + var/support_weight = (medical.len + robotics.len) * 10 // Not counting engineers as support so they don't cause 30 weight each. + var/chaos_weight = chaos / 2 // Chaos is added as a weight in order to make more chaotic variants be preferred if they are allowed to be picked. + + return fighter_weight + support_weight + chaos_weight + + + +/datum/event2/event/blob + announce_delay_lower_bound = 1 MINUTE + announce_delay_upper_bound = 5 MINUTES + // This could be made into a GLOB accessible list for reuse if needed. + var/list/area/excluded = list( + /area/submap, + /area/shuttle, + /area/crew_quarters, + /area/holodeck, + /area/engineering/engine_room + ) + var/list/open_turfs = list() + var/spawn_blob_type = /obj/structure/blob/core/random_medium + var/number_of_blobs = 1 + var/list/blobs = list() // A list containing weakrefs to blob cores created. Weakrefs mean this event won't interfere with qdel. + +/datum/event2/event/blob/hard_blob + spawn_blob_type = /obj/structure/blob/core/random_hard + +/datum/event2/event/blob/multi_blob + spawn_blob_type = /obj/structure/blob/core/random_hard // Lethargic blobs are boring. + number_of_blobs = 2 + +// For adminbus only. +/datum/event2/event/blob/omni_blob + number_of_blobs = 16 // Someday maybe we can get this to specifically spawn every blob. + +/datum/event2/event/blob/set_up() + open_turfs = find_random_turfs(5 + number_of_blobs) + + if(!open_turfs.len) + log_debug("Blob infestation event: Giving up after failure to find blob spots.") + abort() + +/datum/event2/event/blob/start() + for(var/i = 1 to number_of_blobs) + var/turf/T = pick(open_turfs) + var/obj/structure/blob/core/new_blob = new spawn_blob_type(T) + blobs += weakref(new_blob) + open_turfs -= T // So we can't put two cores on the same tile if doing multiblob. + log_debug("Spawned [new_blob.overmind.blob_type.name] blob at [get_area(new_blob)].") + +/datum/event2/event/blob/should_end() + for(var/WR in blobs) + var/weakref/weakref = WR + if(weakref.resolve()) // If the weakref is resolvable, that means the blob hasn't been deleted yet. + return FALSE + return TRUE // Only end if all blobs die. + +// Normally this does nothing, but is useful if aborted by an admin. +/datum/event2/event/blob/end() + for(var/WR in blobs) + var/weakref/weakref = WR + var/obj/structure/blob/core/B = weakref.resolve() + if(istype(B)) + qdel(B) + +/datum/event2/event/blob/announce() + if(!ended) // Don't announce if the blobs die early. + var/danger_level = 0 + var/list/blob_type_names = list() + var/multiblob = FALSE + for(var/WR in blobs) + var/weakref/weakref = WR + var/obj/structure/blob/core/B = weakref.resolve() + if(!istype(B)) + continue + var/datum/blob_type/blob_type = B.overmind.blob_type + + blob_type_names += blob_type.name + if(danger_level > blob_type.difficulty) // The highest difficulty is used, if multiple blobs are present. + danger_level = blob_type.difficulty + + if(blob_type_names.len > 1) // More than one blob is harder. + danger_level += blob_type_names.len + multiblob = TRUE + + var/list/lines = list() + lines += "Confirmed outbreak of level [7 + danger_level] biohazard[multiblob ? "s": ""] \ + aboard [location_name()]. All personnel must contain the outbreak." + + if(danger_level >= BLOB_DIFFICULTY_MEDIUM) // Tell them what kind of blob it is if it's tough. + lines += "The biohazard[multiblob ? "s have": " has"] been identified as [english_list(blob_type_names)]." + + if(danger_level >= BLOB_DIFFICULTY_HARD) // If it's really hard then tell them where it is so the response occurs faster. + var/turf/T = open_turfs[1] + var/area/A = T.loc + lines += "[multiblob ? "It is": "They are"] suspected to have originated from \the [A]." + + if(danger_level >= BLOB_DIFFICULTY_SUPERHARD) + lines += "Extreme caution is advised." + + command_announcement.Announce(lines.Join("\n"), "Biohazard Alert", new_sound = 'sound/AI/outbreak7.ogg') diff --git a/code/modules/gamemaster/event2/events/engineering/brand_intelligence.dm b/code/modules/gamemaster/event2/events/engineering/brand_intelligence.dm new file mode 100644 index 00000000000..bf1a8dfed6e --- /dev/null +++ b/code/modules/gamemaster/event2/events/engineering/brand_intelligence.dm @@ -0,0 +1,90 @@ +/datum/event2/meta/brand_intelligence + name = "vending machine malware" + departments = list(DEPARTMENT_EVERYONE, DEPARTMENT_EVERYONE) + chaos = 10 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_LOW_IMPACT + event_type = /datum/event2/event/brand_intelligence + +/datum/event2/meta/brand_intelligence/get_weight() + return 10 + (metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 20) + + + +/datum/event2/event/brand_intelligence + var/malware_spread_cooldown = 30 SECONDS + + var/list/vending_machines = list() // List of venders that can potentially be infected. + var/list/infected_vending_machines = list() // List of venders that have been infected. + var/obj/machinery/vending/vender_zero = null // The first vending machine infected. If that one gets fixed, all other infected machines will be cured. + var/last_malware_spread_time = null + +/datum/event2/event/brand_intelligence/set_up() + for(var/obj/machinery/vending/V in machines) + if(!(V.z in using_map.station_levels)) + continue + vending_machines += V + + if(!vending_machines.len) + log_debug("Could not find any vending machines on station Z levels. Aborting.") + abort() + return + + vender_zero = pick(vending_machines) + +/datum/event2/event/brand_intelligence/announce() + if(prob(90)) + command_announcement.Announce("An ongoing mass upload of malware for venders has been detected onboard \the [location_name()], \ + which appears to transmit to nearby vendors. The original infected machine is believed to be \a [vender_zero].", "Vender Service Alert") + +/datum/event2/event/brand_intelligence/start() + infect_vender(vender_zero) + +/datum/event2/event/brand_intelligence/event_tick() + if(last_malware_spread_time + malware_spread_cooldown > world.time) + return // Still on cooldown. + last_malware_spread_time = world.time + + if(vending_machines.len) + var/next_victim = pick(vending_machines) + infect_vender(next_victim) + + // Every time Vender Zero infects, it says something. + vender_zero.speak(pick("Try our aggressive new marketing strategies!", \ + "You should buy products to feed your lifestyle obsession!", \ + "Consume!", \ + "Your money can buy happiness!", \ + "Engage direct marketing!", \ + "Advertising is legalized lying! But don't let that put you off our great deals!", \ + "You don't want to buy anything? Yeah, well I didn't want to buy your mom either.")) + + +/datum/event2/event/brand_intelligence/should_end() + if(!vending_machines.len) + return TRUE + if(!can_propagate(vender_zero)) + return TRUE + return FALSE + +/datum/event2/event/brand_intelligence/end() + if(can_propagate(vender_zero)) // The crew failed and all the machines are infected! + return + // Otherwise Vender Zero was taken out in some form. + if(vender_zero) + vender_zero.visible_message(span("notice", "\The [vender_zero]'s network activity light flickers wildly \ + for a few seconds as a small screen reads: 'Rolling out firmware reset to networked machines'.")) + for(var/obj/machinery/vending/vender in infected_vending_machines) + cure_vender(vender) + +/datum/event2/event/brand_intelligence/proc/infect_vender(obj/machinery/vending/V) + vending_machines -= V + infected_vending_machines += V + V.shut_up = FALSE + V.shoot_inventory = TRUE + +/datum/event2/event/brand_intelligence/proc/cure_vender(obj/machinery/vending/V) + infected_vending_machines -= V + V.shut_up = TRUE + V.shoot_inventory = FALSE + +/datum/event2/event/brand_intelligence/proc/can_propagate(obj/machinery/vending/V) + return V && V.shut_up == FALSE diff --git a/code/modules/gamemaster/event2/events/engineering/camera_damage.dm b/code/modules/gamemaster/event2/events/engineering/camera_damage.dm new file mode 100644 index 00000000000..c24fbb06f35 --- /dev/null +++ b/code/modules/gamemaster/event2/events/engineering/camera_damage.dm @@ -0,0 +1,41 @@ +/datum/event2/meta/camera_damage + name = "random camera damage" + departments = list(DEPARTMENT_SYNTHETIC, DEPARTMENT_ENGINEERING) + chaos = 5 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_LOW_IMPACT + reusable = TRUE + event_type = /datum/event2/event/camera_damage + +/datum/event2/meta/camera_damage/get_weight() + return 30 + (metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 20) + (metric.count_people_in_department(DEPARTMENT_SYNTHETIC) * 40) + +/datum/event2/event/camera_damage + var/camera_range = 7 + +/datum/event2/event/camera_damage/start() + var/obj/machinery/camera/C = acquire_random_camera() + if(!C) + return + + for(var/obj/machinery/camera/cam in range(camera_range, C)) + if(is_valid_camera(cam)) + cam.wires.UpdateCut(CAMERA_WIRE_POWER, 0) + if(prob(25)) + cam.wires.UpdateCut(CAMERA_WIRE_ALARM, 0) + +/datum/event2/event/camera_damage/proc/acquire_random_camera(var/remaining_attempts = 5) + if(!cameranet.cameras.len) + return + if(!remaining_attempts) + return + + var/obj/machinery/camera/C = pick(cameranet.cameras) + if(is_valid_camera(C)) + return C + // It is very important to use --var and not var-- for recursive calls, as var-- will cause an infinite loop. + return acquire_random_camera(--remaining_attempts) + +/datum/event2/event/camera_damage/proc/is_valid_camera(var/obj/machinery/camera/C) + // Only return a functional camera, not installed in a silicon/hardsuit/circuit/etc, and that exists somewhere players have access + var/turf/T = get_turf(C) + return T && C?.can_use() && istype(C.loc, /turf) && (T.z in using_map.player_levels) \ No newline at end of file diff --git a/code/modules/gamemaster/actions/canister_leak.dm b/code/modules/gamemaster/event2/events/engineering/canister_leak.dm similarity index 69% rename from code/modules/gamemaster/actions/canister_leak.dm rename to code/modules/gamemaster/event2/events/engineering/canister_leak.dm index 670b65c9fce..a48823151c6 100644 --- a/code/modules/gamemaster/actions/canister_leak.dm +++ b/code/modules/gamemaster/event2/events/engineering/canister_leak.dm @@ -1,24 +1,26 @@ -// -// This event chooses a random canister on player levels and breaks it, releasing its contents! -// - -/datum/gm_action/canister_leak - name = "Canister Leak" - departments = list(DEPARTMENT_ENGINEERING) - chaotic = 20 - -/datum/gm_action/canister_leak/get_weight() - return metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 30 - -/datum/gm_action/canister_leak/start() - ..() - // List of all non-destroyed canisters on station levels - var/list/all_canisters = list() - for(var/obj/machinery/portable_atmospherics/canister/C in machines) - if(!C.destroyed && (C.z in using_map.station_levels) && C.air_contents.total_moles >= MOLES_CELLSTANDARD) - all_canisters += C - var/obj/machinery/portable_atmospherics/canister/C = pick(all_canisters) - log_debug("canister_leak event: Canister [C] ([C.x],[C.y],[C.z]) destroyed.") - C.health = 0 - C.healthcheck() - return +// +// This event chooses a random canister on player levels and breaks it, releasing its contents! +// + +/datum/event2/meta/canister_leak + name = "canister leak" + departments = list(DEPARTMENT_ENGINEERING) + chaos = 10 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_LOW_IMPACT + reusable = TRUE + event_type = /datum/event2/event/canister_leak + +/datum/event2/meta/canister_leak/get_weight() + return metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 30 + +/datum/event2/event/canister_leak/start() + // List of all non-destroyed canisters on station levels + var/list/all_canisters = list() + for(var/obj/machinery/portable_atmospherics/canister/C in machines) + if(!C.destroyed && (C.z in using_map.station_levels) && C.air_contents.total_moles >= MOLES_CELLSTANDARD) + all_canisters += C + var/obj/machinery/portable_atmospherics/canister/C = pick(all_canisters) + log_debug("canister_leak event: Canister [C] ([C.x],[C.y],[C.z]) destroyed.") + C.health = 0 + C.healthcheck() + diff --git a/code/modules/gamemaster/actions/carp_migration_vr.dm b/code/modules/gamemaster/event2/events/engineering/carp_migration_vr.dm similarity index 100% rename from code/modules/gamemaster/actions/carp_migration_vr.dm rename to code/modules/gamemaster/event2/events/engineering/carp_migration_vr.dm diff --git a/code/modules/gamemaster/event2/events/engineering/dust.dm b/code/modules/gamemaster/event2/events/engineering/dust.dm new file mode 100644 index 00000000000..1a26118fbc6 --- /dev/null +++ b/code/modules/gamemaster/event2/events/engineering/dust.dm @@ -0,0 +1,19 @@ +/datum/event2/meta/dust + name = "dust" + departments = list(DEPARTMENT_ENGINEERING) + chaos = 10 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_LOW_IMPACT + reusable = TRUE + event_type = /datum/event2/event/dust + +/datum/event2/meta/dust/get_weight() + return metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 20 + + + +/datum/event2/event/dust/announce() + if(prob(33)) + command_announcement.Announce("Dust has been detected on a collision course with \the [location_name()].") + +/datum/event2/event/dust/start() + dust_swarm("norm") diff --git a/code/modules/gamemaster/event2/events/engineering/gas_leak.dm b/code/modules/gamemaster/event2/events/engineering/gas_leak.dm new file mode 100644 index 00000000000..fb8dc41f861 --- /dev/null +++ b/code/modules/gamemaster/event2/events/engineering/gas_leak.dm @@ -0,0 +1,47 @@ +/datum/event2/meta/gas_leak + name = "gas leak" + departments = list(DEPARTMENT_ENGINEERING, DEPARTMENT_SYNTHETIC) + chaos = 10 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_LOW_IMPACT + reusable = TRUE + event_type = /datum/event2/event/gas_leak + +/datum/event2/meta/gas_leak/get_weight() + // Synthetics are counted in higher value because they can wirelessly connect to alarms. + var/engineering_factor = metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 10 + var/synthetic_factor = metric.count_people_in_department(DEPARTMENT_SYNTHETIC) * 30 + return (15 + engineering_factor + synthetic_factor) / (times_ran + 1) + + + +/datum/event2/event/gas_leak + var/potential_gas_choices = list("carbon_dioxide", "sleeping_agent", "phoron", "volatile_fuel") + var/chosen_gas = null + var/turf/chosen_turf = null + +/datum/event2/event/gas_leak/set_up() + chosen_gas = pick(potential_gas_choices) + + var/list/turfs = find_random_turfs() + if(!turfs.len) + log_debug("Gas Leak event failed to find any available turfs to leak into. Aborting.") + abort() + return + chosen_turf = pick(turfs) + +/datum/event2/event/gas_leak/announce() + if(chosen_turf) + command_announcement.Announce("Warning, hazardous [lowertext(gas_data.name[chosen_gas])] gas leak detected in \the [chosen_turf.loc], evacuate the area.", "Hazard Alert") + +/datum/event2/event/gas_leak/start() + // Okay, time to actually put the gas in the room! + // TODO - Would be nice to break a waste pipe perhaps? + // TODO - Maybe having it released from a single point and thus causing airflow to blow stuff around + + // Fow now just add a bunch of it to the air + + var/datum/gas_mixture/air_contents = new + air_contents.temperature = T20C + rand(-50, 50) + air_contents.gas[chosen_gas] = 10 * MOLES_CELLSTANDARD + chosen_turf.assume_air(air_contents) + playsound(chosen_turf, 'sound/effects/smoke.ogg', 75, 1) \ No newline at end of file diff --git a/code/modules/gamemaster/event2/events/engineering/grid_check.dm b/code/modules/gamemaster/event2/events/engineering/grid_check.dm new file mode 100644 index 00000000000..8b081f29e2a --- /dev/null +++ b/code/modules/gamemaster/event2/events/engineering/grid_check.dm @@ -0,0 +1,52 @@ +// New grid check event: +// Very similar to the old one, power goes out in most of the station, however the new feature is the ability for engineering to +// get power back on sooner, if they are able to reach a special machine and initiate a manual reboot. If no one is able to do so, +// it will reboot itself after a few minutes, just like the old one. Bad things happen if there is no grid checker machine protecting +// the powernet when this event fires. + +/datum/event2/meta/grid_check + name = "grid check" + departments = list(DEPARTMENT_ENGINEERING, DEPARTMENT_EVERYONE) + chaos = 10 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_LOW_IMPACT + reusable = TRUE + event_type = /datum/event2/event/grid_check + +// Having the turbines be way over their rated limit makes grid checks more likely. +/datum/event2/meta/grid_check/proc/get_overpower() + var/highest_overpower = 0 + for(var/T in GLOB.all_turbines) + var/obj/machinery/power/generator/turbine = T + var/overpower = max((turbine.effective_gen / turbine.max_power) - 1, 0) + if(overpower > highest_overpower) + highest_overpower = overpower + return highest_overpower + +/datum/event2/meta/grid_check/get_weight() + var/population_factor = metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 10 + var/overpower_factor = 50 * get_overpower() // Will be 0 if not overloaded at all, and 50 if turbines are outputting twice as much as rated. + return (20 + population_factor + overpower_factor) / (times_ran + 1) + + + +/datum/event2/event/grid_check + var/obj/machinery/power/generator/engine // The turbine that will send a power spike. + +/datum/event2/event/grid_check/set_up() + // Find the turbine being pushed the most. + var/obj/machinery/power/generator/most_stressed_turbine = null + for(var/T in GLOB.all_turbines) + var/obj/machinery/power/generator/turbine = T + if(!most_stressed_turbine) + most_stressed_turbine = turbine + else if(turbine.effective_gen > most_stressed_turbine.effective_gen) + most_stressed_turbine = turbine + engine = most_stressed_turbine + +/datum/event2/event/grid_check/start() + // This sets off a chain of events that lead to the actual grid check (or perhaps worse). + // First, the Supermatter engine makes a power spike. + if(engine) + engine.power_spike() + // After that, the engine checks if a grid checker exists on the same powernet, and if so, it triggers a blackout. + // If not, lots of stuff breaks. See code/modules/power/generator.dm for that piece of code. diff --git a/code/modules/gamemaster/event2/events/engineering/meteor_defense.dm b/code/modules/gamemaster/event2/events/engineering/meteor_defense.dm new file mode 100644 index 00000000000..378c6b42fea --- /dev/null +++ b/code/modules/gamemaster/event2/events/engineering/meteor_defense.dm @@ -0,0 +1,83 @@ +// This event gives the station an advance warning about meteors, so that they can prepare in various ways. + +/datum/event2/meta/meteor_defense + name = "meteor defense" + departments = list(DEPARTMENT_ENGINEERING, DEPARTMENT_CARGO) + chaos = 50 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_HIGH_IMPACT + event_class = "meteor defense" + event_type = /datum/event2/event/meteor_defense + +/datum/event2/meta/meteor_defense/get_weight() + // Engineers count as 20. + var/engineers = metric.count_people_in_department(DEPARTMENT_ENGINEERING) + if(engineers < 3) // There -must- be at least three engineers for this to be possible. + return 0 + + . = engineers * 20 + + // Cargo and AI/borgs count as 10. + var/cargo = metric.count_people_with_job(/datum/job/cargo_tech) + metric.count_people_with_job(/datum/job/qm) + var/bots = metric.count_people_in_department(DEPARTMENT_SYNTHETIC) + + . += (cargo + bots) * 10 + + +/datum/event2/event/meteor_defense + start_delay_lower_bound = 10 MINUTES + start_delay_upper_bound = 15 MINUTES + var/soon_announced = FALSE + var/direction = null // Actual dir used for which side the meteors come from. + var/dir_text = null // Direction shown in the announcement. + var/list/meteor_types = null + var/waves = null // How many times to send meteors. + var/last_wave_time = null // world.time of latest wave. + var/wave_delay = 10 SECONDS + var/wave_upper_bound = 8 // Max amount of meteors per wave. + var/wave_lower_bound = 4 // Min amount. + +/datum/event2/event/meteor_defense/proc/set_meteor_types() + meteor_types = meteors_threatening.Copy() + +/datum/event2/event/meteor_defense/set_up() + direction = pick(cardinal) // alldirs doesn't work with current meteor code unfortunately. + waves = rand(3, 6) + switch(direction) + if(NORTH) + dir_text = "aft" // For some reason this is needed. + if(SOUTH) + dir_text = "fore" + if(EAST) + dir_text = "port" + if(WEST) + dir_text = "starboard" + set_meteor_types() + +/datum/event2/event/meteor_defense/announce() + var/announcement = "Meteors are expected to approach from the [dir_text] side, in approximately [DisplayTimeText(time_to_start - world.time, 60)]." + command_announcement.Announce(announcement, "Meteor Alert", new_sound = 'sound/AI/meteors.ogg') + +/datum/event2/event/meteor_defense/wait_tick() + if(!soon_announced) + if((time_to_start - world.time) <= 5 MINUTES) + soon_announced = TRUE + var/announcement = "The incoming meteors are expected to approach from the [dir_text] side. \ + ETA to arrival is approximately [DisplayTimeText(time_to_start - world.time, 60)]." + command_announcement.Announce(announcement, "Meteor Alert - Update") + +/datum/event2/event/meteor_defense/start() + command_announcement.Announce("Incoming meteors approach from \the [dir_text] side!", "Meteor Alert - Update") + +/datum/event2/event/meteor_defense/event_tick() + if(world.time > last_wave_time + wave_delay) + last_wave_time = world.time + waves-- + message_admins("[waves] more wave\s of meteors remain.") + // Dir is reversed because the direction describes where meteors are going, not what side it's gonna hit. + spawn_meteors(rand(wave_upper_bound, wave_lower_bound), meteor_types, reverse_dir[direction]) + +/datum/event2/event/meteor_defense/should_end() + return waves <= 0 + +/datum/event2/event/meteor_defense/end() + command_announcement.Announce("\The [location_name()] will clear the incoming meteors in a moment.", "Meteor Alert - Update") diff --git a/code/modules/gamemaster/event2/events/engineering/spacevine.dm b/code/modules/gamemaster/event2/events/engineering/spacevine.dm new file mode 100644 index 00000000000..5dd5d6b3a1e --- /dev/null +++ b/code/modules/gamemaster/event2/events/engineering/spacevine.dm @@ -0,0 +1,17 @@ +/datum/event2/meta/spacevine + name = "space-vine infestation" + departments = list(DEPARTMENT_ENGINEERING) + chaos = 10 // There's a really rare chance of vines getting something awful like phoron atmosphere but thats not really controllable. + chaotic_threshold = EVENT_CHAOS_THRESHOLD_MEDIUM_IMPACT + event_type = /datum/event2/event/spacevine + +/datum/event2/meta/spacevine/get_weight() + return 20 + (metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 20) + (metric.count_people_in_department(DEPARTMENT_EVERYONE) * 10) + + + +/datum/event2/event/spacevine/announce() + level_seven_announcement() + +/datum/event2/event/spacevine/start() + spacevine_infestation() diff --git a/code/modules/gamemaster/event2/events/engineering/wallrot.dm b/code/modules/gamemaster/event2/events/engineering/wallrot.dm new file mode 100644 index 00000000000..29d12c85247 --- /dev/null +++ b/code/modules/gamemaster/event2/events/engineering/wallrot.dm @@ -0,0 +1,46 @@ +/datum/event2/meta/wallrot + name = "wall-rot" + departments = list(DEPARTMENT_ENGINEERING) + reusable = TRUE + event_type = /datum/event2/event/wallrot + +/datum/event2/meta/wallrot/get_weight() + return (10 + metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 10) / (times_ran + 1) + + + + +/datum/event2/event/wallrot + var/turf/simulated/wall/origin = null + +/datum/event2/event/wallrot/set_up() + for(var/i = 1 to 100) + var/turf/candidate = locate(rand(1, world.maxx), rand(1, world.maxy), pick(get_location_z_levels()) ) + if(istype(candidate, /turf/simulated/wall)) + origin = candidate + log_debug("Wall-rot event has chosen \the [origin] ([origin.loc]) as the origin for the wallrot infestation.") + return + + log_debug("Wall-rot event failed to find a valid wall after one hundred tries. Aborting.") + abort() + +/datum/event2/event/wallrot/announce() + if(origin && prob(80)) + command_announcement.Announce("Harmful fungi detected on \the [location_name()], near \the [origin.loc]. \ + Station structural integrity may be compromised.", "Biohazard Alert") + +/datum/event2/event/wallrot/start() + if(origin) + origin.rot() + + var/rot_count = 0 + var/target_rot = rand(5, 20) + for(var/turf/simulated/wall/W in range(7, origin)) + if(prob(50)) + if(W.rot()) + rot_count++ + if(rot_count >= target_rot) + break + + + diff --git a/code/modules/gamemaster/event2/events/engineering/window_break.dm b/code/modules/gamemaster/event2/events/engineering/window_break.dm new file mode 100644 index 00000000000..0b02e78b3de --- /dev/null +++ b/code/modules/gamemaster/event2/events/engineering/window_break.dm @@ -0,0 +1,148 @@ +// This event causes a random window near space to become damaged. +// If that window is not fixed in a certain amount of time, +// that window and nearby windows will shatter, causing a breach. + +/datum/event2/meta/window_break + name = "window break" + departments = list(DEPARTMENT_ENGINEERING) + chaos = 10 + reusable = TRUE + chaotic_threshold = EVENT_CHAOS_THRESHOLD_MEDIUM_IMPACT + event_type = /datum/event2/event/window_break + +/datum/event2/meta/window_break/get_weight() + return metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 20 + + + +/datum/event2/event/window_break + announce_delay_lower_bound = 10 SECONDS + announce_delay_upper_bound = 20 SECONDS + length_lower_bound = 8 MINUTES + length_upper_bound = 12 MINUTES + var/turf/chosen_turf_with_windows = null + var/obj/structure/window/chosen_window = null + var/list/collateral_windows = list() + +/datum/event2/event/window_break/set_up() + var/list/areas = find_random_areas() + if(!LAZYLEN(areas)) + log_debug("Window Break event could not find any areas. Aborting.") + abort() + return + + while(areas.len) + var/area/area = pick(areas) + areas -= area + + for(var/obj/structure/window/W in area.contents) + if(!is_window_to_space(W)) + continue + chosen_turf_with_windows = get_turf(W) + collateral_windows = gather_collateral_windows(W) + break // Break out of the inner loop. + + if(chosen_turf_with_windows) + log_debug("Window Break event has chosen turf '[chosen_turf_with_windows.name]' in [chosen_turf_with_windows.loc].") + break // Then the outer loop. + + if(!chosen_turf_with_windows) + log_debug("Window Break event could not find a turf with valid windows to break. Aborting.") + abort() + return + +/datum/event2/event/window_break/announce() + if(chosen_window) + command_announcement.Announce("Structural integrity of space-facing windows at \the [get_area(chosen_turf_with_windows)] are failing. \ + Repair of the damaged window is advised. Personnel without EVA suits in the area should leave until repairs are complete.", "Structural Alert") + +/datum/event2/event/window_break/start() + if(!chosen_turf_with_windows) + return + + for(var/obj/structure/window/W in chosen_turf_with_windows.contents) + if(W.is_fulltile()) // Full tile windows are simple and can always be used. + chosen_window = W + break + else // Otherwise we only want the window that is on the inside side of the station. + var/turf/T = get_step(W, W.dir) + if(T.is_space()) + continue + if(T.check_density()) + continue + chosen_window = W + break + + if(!chosen_window) + return + + chosen_window.take_damage(chosen_window.maxhealth * 0.8) + playsound(chosen_window, 'sound/effects/Glasshit.ogg', 100, 1) + chosen_window.visible_message(span("danger", "\The [chosen_window] suddenly begins to crack!")) + +/datum/event2/event/window_break/should_end() + . = ..() + if(!.) // If the timer didn't expire, we can still end it early if someone messes up. + if(!chosen_window || !chosen_window.anchored || chosen_window.health == chosen_window.maxhealth) + // If the window got deconstructed/moved/etc, immediately end and make the breach happen. + // Also end early if it was repaired. + return TRUE + +/datum/event2/event/window_break/end() + // If someone fixed the window, then everything is fine. + if(chosen_window && chosen_window.anchored && chosen_window.health == chosen_window.maxhealth) + log_debug("Window Break event ended with window repaired.") + return + + // Otherwise a bunch of windows shatter. + chosen_window?.shatter() + + var/windows_to_shatter = min(rand(4, 10), collateral_windows.len) + for(var/i = 1 to windows_to_shatter) + var/obj/structure/window/W = collateral_windows[i] + W?.shatter() + + log_debug("Window Break event ended with [windows_to_shatter] shattered windows and a breach.") + +// Checks if a window is adjacent to a space tile, and also that the opposite direction is open. +// This is done to avoid getting caught in corner parts of windows. +/datum/event2/event/window_break/proc/is_window_to_space(obj/structure/window/W) + for(var/direction in GLOB.cardinal) + var/turf/T = get_step(W, direction) + if(T.is_space()) + var/turf/opposite_T = get_step(W, GLOB.reverse_dir[direction]) + if(!opposite_T.check_density()) + return TRUE + return FALSE + +//TL;DR: breadth first search for all connected turfs with windows +/datum/event2/event/window_break/proc/gather_collateral_windows(var/obj/structure/window/target_window) + var/list/turf/frontier_set = list(target_window.loc) + var/list/obj/structure/window/result_set = list() + var/list/turf/explored_set = list() + + while(frontier_set.len > 0) + var/turf/current = frontier_set[1] + frontier_set -= current + explored_set += current + + var/contains_windows = 0 + for(var/obj/structure/window/to_add in current.contents) + contains_windows = 1 + result_set += to_add + + if(contains_windows) + //add adjacent turfs to be checked for windows as well + var/turf/neighbor = locate(current.x + 1, current.y, current.z) + if(!(neighbor in frontier_set) && !(neighbor in explored_set)) + frontier_set += neighbor + neighbor = locate(current.x - 1, current.y, current.z) + if(!(neighbor in frontier_set) && !(neighbor in explored_set)) + frontier_set += neighbor + neighbor = locate(current.x, current.y + 1, current.z) + if(!(neighbor in frontier_set) && !(neighbor in explored_set)) + frontier_set += neighbor + neighbor = locate(current.x, current.y - 1, current.z) + if(!(neighbor in frontier_set) && !(neighbor in explored_set)) + frontier_set += neighbor + return result_set diff --git a/code/modules/gamemaster/event2/events/everyone/comms_blackout.dm b/code/modules/gamemaster/event2/events/everyone/comms_blackout.dm new file mode 100644 index 00000000000..6da19c32ccd --- /dev/null +++ b/code/modules/gamemaster/event2/events/everyone/comms_blackout.dm @@ -0,0 +1,43 @@ +/datum/event2/meta/comms_blackout + name = "communications blackout" + departments = list(DEPARTMENT_EVERYONE) // It's not an engineering event because engineering can't do anything to help . . . for now. + chaos = 10 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_MEDIUM_IMPACT + reusable = TRUE + event_type = /datum/event2/event/comms_blackout + +/datum/event2/meta/comms_blackout/get_weight() + return 50 + metric.count_people_in_department(DEPARTMENT_EVERYONE) * 5 + + + +/datum/event2/event/comms_blackout/announce() + var/alert = pick("Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you*%fj00)`5vc-BZZT", \ + "Ionospheric anomalies detected. Temporary telecommunication failu*3mga;b4;'1v¬-BZZZT", \ + "Ionospheric anomalies detected. Temporary telec#MCi46:5.;@63-BZZZZT", \ + "Ionospheric anomalies dete'fZ\\kg5_0-BZZZZZT", \ + "Ionospheri:%£ MCayj^j<.3-BZZZZZZT", \ + "#4nd%;f4y6,>£%-BZZZZZZZT") + if(prob(33)) + command_announcement.Announce(alert, new_sound = 'sound/misc/interference.ogg') + // AIs will always know if there's a comm blackout, rogue AIs could then lie about comm blackouts in the future while they shutdown comms + for(var/mob/living/silicon/ai/A in player_list) + to_chat(A, "
    ") + to_chat(A, "[alert]") + to_chat(A, "
    ") + +/datum/event2/event/comms_blackout/start() + if(prob(50)) + // One in two chance for the radios to turn i%t# t&_)#%, which can be more alarming than radio silence. + log_debug("Doing partial outage of telecomms.") + for(var/obj/machinery/telecomms/processor/P in telecomms_list) + P.emp_act(1) + else + // Otherwise just shut everything down, madagascar style. + log_debug("Doing complete outage of telecomms.") + for(var/obj/machinery/telecomms/T in telecomms_list) + T.emp_act(1) + + // Communicators go down no matter what. + for(var/obj/machinery/exonet_node/N in machines) + N.emp_act(1) diff --git a/code/modules/gamemaster/event2/events/everyone/electrical_fault.dm b/code/modules/gamemaster/event2/events/everyone/electrical_fault.dm new file mode 100644 index 00000000000..6467646f1b4 --- /dev/null +++ b/code/modules/gamemaster/event2/events/everyone/electrical_fault.dm @@ -0,0 +1,99 @@ +// Makes a spooky electrical thing happen, that can blow the lights or make the APCs turn off for a short period of time. +// Doesn't do any permanent damage beyond the small chance to emag an APC, which just unlocks it forever. As such, this is free to occur even with no engineers. +// Since this is an 'external' thing, the Grid Checker can't stop it. + +/datum/event2/meta/electrical_fault + name = "electrical fault" + departments = list(DEPARTMENT_EVERYONE) + chaos = 10 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_LOW_IMPACT + event_type = /datum/event2/event/electrical_fault + +/datum/event2/meta/electrical_fault/get_weight() + return 10 + (metric.count_people_in_department(DEPARTMENT_EVERYONE) * 5) + + +/datum/event2/event/electrical_fault + start_delay_lower_bound = 30 SECONDS + start_delay_upper_bound = 1 MINUTE + length_lower_bound = 20 SECONDS + length_upper_bound = 40 SECONDS + var/max_apcs_per_tick = 6 + + var/list/valid_apcs = null + var/list/valid_z_levels = null + + var/apcs_disabled = 0 + var/apcs_overloaded = 0 + var/apcs_emagged = 0 + +/datum/event2/event/electrical_fault/announce() + // Trying to be vague to avoid 'space lightning storms'. + // This could be re-flavored to be a solar flare or something and have robots outside be sad. + command_announcement.Announce("External conditions near \the [location_name()] are likely \ + to cause voltage spikes and other electrical issues very soon. Please secure sensitive electrical equipment until the situation passes.", "[location_name()] Sensor Array") + +/datum/event2/event/electrical_fault/set_up() + valid_z_levels = get_location_z_levels() + valid_z_levels -= using_map.sealed_levels // Space levels only please! + + valid_apcs = list() + for(var/obj/machinery/power/apc/A in global.machines) + if(A.z in valid_z_levels) + valid_apcs += A + +/datum/event2/event/electrical_fault/start() + command_announcement.Announce("Irregularities detected in \the [location_name()] power grid.", "[location_name()] Power Grid Monitoring") + +/datum/event2/event/electrical_fault/event_tick() + if(!valid_apcs.len) + log_debug("ELECTRICAL EVENT: No valid APCs found for electrical fault event. Aborting.") + abort() + return + + var/list/picked_apcs = list() + for(var/i = 1 to max_apcs_per_tick) + picked_apcs |= pick(valid_apcs) + + for(var/A in picked_apcs) + affect_apc(A) + +/datum/event2/event/electrical_fault/end() + command_announcement.Announce("The irregular electrical conditions inside \the [location_name()] power grid has ceased.", "[location_name()] Power Grid Monitoring") + log_debug("Electrical Fault event caused [apcs_disabled] APC\s to shut off, \ + [apcs_overloaded] APC\s to overload lighting, and [apcs_emagged] APC\s to be emagged.") + +/datum/event2/event/electrical_fault/proc/affect_apc(obj/machinery/power/apc/A) + // Main breaker is turned off or is Special(tm). Consider it protected. + // Important APCs like the AI or the engine core shouldn't get shut off by this event. + if((!A.operating || A.failure_timer > 0) || A.is_critical) + return + + // In reality this would probably make the lights get brighter but oh well. + for(var/obj/machinery/light/L in get_area(A)) + L.flicker(rand(10, 20)) + + // Chance to make the APC turn off for awhile. + // This will actually protect it from further damage. + if(prob(25)) + A.energy_fail(rand(60, 120)) + log_debug("ELECTRICAL EVENT: Disabled \the [A]'s power for a temporary amount of time.") + playsound(A, 'sound/machines/defib_success.ogg', 50, 1) + apcs_disabled++ + return + + // Decent chance to overload lighting circuit. + if(prob(30)) + A.overload_lighting() + log_debug("ELECTRICAL EVENT: Overloaded \the [A]'s lighting.") + playsound(A, 'sound/effects/lightningshock.ogg', 50, 1) + apcs_overloaded++ + + // Relatively small chance to emag the apc as apc_damage event does. + if(prob(5)) + A.emagged = TRUE + A.update_icon() + log_debug("ELECTRICAL EVENT: Emagged \the [A].") + playsound(A, 'sound/machines/chime.ogg', 50, 1) + apcs_emagged++ + diff --git a/code/modules/gamemaster/event2/events/everyone/gravity.dm b/code/modules/gamemaster/event2/events/everyone/gravity.dm new file mode 100644 index 00000000000..c57f3bd919e --- /dev/null +++ b/code/modules/gamemaster/event2/events/everyone/gravity.dm @@ -0,0 +1,34 @@ +/datum/event2/meta/gravity + name = "gravity failure" + departments = list(DEPARTMENT_EVERYONE) + chaos = 20 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_LOW_IMPACT + reusable = TRUE + event_type = /datum/event2/event/gravity + +/datum/event2/meta/gravity/get_weight() + return (20 + (metric.count_people_in_department(DEPARTMENT_EVERYONE) * 20)) / (times_ran + 1) + + + + +/datum/event2/event/gravity + length_lower_bound = 5 MINUTES + length_upper_bound = 10 MINUTES + +/datum/event2/event/gravity/announce() + command_announcement.Announce("Feedback surge detected in mass-distributions systems. \ + Artificial gravity has been disabled whilst the system reinitializes. \ + Please stand by while the gravity system reinitializes.", "Gravity Failure") + +/datum/event2/event/gravity/start() + for(var/area/A in world) + if(A.z in get_location_z_levels()) + A.gravitychange(FALSE) + +/datum/event2/event/gravity/end() + for(var/area/A in world) + if(A.z in get_location_z_levels()) + A.gravitychange(TRUE) + + command_announcement.Announce("Gravity generators are again functioning within normal parameters. Sorry for any inconvenience.", "Gravity Restored") \ No newline at end of file diff --git a/code/modules/gamemaster/event2/events/everyone/infestation.dm b/code/modules/gamemaster/event2/events/everyone/infestation.dm new file mode 100644 index 00000000000..f51456f3628 --- /dev/null +++ b/code/modules/gamemaster/event2/events/everyone/infestation.dm @@ -0,0 +1,72 @@ +/datum/event2/meta/infestation + event_class = "infestation" + departments = list(DEPARTMENT_EVERYONE) + +/datum/event2/meta/infestation/get_weight() + return metric.count_people_in_department(DEPARTMENT_EVERYONE) * 10 + +/datum/event2/meta/infestation/rodents + name = "infestation - rodents" + event_type = /datum/event2/event/infestation/rodents + +/datum/event2/meta/infestation/lizards + name = "infestation - lizards" + event_type = /datum/event2/event/infestation/lizards + +/datum/event2/meta/infestation/spiderlings + name = "infestation - spiders" + event_type = /datum/event2/event/infestation/spiderlings + + +/datum/event2/event/infestation + var/vermin_string = null + var/max_vermin = 0 + var/list/things_to_spawn = list() + + var/list/turfs = list() + +/datum/event2/event/infestation/rodents + vermin_string = "rodents" + max_vermin = 12 + things_to_spawn = 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, + /mob/living/simple_mob/animal/passive/mouse/rat + ) + +/datum/event2/event/infestation/lizards + vermin_string = "lizards" + max_vermin = 6 + things_to_spawn = list( + /mob/living/simple_mob/animal/passive/lizard, + /mob/living/simple_mob/animal/passive/lizard/large, + /mob/living/simple_mob/animal/passive/lizard/large/defensive + ) + +/datum/event2/event/infestation/spiderlings + vermin_string = "spiders" + max_vermin = 3 + things_to_spawn = list(/obj/effect/spider/spiderling/non_growing) + + +/datum/event2/event/infestation/set_up() + turfs = find_random_turfs(max_vermin) + if(!turfs.len) + log_debug("Infestation event failed to find any valid turfs. Aborting.") + abort() + return + +/datum/event2/event/infestation/announce() + var/turf/T = turfs[1] + command_announcement.Announce("Bioscans indicate that [vermin_string] have been breeding \ + in \the [T.loc]. Clear them out, before this starts to affect productivity.", "Vermin infestation") + + +/datum/event2/event/infestation/start() + var/vermin_to_spawn = rand(2, max_vermin) + for(var/i = 1 to vermin_to_spawn) + var/turf/T = pick(turfs) + turfs -= T + var/spawn_type = pick(things_to_spawn) + new spawn_type(T) diff --git a/code/modules/gamemaster/event2/events/everyone/pda_spam.dm b/code/modules/gamemaster/event2/events/everyone/pda_spam.dm new file mode 100644 index 00000000000..b56687283c4 --- /dev/null +++ b/code/modules/gamemaster/event2/events/everyone/pda_spam.dm @@ -0,0 +1,137 @@ +/datum/event2/meta/pda_spam + name = "pda spam" + departments = list(DEPARTMENT_EVERYONE) + event_type = /datum/event2/event/pda_spam + +/datum/event2/meta/pda_spam/get_weight() + return metric.count_people_in_department(DEPARTMENT_EVERYONE) * 2 + + +/datum/event2/event/pda_spam + length_lower_bound = 30 MINUTES + length_upper_bound = 1 HOUR + var/spam_debug = FALSE // If true, notices of the event sending spam go to `log_debug()`. + var/last_spam_time = null // world.time of most recent spam. + var/next_spam_attempt_time = 0 // world.time of next attempt to try to spam. + var/give_up_after = 5 MINUTES + var/obj/machinery/message_server/MS = null + var/obj/machinery/exonet_node/node = null + +/datum/event2/event/pda_spam/set_up() + last_spam_time = world.time // So it won't immediately give up. + MS = pick_message_server() + node = get_exonet_node() + +/datum/event2/event/pda_spam/event_tick() + if(!can_spam()) + return + + if(world.time < next_spam_attempt_time) + return + + next_spam_attempt_time = world.time + rand(30 SECONDS, 2 MINUTES) + + var/obj/item/device/pda/P = null + var/list/viables = list() + + for(var/obj/item/device/pda/check_pda in sortAtom(PDAs)) + if(!check_pda.owner || check_pda.toff || check_pda.hidden || check_pda.spam_proof) + continue + viables += check_pda + + if(!viables.len) + return + + P = pick(viables) + var/list/spam = generate_spam() + + if(MS.send_pda_message("[P.owner]", spam[1], spam[2])) // Message been filtered by spam filter. + return + + send_spam(P, spam[1], spam[2]) + + +/datum/event2/event/pda_spam/should_end() + . = ..() + if(!.) + // Give up if nobody was reachable for five minutes. + if(last_spam_time + give_up_after < world.time) + log_debug("PDA Spam event giving up after not being able to spam for awhile.") + return TRUE + +/datum/event2/event/pda_spam/proc/can_spam() + if(!node || !node.on || !node.allow_external_PDAs) + node = get_exonet_node() + return FALSE + + if(!MS || !MS.active) + MS = pick_message_server() + return FALSE + + return TRUE + +// Returns a list containing two items, the sender and message. +/datum/event2/event/pda_spam/proc/generate_spam() + var/sender = null + var/message = null + switch(rand(1, 7)) + if(1) + sender = pick("MaxBet","MaxBet Online Casino","There is no better time to register","I'm excited for you to join us") + message = pick("Triple deposits are waiting for you at MaxBet Online when you register to play with us.",\ + "You can qualify for a 200% Welcome Bonus at MaxBet Online when you sign up today.",\ + "Once you are a player with MaxBet, you will also receive lucrative weekly and monthly promotions.",\ + "You will be able to enjoy over 450 top-flight casino games at MaxBet.") + if(2) + sender = pick(300;"QuickDatingSystem",200;"Find your russian bride",50;"Tajaran beauties are waiting",50;"Find your secret skrell crush",50;"Beautiful unathi brides") + message = pick("Your profile caught my attention and I wanted to write and say hello (QuickDating).",\ + "If you will write to me on my email [pick(first_names_female)]@[pick(last_names)].[pick("ru","ck","tj","ur","nt")] I shall necessarily send you a photo (QuickDating).",\ + "I want that we write each other and I hope, that you will like my profile and you will answer me (QuickDating).",\ + "You have (1) new message!",\ + "You have (2) new profile views!") + if(3) + sender = pick("Galactic Payments Association","Better Business Bureau","[using_map.starsys_name] E-Payments","NAnoTransen Finance Deparmtent","Luxury Replicas") + message = pick("Luxury watches for Blowout sale prices!",\ + "Watches, Jewelry & Accessories, Bags & Wallets !",\ + "Deposit 100$ and get 300$ totally free!",\ + " 100K NT.|WOWGOLD õnly $89 ",\ + "We have been filed with a complaint from one of your customers in respect of their business relations with you.",\ + "We kindly ask you to open the COMPLAINT REPORT (attached) to reply on this complaint..") + if(4) + sender = pick("Buy Dr. Maxman","Having dysfuctional troubles?") + message = pick("DR MAXMAN: REAL Doctors, REAL Science, REAL Results!",\ + "Dr. Maxman was created by George Acuilar, M.D, a [using_map.boss_short] Certified Urologist who has treated over 70,000 patients sector wide with 'male problems'.",\ + "After seven years of research, Dr Acuilar and his team came up with this simple breakthrough male enhancement formula.",\ + "Men of all species report AMAZING increases in length, width and stamina.") + if(5) + sender = pick("Dr","Crown prince","King Regent","Professor","Captain") + sender += " " + pick("Robert","Alfred","Josephat","Kingsley","Sehi","Zbahi") + sender += " " + pick("Mugawe","Nkem","Gbatokwia","Nchekwube","Ndim","Ndubisi") + message = pick("YOUR FUND HAS BEEN MOVED TO [uppertext(pick("Salusa","Segunda","Cepheus","Andromeda","Gruis","Corona","Aquila","ARES","Asellus"))] DEVELOPMENTARY BANK FOR ONWARD REMITTANCE.",\ + "We are happy to inform you that due to the delay, we have been instructed to IMMEDIATELY deposit all funds into your account",\ + "Dear fund beneficiary, We have please to inform you that overdue funds payment has finally been approved and released for payment",\ + "Due to my lack of agents I require an off-world financial account to immediately deposit the sum of 1 POINT FIVE MILLION credits.",\ + "Greetings sir, I regretfully to inform you that as I lay dying here due to my lack ofheirs I have chosen you to recieve the full sum of my lifetime savings of 1.5 billion credits") + if(6) + sender = pick("[using_map.company_name] Morale Divison","Feeling Lonely?","Bored?","www.wetskrell.nt") + message = pick("The [using_map.company_name] Morale Division wishes to provide you with quality entertainment sites.",\ + "WetSkrell.nt is a xenophillic website endorsed by NT for the use of male crewmembers among it's many stations and outposts.",\ + "Wetskrell.nt only provides the higest quality of male entertaiment to [using_map.company_name] Employees.",\ + "Simply enter your [using_map.company_name] Bank account system number and pin. With three easy steps this service could be yours!") + if(7) + sender = pick("You have won free tickets!","Click here to claim your prize!","You are the 1000th vistor!","You are our lucky grand prize winner!") + message = pick("You have won tickets to the newest ACTION JAXSON MOVIE!",\ + "You have won tickets to the newest crime drama DETECTIVE MYSTERY IN THE CLAMITY CAPER!",\ + "You have won tickets to the newest romantic comedy 16 RULES OF LOVE!",\ + "You have won tickets to the newest thriller THE CULT OF THE SLEEPING ONE!") + return list(sender, message) + +/datum/event2/event/pda_spam/proc/send_spam(obj/item/device/pda/P, sender, message) + last_spam_time = world.time + P.spam_message(sender, message) + if(spam_debug) + log_debug("PDA Spam event sent spam to \the [P].") + + +/datum/event2/event/pda_spam/proc/pick_message_server() + if(LAZYLEN(message_servers)) + return pick(message_servers) diff --git a/code/modules/gamemaster/event2/events/everyone/radiation_storm.dm b/code/modules/gamemaster/event2/events/everyone/radiation_storm.dm new file mode 100644 index 00000000000..ebd137b404f --- /dev/null +++ b/code/modules/gamemaster/event2/events/everyone/radiation_storm.dm @@ -0,0 +1,49 @@ +/datum/event2/meta/radiation_storm + name = "radiation storm" + departments = list(DEPARTMENT_EVERYONE) + chaos = 20 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_MEDIUM_IMPACT + event_type = /datum/event2/event/radiation_storm + +/datum/event2/meta/radiation_storm/get_weight() + var/medical_factor = metric.count_people_in_department(DEPARTMENT_MEDICAL) * 10 + var/population_factor = metric.count_people_in_department(DEPARTMENT_EVERYONE) * 5 // Note medical people will get counted twice at 25 weight. + return 20 + medical_factor + population_factor + + + +/datum/event2/event/radiation_storm + start_delay_lower_bound = 1 MINUTE + length_lower_bound = 1 MINUTE + +/datum/event2/event/radiation_storm/announce() + command_announcement.Announce("High levels of radiation detected near \the [location_name()]. \ + Please evacuate into one of the shielded maintenance tunnels.", "Anomaly Alert", new_sound = 'sound/AI/radiation.ogg') + make_maint_all_access() + +/datum/event2/event/radiation_storm/start() + command_announcement.Announce("The station has entered the radiation belt. \ + Please remain in a sheltered area until we have passed the radiation belt.", "Anomaly Alert") + +/datum/event2/event/radiation_storm/event_tick() + radiate() + +/datum/event2/event/radiation_storm/proc/radiate() + var/radiation_level = rand(15, 35) + for(var/z in using_map.station_levels) + SSradiation.z_radiate(locate(1, 1, z), radiation_level, 1) + +/datum/event2/event/radiation_storm/end() + command_announcement.Announce("The station has passed the radiation belt. \ + Please allow for up to one minute while radiation levels dissipate, and report to \ + medbay if you experience any unusual symptoms. Maintenance will lose all \ + access again shortly.", "Anomaly Alert") + addtimer(CALLBACK(src, .proc/maint_callback), 2 MINUTES) + +/datum/event2/event/radiation_storm/proc/maint_callback() + revoke_maint_all_access() + + +// There is no actual radiation during a fake storm. +/datum/event2/event/radiation_storm/fake/radiate() + return diff --git a/code/modules/gamemaster/event2/events/everyone/random_antag.dm b/code/modules/gamemaster/event2/events/everyone/random_antag.dm new file mode 100644 index 00000000000..fe3b58be8c9 --- /dev/null +++ b/code/modules/gamemaster/event2/events/everyone/random_antag.dm @@ -0,0 +1,31 @@ +// No idea if this is needed for autotraitor or not. +// If it is, it shouldn't depend on the event system, but fixing that would be it's own project. +// If not, it can stay off until an admin wants to play with it. + +/datum/event2/meta/random_antagonist + name = "random antagonist" + enabled = FALSE + reusable = TRUE + chaos = 0 // This is zero due to the event system not being able to know if an antag actually got spawned or not. + departments = list(DEPARTMENT_EVERYONE) + chaotic_threshold = EVENT_CHAOS_THRESHOLD_MEDIUM_IMPACT + event_type = /datum/event2/event/random_antagonist + +// This has an abnormally high weight due to antags being very important for the round, +// however the weight will decay with more antags, and more attempts to add antags. +/datum/event2/meta/random_antagonist/get_weight() + var/antags = metric.count_all_antags() + return 200 / (antags + times_ran + 1) + + + +// The random spawn proc on the antag datum will handle announcing the spawn and whatnot, in theory. +/datum/event2/event/random_antagonist/start() + var/list/valid_types = list() + for(var/antag_type in all_antag_types) + var/datum/antagonist/antag = all_antag_types[antag_type] + if(antag.flags & ANTAG_RANDSPAWN) + valid_types |= antag + if(valid_types.len) + var/datum/antagonist/antag = pick(valid_types) + antag.attempt_random_spawn() diff --git a/code/modules/gamemaster/event2/events/everyone/solar_storm.dm b/code/modules/gamemaster/event2/events/everyone/solar_storm.dm new file mode 100644 index 00000000000..b73df66076f --- /dev/null +++ b/code/modules/gamemaster/event2/events/everyone/solar_storm.dm @@ -0,0 +1,52 @@ +/datum/event2/meta/solar_storm + name = "solar storm" + reusable = TRUE + event_type = /datum/event2/event/solar_storm + +/datum/event2/meta/solar_storm/get_weight() + var/population_factor = metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 10 + var/space_factor = metric.count_all_space_mobs() * 50 + return (20 + population_factor + space_factor) / (times_ran + 1) + + +/datum/event2/event/solar_storm + start_delay_lower_bound = 1 MINUTE + start_delay_upper_bound = 1 MINUTE + length_lower_bound = 2 MINUTES + length_upper_bound = 4 MINUTES + var/base_solar_gen_rate = null + +/datum/event2/event/solar_storm/announce() + command_announcement.Announce("A solar storm has been detected approaching \the [station_name()]. \ + Please halt all EVA activites immediately and return to the interior of the station.", "Anomaly Alert", new_sound = 'sound/AI/radiation.ogg') + adjust_solar_output(1.5) + +/datum/event2/event/solar_storm/start() + command_announcement.Announce("The solar storm has reached the station. Please refain from EVA and remain inside the station until it has passed.", "Anomaly Alert") + adjust_solar_output(5) + +/datum/event2/event/solar_storm/event_tick() + radiate() + +/datum/event2/event/solar_storm/end() + command_announcement.Announce("The solar storm has passed the station. It is now safe to resume EVA activities. \ + Please report to medbay if you experience any unusual symptoms.", "Anomaly Alert") + adjust_solar_output(1) + +/datum/event2/event/solar_storm/proc/adjust_solar_output(var/mult = 1) + if(isnull(base_solar_gen_rate)) + base_solar_gen_rate = GLOB.solar_gen_rate + GLOB.solar_gen_rate = mult * base_solar_gen_rate + +/datum/event2/event/solar_storm/proc/radiate() + // Note: Too complicated to be worth trying to use the radiation system for this. Its only in space anyway, so we make an exception in this case. + for(var/mob/living/L in player_list) + var/turf/T = get_turf(L) + if(!T) + continue + + if(!istype(T.loc,/area/space) && !istype(T,/turf/space)) //Make sure you're in a space area or on a space turf + continue + + //Todo: Apply some burn damage from the heat of the sun. Until then, enjoy some moderate radiation. + L.rad_act(rand(15, 30)) diff --git a/code/modules/gamemaster/event2/events/everyone/sudden_weather_shift.dm b/code/modules/gamemaster/event2/events/everyone/sudden_weather_shift.dm new file mode 100644 index 00000000000..2d83209612c --- /dev/null +++ b/code/modules/gamemaster/event2/events/everyone/sudden_weather_shift.dm @@ -0,0 +1,45 @@ +/datum/event2/meta/sudden_weather_shift + name = "sudden weather shift" + departments = list(DEPARTMENT_EVERYONE) + reusable = TRUE + event_type = /datum/event2/event/sudden_weather_shift + +/datum/event2/meta/sudden_weather_shift/get_weight() + // The proc name is a bit misleading, it only counts players outside, not all mobs. + return (metric.count_all_outdoor_mobs() * 20) / (times_ran + 1) + +/datum/event2/event/sudden_weather_shift + start_delay_lower_bound = 30 SECONDS + start_delay_upper_bound = 1 MINUTE + var/datum/planet/chosen_planet = null + +/datum/event2/event/sudden_weather_shift/set_up() + if(!LAZYLEN(SSplanets.planets)) + log_debug("Weather shift event was ran when no planets exist. Aborting.") + abort() + return + + chosen_planet = pick(SSplanets.planets) + +/datum/event2/event/sudden_weather_shift/announce() + if(!chosen_planet) + return + command_announcement.Announce("Local weather patterns on [chosen_planet.name] suggest that a \ + sudden atmospheric fluctuation has occurred. All groundside personnel should be wary of \ + rapidly deteriorating conditions.", "Weather Alert") + +/datum/event2/event/sudden_weather_shift/start() + // Using the roundstart weather list is handy, because it avoids the chance of choosing a bus-only weather. + // It also makes this event generic and suitable for other planets besides the main one, with no additional code needed. + // Only flaw is that roundstart weathers are -usually- safe ones, but we can fix that by tweaking a copy of it. + var/list/weather_choices = chosen_planet.weather_holder.roundstart_weather_chances.Copy() + var/list/new_weather_weights = list() + + // A lazy way of inverting the odds is to use some division. + for(var/weather in weather_choices) + new_weather_weights[weather] = 100 / weather_choices[weather] + + // Now choose a new weather. + var/new_weather = pickweight(new_weather_weights) + log_debug("Sudden weather shift event is now changing [chosen_planet.name]'s weather to [new_weather].") + chosen_planet.weather_holder.change_weather(new_weather) diff --git a/code/modules/gamemaster/event2/events/ghost_pod_spawner.dm b/code/modules/gamemaster/event2/events/ghost_pod_spawner.dm new file mode 100644 index 00000000000..4c462d06d6c --- /dev/null +++ b/code/modules/gamemaster/event2/events/ghost_pod_spawner.dm @@ -0,0 +1,21 @@ +// Generic subtype for events that make ghost pods. + +/datum/event2/event/ghost_pod_spawner + var/pod_type = null + var/list/desired_turf_areas = list() // If this is left empty, it will default to a global list of 'station' turfs. + var/list/free_turfs = list() + +/datum/event2/event/ghost_pod_spawner/set_up() + free_turfs = find_random_turfs(5, desired_turf_areas) + + if(!free_turfs.len) + log_debug("Ghost Pod Spawning event failed to find a place to spawn. Aborting.") + abort() + return + +/datum/event2/event/ghost_pod_spawner/start() + var/obj/structure/ghost_pod/pod = new pod_type(pick(free_turfs)) + post_pod_creation(pod) + +// Override to do things to the pod after it's spawned. +/datum/event2/event/ghost_pod_spawner/proc/post_pod_creation(obj/structure/ghost_pod/pod) \ No newline at end of file diff --git a/code/modules/gamemaster/event2/events/legacy/legacy.dm b/code/modules/gamemaster/event2/events/legacy/legacy.dm new file mode 100644 index 00000000000..6f70cafa851 --- /dev/null +++ b/code/modules/gamemaster/event2/events/legacy/legacy.dm @@ -0,0 +1,63 @@ +// This is a somewhat special type of event, that bridges to the old event datum and makes it work with the new system. +// It acts as a compatability layer between the old event, and the new GM system. +// This is possible because the new datum is mostly a superset of the old one. +/datum/event2/event/legacy + var/datum/event/legacy_event = null + + // Used to emulate legacy's `activeFor` tick counter. + var/tick_count = 0 + + // How 'severe' the legacy event should be. This should only be used for legacy events, as severity is an outdated concept for the GM system. + var/severity = EVENT_LEVEL_MODERATE + +/datum/event2/meta/legacy/get_weight() + return 50 + +/datum/event2/event/legacy/process() + ..() + tick_count++ + +/datum/event2/event/legacy/set_up() + legacy_event = new legacy_event(null, external_use = TRUE) + legacy_event.severity = severity + legacy_event.setup() + +/datum/event2/event/legacy/should_announce() + return tick_count >= legacy_event.announceWhen + +/datum/event2/event/legacy/announce() + legacy_event.announce() + + +// Legacy events don't tick before they start, so we don't need to do `wait_tick()`. + +/datum/event2/event/legacy/should_start() + return tick_count >= legacy_event.startWhen + +/datum/event2/event/legacy/start() + legacy_event.start() + +/datum/event2/event/legacy/event_tick() + legacy_event.tick() + + +/datum/event2/event/legacy/should_end() + return tick_count >= legacy_event.endWhen + +/datum/event2/event/legacy/end() + legacy_event.end() + +/datum/event2/event/legacy/finish() + legacy_event.kill(external_use = TRUE) + ..() + +// Proof of concept. +/* +/datum/event2/meta/legacy_gravity + name = "gravity (legacy)" + reusable = TRUE + event_type = /datum/event2/event/legacy/gravity + +/datum/event2/event/legacy/gravity + legacy_event = /datum/event/gravity +*/ \ No newline at end of file diff --git a/code/modules/gamemaster/event2/events/medical/appendicitis.dm b/code/modules/gamemaster/event2/events/medical/appendicitis.dm new file mode 100644 index 00000000000..27f5284020e --- /dev/null +++ b/code/modules/gamemaster/event2/events/medical/appendicitis.dm @@ -0,0 +1,36 @@ +/datum/event2/meta/appendicitis + name = "appendicitis" + departments = list(DEPARTMENT_MEDICAL) + chaos = 40 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_MEDIUM_IMPACT + event_type = /datum/event2/event/appendicitis + +/datum/event2/meta/appendicitis/get_weight() + var/list/doctors = metric.get_people_with_job(/datum/job/doctor) + + doctors -= metric.get_people_with_alt_title(/datum/job/doctor, /datum/alt_title/nurse) + doctors -= metric.get_people_with_alt_title(/datum/job/doctor, /datum/alt_title/virologist) + doctors += metric.get_people_with_job(/datum/job/cmo) + + return doctors.len * 10 + + + +/datum/event2/event/appendicitis/start() + for(var/mob/living/carbon/human/H in shuffle(living_mob_list)) + // Don't do it to SSD people. + if(!H.client) + continue + + // Or antags. + if(player_is_antag(H.mind)) + continue + + // Or doctors (otherwise it could be possible for the only surgeon to need surgery). + if(H in metric.get_people_with_job(/datum/job/doctor) ) + continue + + if(H.appendicitis()) + log_debug("Appendicitis event gave appendicitis to \the [H].") + return + log_debug("Appendicitis event could not find a valid victim.") diff --git a/code/modules/gamemaster/event2/events/medical/virus.dm b/code/modules/gamemaster/event2/events/medical/virus.dm new file mode 100644 index 00000000000..58791d2ad15 --- /dev/null +++ b/code/modules/gamemaster/event2/events/medical/virus.dm @@ -0,0 +1,69 @@ +/datum/event2/meta/virus + name = "viral infection" + event_class = "virus" + departments = list(DEPARTMENT_MEDICAL, DEPARTMENT_EVERYONE) + chaos = 40 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_HIGH_IMPACT + event_type = /datum/event2/event/virus + +/datum/event2/meta/virus/superbug + name = "viral superbug" + chaos = 60 + event_type = /datum/event2/event/virus/superbug + +/datum/event2/meta/virus/outbreak + name = "viral outbreak" + chaos = 60 + event_type = /datum/event2/event/virus/outbreak + +/datum/event2/meta/virus/get_weight() + var/list/virologists = metric.get_people_with_alt_title(/datum/job/doctor, /datum/alt_title/virologist) + virologists += metric.get_people_with_job(/datum/job/cmo) + + return virologists.len * 25 + + + +/datum/event2/event/virus + announce_delay_lower_bound = 1 MINUTE + announce_delay_upper_bound = 3 MINUTES + var/number_of_viruses = 1 + var/virus_power = 2 // Ranges from 1 to 3, with 1 being the weakest. + var/list/candidates = list() + +// A single powerful virus. +/datum/event2/event/virus/superbug + virus_power = 3 + +// A lot of weaker viruses. +/datum/event2/event/virus/outbreak + virus_power = 1 + number_of_viruses = 3 + + + +/datum/event2/event/virus/set_up() + for(var/mob/living/carbon/human/H in player_list) + if(H.client && !H.isSynthetic() && H.stat != DEAD && !player_is_antag(H.mind)) + candidates += H + candidates = shuffle(candidates) + +/datum/event2/event/virus/announce() + command_announcement.Announce("Confirmed outbreak of level 7 biohazard aboard \the [location_name()]. \ + All personnel must contain the outbreak.", "Biohazard Alert", new_sound = 'sound/AI/outbreak7.ogg') + +/datum/event2/event/virus/start() + if(!candidates.len) + log_debug("Virus event could not find any valid targets to infect. Aborting.") + abort() + return + + for(var/i = 1 to number_of_viruses) + var/mob/living/carbon/human/H = LAZYACCESS(candidates, 1) + if(!H) + return + var/datum/disease2/disease/D = new() + D.makerandom(virus_power) + log_debug("Virus event is now infecting \the [H] with a new random virus.") + infect_mob(H, D) + candidates -= H diff --git a/code/modules/gamemaster/event2/events/mob_spawning.dm b/code/modules/gamemaster/event2/events/mob_spawning.dm new file mode 100644 index 00000000000..78b1eac69c4 --- /dev/null +++ b/code/modules/gamemaster/event2/events/mob_spawning.dm @@ -0,0 +1,99 @@ +// A subtype that involves spawning mobs like carp, rogue drones, spiders, etc. + +/datum/event2/event/mob_spawning + var/list/spawned_mobs = list() + var/use_map_edge_with_landmarks = TRUE // Use both landmarks and spawning from the "edge" of the map. Otherise uses landmarks over map edge. + var/landmark_name = "carpspawn" // Which landmark to use for spawning. + +// Spawns a specific mob from the "edge" of the map, and makes them go towards the station. +// Can also use landmarks, if desired. +/datum/event2/event/mob_spawning/proc/spawn_mobs_in_space(mob_type, number_of_groups, min_size_of_group, max_size_of_group, dir) + if(isnull(dir)) + dir = pick(GLOB.cardinal) + + var/list/valid_z_levels = get_location_z_levels() + valid_z_levels -= using_map.sealed_levels // Space levels only please! + + // Check if any landmarks exist! + var/list/spawn_locations = list() + for(var/obj/effect/landmark/C in landmarks_list) + if(C.name == landmark_name && (C.z in valid_z_levels)) + spawn_locations.Add(C.loc) + + var/prioritize_landmarks = TRUE + if(use_map_edge_with_landmarks && prob(50)) + prioritize_landmarks = FALSE // One in two chance to come from the edge instead. + + if(spawn_locations.len && prioritize_landmarks) // Okay we've got landmarks, lets use those! + shuffle_inplace(spawn_locations) + number_of_groups = min(number_of_groups, spawn_locations.len) + var/i = 1 + while (i <= number_of_groups) + var/group_size = rand(min_size_of_group, max_size_of_group) + for (var/j = 0, j < group_size, j++) + spawn_one_mob(spawn_locations[i], mob_type) + i++ + return + + // Okay we did *not* have any landmarks, or we're being told to do both, so lets do our best! + var/i = 1 + while(i <= number_of_groups) + var/z_level = pick(valid_z_levels) + var/group_size = rand(min_size_of_group, max_size_of_group) + var/turf/map_center = locate(round(world.maxx/2), round(world.maxy/2), z_level) + var/turf/group_center = pick_random_edge_turf(dir, z_level, TRANSITIONEDGE + 2) + var/list/turfs = getcircle(group_center, 2) + for(var/j = 0, j < group_size, j++) + // On larger maps, BYOND gets in the way of letting simple_mobs path to the closest edge of the station. + // So instead we need to simulate the mob's travel, then spawn them somewhere still hopefully off screen. + + // Find a turf to be the edge of the map. + var/turf/edge_of_map = turfs[(i % turfs.len) + 1] + + // Now walk a straight line towards the center of the map, until we find a non-space tile. + var/turf/edge_of_station = null + + var/list/space_line = list() // This holds all space tiles on the line. Will be used a bit later. + for(var/turf/T in getline(edge_of_map, map_center)) + if(!T.is_space()) + break // We found the station! + space_line += T + edge_of_station = T + + // Now put the mob somewhere on the line, hopefully off screen. + // I wish this was higher than 8 but the BYOND internal A* algorithm gives up sometimes when using + // 16 or more. + // In the future, a new AI stance that handles long distance travel using getline() could work. + var/max_distance = 8 + var/turf/spawn_turf = null + for(var/P in space_line) + var/turf/point = P + if(get_dist(point, edge_of_station) <= max_distance) + spawn_turf = P + break + + if(spawn_turf) + // Finally, make the simple_mob go towards the edge of the station. + var/mob/living/simple_mob/M = spawn_one_mob(spawn_turf, mob_type) + if(edge_of_station) + M.ai_holder?.give_destination(edge_of_station) // Ask simple_mobs to fly towards the edge of the station. + i++ + +/datum/event2/event/mob_spawning/proc/spawn_one_mob(new_loc, mob_type) + var/mob/living/simple_mob/M = new mob_type(new_loc) + GLOB.destroyed_event.register(M, src, .proc/on_mob_destruction) + spawned_mobs += M + return M + +// Counts living simple_mobs spawned by this event. +/datum/event2/event/mob_spawning/proc/count_spawned_mobs() + . = 0 + for(var/I in spawned_mobs) + var/mob/living/simple_mob/M = I + if(!QDELETED(M) && M.stat != DEAD) + . += 1 + +// If simple_mob is bomphed, remove it from the list. +/datum/event2/event/mob_spawning/proc/on_mob_destruction(mob/M) + spawned_mobs -= M + GLOB.destroyed_event.unregister(M, src, .proc/on_mob_destruction) \ No newline at end of file diff --git a/code/modules/gamemaster/event2/events/security/carp_migration.dm b/code/modules/gamemaster/event2/events/security/carp_migration.dm new file mode 100644 index 00000000000..12f08f3edd0 --- /dev/null +++ b/code/modules/gamemaster/event2/events/security/carp_migration.dm @@ -0,0 +1,49 @@ +/datum/event2/meta/carp_migration + name = "carp migration" + event_class = "carp" + departments = list(DEPARTMENT_SECURITY, DEPARTMENT_EVERYONE) + chaos = 30 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_MEDIUM_IMPACT + event_type = /datum/event2/event/mob_spawning/carp_migration + +/datum/event2/meta/carp_migration/get_weight() + return 10 + (metric.count_people_in_department(DEPARTMENT_SECURITY) * 20) + (metric.count_all_space_mobs() * 40) + + +/datum/event2/event/mob_spawning/carp_migration + announce_delay_lower_bound = 1 MINUTE + announce_delay_upper_bound = 2 MINUTES + length_lower_bound = 30 SECONDS + length_upper_bound = 1 MINUTE + var/carp_cap = 30 // No more than this many (living) carp can exist from this event. + var/carp_smallest_group = 3 + var/carp_largest_group = 5 + var/carp_wave_cooldown = 10 SECONDS + + var/last_carp_wave_time = null // Last world.time we spawned a carp wave. + +/datum/event2/event/mob_spawning/carp_migration/announce() + var/announcement = "Unknown biological entities been detected near \the [location_name()], please stand-by." + command_announcement.Announce(announcement, "Lifesign Alert") + +/datum/event2/event/mob_spawning/carp_migration/event_tick() + if(last_carp_wave_time + carp_wave_cooldown > world.time) + return + last_carp_wave_time = world.time + + if(count_spawned_mobs() < carp_cap) + spawn_mobs_in_space( + mob_type = /mob/living/simple_mob/animal/space/carp/event, + number_of_groups = rand(1, 4), + min_size_of_group = carp_smallest_group, + max_size_of_group = carp_largest_group + ) + +/datum/event2/event/mob_spawning/carp_migration/end() + // Clean up carp that died in space for some reason. + for(var/mob/living/simple_mob/SM in spawned_mobs) + if(SM.stat == DEAD) + var/turf/T = get_turf(SM) + if(istype(T, /turf/space)) + if(prob(75)) + qdel(SM) diff --git a/code/modules/gamemaster/event2/events/security/drill_announcement.dm b/code/modules/gamemaster/event2/events/security/drill_announcement.dm new file mode 100644 index 00000000000..271e2d75f17 --- /dev/null +++ b/code/modules/gamemaster/event2/events/security/drill_announcement.dm @@ -0,0 +1,22 @@ +/datum/event2/meta/security_drill + name = "security drill" + departments = list(DEPARTMENT_SECURITY, DEPARTMENT_EVERYONE) + chaotic_threshold = EVENT_CHAOS_THRESHOLD_HIGH_IMPACT // Don't run if we just got hit by meteors. + event_type = /datum/event2/event/security_drill + +/datum/event2/meta/security_drill/get_weight() + var/sec = metric.count_people_in_department(DEPARTMENT_SECURITY) + var/everyone = metric.count_people_in_department(DEPARTMENT_EVERYONE) + + if(!sec) // If there's no security, then there is no drill. + return 0 + if(everyone - sec < 0) // If there's no non-sec, then there is no drill. + return 0 + + // Each security player adds +5 weight, while non-security adds +1.5. + return (sec * 5) + ((everyone - sec) * 1.5) + +/datum/event2/event/security_drill/announce() + command_announcement.Announce("[pick("A NanoTrasen security director", "A Vir-Gov correspondant", "Local Sif authoritiy")] \ + has advised the enactment of [pick("a rampant wildlife", "a fire", "a hostile boarding", \ + "a bomb", "an emergent intelligence")] drill with the personnel onboard \the [location_name()].", "Security Advisement") diff --git a/code/modules/gamemaster/event2/events/security/prison_break.dm b/code/modules/gamemaster/event2/events/security/prison_break.dm new file mode 100644 index 00000000000..c178d1f9907 --- /dev/null +++ b/code/modules/gamemaster/event2/events/security/prison_break.dm @@ -0,0 +1,227 @@ + +// Type for inheritence. +// It has a null name, so it won't be ran. +/datum/event2/meta/prison_break + chaos = 10 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_LOW_IMPACT + // The weight system can check if people are in these areas. + // This isn't the same list as what the event itself will break, as the event will also + // break open areas inbetween the holding area and the public hallway, like the brig area verses + // the prison area. + var/list/relevant_areas = list() + var/list/irrelevant_areas = list() + +/datum/event2/meta/prison_break/get_weight() + // First, don't do this if nobody can fix the doors. + var/door_fixers = metric.count_people_in_department(DEPARTMENT_ENGINEERING) + metric.count_people_in_department(DEPARTMENT_SYNTHETIC) + if(!door_fixers) + return 0 + var/list/afflicted_departments = departments.Copy() + var/afflicted_crew = 0 + + afflicted_departments -= DEPARTMENT_SYNTHETIC + for(var/D in afflicted_departments) + afflicted_crew += metric.count_people_in_department(D) + + // Don't do it if nobody is around to ""appreciate"" it. + if(!afflicted_crew) + return 0 + + var/trapped = get_odds_from_trapped_mobs() + + return 10 + (door_fixers * 20) + (afflicted_crew * 10) + trapped + +// This is overriden to have specific events trigger more often based on who is trapped in where, if applicable. +/datum/event2/meta/prison_break/proc/get_odds_from_trapped_mobs() + return 0 + +/datum/event2/meta/prison_break/proc/is_mob_in_relevant_area(mob/living/L) + var/area/A = get_area(L) + if(!A) + return FALSE + if(is_type_in_list(A, relevant_areas) && !is_type_in_list(A, irrelevant_areas)) + return TRUE + return FALSE + +/datum/event2/meta/prison_break/brig + name = "prison break - brig" + departments = list(DEPARTMENT_SECURITY, DEPARTMENT_SYNTHETIC) + event_type = /datum/event2/event/prison_break/brig + relevant_areas = list( + /area/security/prison, + /area/security/security_cell_hallway, + /area/security/security_processing, + /area/security/interrogation + ) + +/datum/event2/meta/prison_break/brig/get_odds_from_trapped_mobs() + . = 0 + for(var/mob/living/L in player_list) + if(is_mob_in_relevant_area(L)) + // Don't count them if they're in security. + if(!(L in metric.count_people_in_department(DEPARTMENT_SECURITY))) + . += 40 + + +/datum/event2/meta/prison_break/armory + name = "prison break - armory" + departments = list(DEPARTMENT_SECURITY, DEPARTMENT_SYNTHETIC) + chaos = 40 // Potentially free guns. + chaotic_threshold = EVENT_CHAOS_THRESHOLD_MEDIUM_IMPACT + event_type = /datum/event2/event/prison_break/armory + +/datum/event2/meta/prison_break/bridge + name = "prison break - bridge" + departments = list(DEPARTMENT_COMMAND, DEPARTMENT_SYNTHETIC) + chaos = 40 // Potentially free spare ID. + chaotic_threshold = EVENT_CHAOS_THRESHOLD_MEDIUM_IMPACT + event_type = /datum/event2/event/prison_break/bridge + +/datum/event2/meta/prison_break/xenobio + name = "prison break - xenobio" + departments = list(DEPARTMENT_RESEARCH, DEPARTMENT_SYNTHETIC) + chaos = 20 // This one is more likely to actually kill someone. + chaotic_threshold = EVENT_CHAOS_THRESHOLD_MEDIUM_IMPACT + event_type = /datum/event2/event/prison_break/xenobio + relevant_areas = list(/area/rnd/xenobiology) + irrelevant_areas = list( + /area/rnd/xenobiology/xenoflora, + /area/rnd/xenobiology/xenoflora_storage + ) + +/datum/event2/meta/prison_break/xenobio/get_odds_from_trapped_mobs() + . = 0 + for(var/mob/living/simple_mob/slime/xenobio/X in living_mob_list) + if(is_mob_in_relevant_area(X)) + . += 5 + + +/datum/event2/meta/prison_break/virology + name = "prison break - virology" + departments = list(DEPARTMENT_MEDICAL, DEPARTMENT_SYNTHETIC) + event_type = /datum/event2/event/prison_break/virology + relevant_areas = list( + /area/medical/virology, + /area/medical/virologyaccess + ) + +/datum/event2/meta/prison_break/virology/get_odds_from_trapped_mobs() + . = 0 + for(var/mob/living/L in player_list) + if(is_mob_in_relevant_area(L)) + // Don't count them if they're in medical. + if(!(L in metric.count_people_in_department(DEPARTMENT_MEDICAL))) + . += 40 + + + + +/datum/event2/event/prison_break + start_delay_lower_bound = 3 MINUTES + start_delay_upper_bound = 4 MINUTES + length_lower_bound = 40 SECONDS + length_upper_bound = 1 MINUTE + var/area_display_name = null // A string used to describe the area being messed with. + var/containment_display_desc = null + var/list/areas_to_break = list() + var/list/area_types_to_break = null // Area types to include. + var/list/area_types_to_ignore = null // Area types to exclude, usually due to undesired inclusion from inheritence. + +/datum/event2/event/prison_break/brig + area_display_name = "Brig" + containment_display_desc = "imprisonment" + area_types_to_break = list( + /area/security/prison, + /area/security/brig, + /area/security/security_cell_hallway, + /area/security/security_processing, + /area/security/interrogation + ) + +/datum/event2/event/prison_break/armory + area_display_name = "Armory" + containment_display_desc = "protection" + area_types_to_break = list( + /area/security/brig, + /area/security/warden, + /area/security/evidence_storage, + /area/security/security_equiptment_storage, + /area/security/armoury, + /area/security/tactical + ) + +/datum/event2/event/prison_break/bridge + area_display_name = "Bridge" + containment_display_desc = "isolation" + area_types_to_break = list( + /area/bridge, + /area/bridge_hallway + ) + +/datum/event2/event/prison_break/xenobio + area_display_name = "Xenobiology" + containment_display_desc = "containment" + area_types_to_break = list(/area/rnd/xenobiology) + area_types_to_ignore = list( + /area/rnd/xenobiology/xenoflora, + /area/rnd/xenobiology/xenoflora_storage + ) + +/datum/event2/event/prison_break/virology + area_display_name = "Virology" + containment_display_desc = "quarantine" + area_types_to_break = list( + /area/medical/virology, + /area/medical/virologyaccess + ) + + +/datum/event2/event/prison_break/set_up() + for(var/area/A in world) + if(is_type_in_list(A, area_types_to_break) && !is_type_in_list(A, area_types_to_ignore)) + areas_to_break += A + + if(!areas_to_break.len) + log_debug("Prison Break event failed to find any areas to break. Aborting.") + abort() + return + +/datum/event2/event/prison_break/announce() + var/my_department = "[location_name()] Firewall Subroutines" + var/message = "An unknown malicious program has been detected in the [area_display_name] \ + lighting and airlock control systems at [stationtime2text()]. Systems will be fully compromised \ + within approximately three minutes. Direct intervention is required immediately. Disabling the \ + main breaker in the APCs will protect the APC's room from being compromised." + + for(var/obj/machinery/message_server/MS in machines) + MS.send_rc_message(DEPARTMENT_ENGINEERING, my_department, "[message]
    ", "", "", 2) + + // Nobody reads the requests consoles so lets use the radio as well. + global_announcer.autosay(message, my_department, DEPARTMENT_ENGINEERING) + + for(var/mob/living/silicon/ai/A in player_list) + to_chat(A, span("danger", "Malicious program detected in the [area_display_name] lighting and airlock control systems by [my_department]. \ + Disabling the main breaker in the APCs will protect the APC's room from being compromised.")) + + var/time_to_flicker = start_delay - 10 SECONDS + addtimer(CALLBACK(src, .proc/flicker_area), time_to_flicker) + + +/datum/event2/event/prison_break/proc/flicker_area() + for(var/area/A in areas_to_break) + var/obj/machinery/power/apc/apc = A.get_apc() + if(apc.operating) //If the apc's off, it's a little hard to overload the lights. + for(var/obj/machinery/light/L in A) + L.flicker(10) + +/datum/event2/event/prison_break/start() + for(var/area/A in areas_to_break) + spawn(0) // So we don't block the ticker. + A.prison_break() + +// There's between 40 seconds and one minute before the whole station knows. +// If there's a baddie engineer, they can choose to keep their early announcement to themselves and get a minute to exploit it. +/datum/event2/event/prison_break/end() + command_announcement.Announce("[pick("Gr3y.T1d3 virus","Malignant trojan")] was detected \ + in \the [location_name()] [area_display_name] [containment_display_desc] subroutines. Secure any compromised \ + areas immediately. AI involvement is recommended.", "[capitalize(containment_display_desc)] Alert") diff --git a/code/modules/gamemaster/event2/events/security/rogue_drones.dm b/code/modules/gamemaster/event2/events/security/rogue_drones.dm new file mode 100644 index 00000000000..da40b3262f6 --- /dev/null +++ b/code/modules/gamemaster/event2/events/security/rogue_drones.dm @@ -0,0 +1,70 @@ +/datum/event2/meta/rogue_drones + name = "rogue drones" + departments = list(DEPARTMENT_SECURITY, DEPARTMENT_EVERYONE) + chaos = 40 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_MEDIUM_IMPACT + event_type = /datum/event2/event/mob_spawning/rogue_drones + +/datum/event2/meta/rogue_drones/get_weight() + . = 10 // Start with a base weight, since this event does provide some value even if no sec is around. + . += metric.count_people_in_department(DEPARTMENT_SECURITY) * 20 + . += metric.count_all_space_mobs() * 40 + + +/datum/event2/event/mob_spawning/rogue_drones + length_lower_bound = 15 MINUTES + length_upper_bound = 20 MINUTES + var/drones_to_spawn = 6 + +/datum/event2/event/mob_spawning/rogue_drones/set_up() + if(prob(10)) // Small chance for a false alarm. + drones_to_spawn = 0 + +/datum/event2/event/mob_spawning/rogue_drones/announce() + var/msg = null + var/rng = rand(1,5) + switch(rng) + if(1) + msg = "A combat drone wing operating in close orbit above Sif has failed to return from a anti-piracy sweep. \ + If any are sighted, approach with caution." + if(2) + msg = "Contact has been lost with a combat drone wing in Sif orbit. \ + If any are sighted in the area, approach with caution." + if(3) + msg = "Unidentified hackers have targeted a combat drone wing deployed around Sif. \ + If any are sighted in the area, approach with caution." + if(4) + msg = "A passing derelict ship's drone defense systems have just activated. \ + If any are sighted in the area, use caution." + if(5) + msg = "We're detecting a swarm of small objects approaching your station. \ + Most likely a bunch of drones. Please exercise caution if you see any." + + command_announcement.Announce(msg, "Rogue drone alert") + +/datum/event2/event/mob_spawning/rogue_drones/start() + for(var/i = 1 to drones_to_spawn) + spawn_mobs_in_space( + mob_type = /mob/living/simple_mob/mechanical/combat_drone/event, + number_of_groups = 1, + min_size_of_group = 1, + max_size_of_group = 1 + ) + +/datum/event2/event/mob_spawning/rogue_drones/end() + if(drones_to_spawn) + var/number_recovered = 0 + for(var/mob/living/simple_mob/mechanical/combat_drone/D in spawned_mobs) + var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(3, 0, D.loc) + sparks.start() + D.z = using_map.admin_levels[1] + D.loot_list = list() + + qdel(D) + number_recovered++ + + if(number_recovered > spawned_mobs.len * 0.75) + command_announcement.Announce("The drones that were malfunctioning have been recovered safely.", "Rogue drone alert") + else + command_announcement.Announce("We're disappointed at the loss of the drones, but the survivors have been recovered.", "Rogue drone alert") diff --git a/code/modules/gamemaster/event2/events/security/security_advisement.dm b/code/modules/gamemaster/event2/events/security/security_advisement.dm new file mode 100644 index 00000000000..6a3764e40e6 --- /dev/null +++ b/code/modules/gamemaster/event2/events/security/security_advisement.dm @@ -0,0 +1,93 @@ +/datum/event2/meta/security_screening + name = "security screening" + departments = list(DEPARTMENT_SECURITY, DEPARTMENT_EVERYONE) + chaotic_threshold = EVENT_CHAOS_THRESHOLD_HIGH_IMPACT // So this won't get called in the middle of a crisis. + event_type = /datum/event2/event/security_screening + +/datum/event2/meta/security_screening/get_weight() + . = 0 + var/sec = metric.count_people_in_department(DEPARTMENT_SECURITY) + if(!sec < 2) + return 0 // Can't screen with no security. + . += sec * 10 + . += metric.count_people_in_department(DEPARTMENT_EVERYONE) * 2 + + // Having ""suspecious"" people present makes this more likely to be picked. + var/suspicious_people = 0 + suspicious_people += metric.count_all_of_specific_species(SPECIES_PROMETHEAN) * 20 + suspicious_people += metric.count_all_of_specific_species(SPECIES_UNATHI) * 10 + suspicious_people += metric.count_all_of_specific_species(SPECIES_ZADDAT) * 10 + suspicious_people += metric.count_all_of_specific_species(SPECIES_SKRELL) * 5 // Not sure why skrell are so high. + suspicious_people += metric.count_all_of_specific_species(SPECIES_TAJ) * 5 + suspicious_people += metric.count_all_of_specific_species(SPECIES_TESHARI) * 5 + suspicious_people += metric.count_all_of_specific_species(SPECIES_HUMAN_VATBORN) * 5 + suspicious_people += metric.count_all_FBPs_of_kind(FBP_DRONE) * 20 + suspicious_people += metric.count_all_FBPs_of_kind(FBP_POSI) * 10 + if(!suspicious_people) + return 0 + . += suspicious_people + +/datum/event2/event/security_screening + var/victim = null + var/list/species_weights = list( + SPECIES_SKRELL = 9, + SPECIES_UNATHI = 15, + SPECIES_HUMAN_VATBORN = 6, + SPECIES_TESHARI = 2, + SPECIES_TAJ = 3, + SPECIES_DIONA = 1, + SPECIES_ZADDAT = 25, + SPECIES_PROMETHEAN = 30 + ) + + var/list/synth_weights = list( + FBP_CYBORG = 15, + FBP_DRONE = 30, + FBP_POSI = 25 + ) + +/datum/event2/event/security_screening/set_up() + var/list/end_weights = list() + + // First pass makes popular things more likely to get picked, e.g. 5 prommies vs 1 drone. + for(var/species_name in species_weights) + var/give_weight = 0 + for(var/datum/data/record/R in data_core.general) + if(R.fields["species"] == species_name) + give_weight += species_weights[species_name] + + end_weights[species_name] = give_weight + + for(var/bot_type in synth_weights) + var/give_weight = 0 + for(var/datum/data/record/R in data_core.general) + if(R.fields["brain_type"] == bot_type) + give_weight += synth_weights[bot_type] + + end_weights[bot_type] = give_weight + + // Second pass eliminates things that don't exist on the station. + // It's possible to choose something like drones when all the drones are AFK. This prevents that from happening. + while(end_weights.len) // Keep at it until we find someone or run out of possibilities. + var/victim_chosen = pickweight(end_weights) + + if(victim_chosen in synth_weights) + if(metric.count_all_FBPs_of_kind(victim_chosen) > 0) + victim = victim_chosen + break + else + if(metric.count_all_of_specific_species(victim_chosen) > 0) + victim = victim_chosen + break + if(!victim) + end_weights -= victim_chosen + + if(!victim) + log_debug("Security Screening event failed to find anyone to screen. Aborting.") + abort() + return + +/datum/event2/event/security_screening/announce() + command_announcement.Announce("[pick("A nearby Navy vessel", "A Solar official", "A Vir-Gov official", "A NanoTrasen board director")] has \ + requested the screening of [pick("every other", "every", "suspicious", "willing")] [victim] \ + personnel onboard \the [location_name()].", "Security Advisement") diff --git a/code/modules/gamemaster/event2/events/security/spider_infestation.dm b/code/modules/gamemaster/event2/events/security/spider_infestation.dm new file mode 100644 index 00000000000..23dc61c6739 --- /dev/null +++ b/code/modules/gamemaster/event2/events/security/spider_infestation.dm @@ -0,0 +1,49 @@ +/datum/event2/meta/spider_infestation + name = "spider infestation" + event_class = "spiders" + departments = list(DEPARTMENT_SECURITY, DEPARTMENT_MEDICAL, DEPARTMENT_EVERYONE) + chaos = 30 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_MEDIUM_IMPACT + event_type = /datum/event2/event/spider_infestation + +/datum/event2/meta/spider_infestation/weak + name = "weak spider infestation" + chaos = 20 + event_type = /datum/event2/event/spider_infestation/weak + + +/datum/event2/meta/spider_infestation/get_weight() + . = 10 + . += metric.count_people_in_department(DEPARTMENT_SECURITY) * 20 + . += metric.count_people_in_department(DEPARTMENT_MEDICAL) * 10 + + +// This isn't a /mob_spawning subtype since spiderlings aren't actually mobs. + +/datum/event2/event/spider_infestation + var/spiders_to_spawn = 8 + var/spiderling_to_spawn = /obj/effect/spider/spiderling + +/datum/event2/event/spider_infestation/weak + spiders_to_spawn = 5 + spiderling_to_spawn = /obj/effect/spider/spiderling/stunted + + + +/datum/event2/event/spider_infestation/announce() + command_announcement.Announce("Unidentified lifesigns detected coming aboard \the [location_name()]. \ + Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", new_sound = 'sound/AI/aliens.ogg') + +/datum/event2/event/spider_infestation/start() + var/list/vents = list() + for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in machines) + if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in get_location_z_levels()) + if(temp_vent.network.normal_members.len > 50) + vents += temp_vent + + while((spiders_to_spawn >= 1) && vents.len) + var/obj/vent = pick(vents) + new spiderling_to_spawn(vent.loc) + log_debug("Spider infestation event spawned a spiderling at [get_area(vent)].") + vents -= vent + spiders_to_spawn-- diff --git a/code/modules/gamemaster/event2/events/security/stowaway.dm b/code/modules/gamemaster/event2/events/security/stowaway.dm new file mode 100644 index 00000000000..d04d350234a --- /dev/null +++ b/code/modules/gamemaster/event2/events/security/stowaway.dm @@ -0,0 +1,64 @@ +// Base type used for inheritence. +/datum/event2/meta/stowaway + event_class = "stowaway" + departments = list(DEPARTMENT_SECURITY, DEPARTMENT_EVERYONE) + chaos = 10 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_LOW_IMPACT + event_type = /datum/event2/event/ghost_pod_spawner/stowaway + var/safe_for_extended = FALSE + +/datum/event2/meta/stowaway/normal + name = "stowaway - normal" + safe_for_extended = TRUE + +/datum/event2/meta/stowaway/renegade + name = "stowaway - renegade" + chaos = 30 + event_type = /datum/event2/event/ghost_pod_spawner/stowaway/renegade + +/datum/event2/meta/stowaway/infiltrator + name = "stowaway - infiltrator" + chaos = 60 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_MEDIUM_IMPACT + event_type = /datum/event2/event/ghost_pod_spawner/stowaway/infiltrator + +/datum/event2/meta/stowaway/get_weight() + if(istype(ticker.mode, /datum/game_mode/extended) && !safe_for_extended) + return 0 + + var/security = metric.count_people_in_department(DEPARTMENT_SECURITY) + var/everyone = metric.count_people_in_department(DEPARTMENT_EVERYONE) - security + var/ghost_activity = metric.assess_all_dead_mobs() / 100 + + return ( (security * 20) + (everyone * 2) ) * ghost_activity + + +/datum/event2/event/ghost_pod_spawner/stowaway + pod_type = /obj/structure/ghost_pod/ghost_activated/human + desired_turf_areas = list(/area/maintenance) + announce_delay_lower_bound = 15 MINUTES + announce_delay_upper_bound = 30 MINUTES + var/antag_type = MODE_STOWAWAY + var/announce_odds = 20 + +/datum/event2/event/ghost_pod_spawner/stowaway/renegade + antag_type = MODE_RENEGADE + announce_odds = 33 + +/datum/event2/event/ghost_pod_spawner/stowaway/infiltrator + antag_type = MODE_INFILTRATOR + announce_odds = 50 + +/datum/event2/event/ghost_pod_spawner/stowaway/post_pod_creation(obj/structure/ghost_pod/ghost_activated/human/pod) + pod.make_antag = antag_type + pod.occupant_type = "[pod.make_antag] [pod.occupant_type]" + + say_dead_object("[span("notice", pod.occupant_type)] pod is now available in \the [get_area(pod)].", pod) + +/datum/event2/event/ghost_pod_spawner/stowaway/announce() + if(prob(announce_odds)) + if(atc?.squelched) + return + atc.msg("Attention civilian vessels in [using_map.starsys_name] shipping lanes, caution is advised as \ + [pick("an unidentified vessel", "a known criminal's vessel", "a derelict vessel")] \ + has been detected passing multiple local stations.") diff --git a/code/modules/gamemaster/event2/events/security/surprise_carp.dm b/code/modules/gamemaster/event2/events/security/surprise_carp.dm new file mode 100644 index 00000000000..39be6d8412d --- /dev/null +++ b/code/modules/gamemaster/event2/events/security/surprise_carp.dm @@ -0,0 +1,71 @@ +// This event sends a few carp after someone hanging around in space, unannounced. + +/datum/event2/meta/surprise_carp + name = "surprise carp" + departments = list(DEPARTMENT_EVERYONE) + chaos = 20 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_MEDIUM_IMPACT + event_type = /datum/event2/event/surprise_carp + +/datum/event2/meta/surprise_carp/get_weight() + return metric.count_all_space_mobs() * 50 + + +/datum/event2/event/surprise_carp + var/mob/living/victim = null + +/datum/event2/event/surprise_carp/set_up() + var/list/potential_victims = list() + for(var/mob/living/L in player_list) + if(!(L.z in get_location_z_levels())) + continue // Not on the right z-level. + if(L.stat) + continue // Don't want dead people. + if(istype(get_turf(L), /turf/space) && istype(get_area(L),/area/space)) + potential_victims += L + + if(potential_victims.len) + victim = pick(potential_victims) + +/datum/event2/event/surprise_carp/start() + if(!victim) + log_debug("Failed to find a target for surprise carp attack. Aborting.") + abort() + return + + var/number_of_carp = rand(1, 2) + log_debug("Sending [number_of_carp] carp\s after \the [victim].") + // Getting off screen tiles is kind of tricky due to potential edge cases that could arise. + // The method we're gonna do is make a big square around the victim, then + // subtract a smaller square in the middle for the default vision range. + var/list/outer_square = get_safe_square(victim, world.view + 3) + var/list/inner_square = get_safe_square(victim, world.view) + + var/list/donut = outer_square - inner_square + for(var/T in donut) + if(!istype(T, /turf/space)) + donut -= T + + for(var/i = 1 to number_of_carp) + var/turf/spawning_turf = pick(donut) + + if(spawning_turf) + var/mob/living/simple_mob/animal/space/carp/C = new(spawning_turf) + // Ask carp to swim onto the victim's screen. The AI will then switch to hostile and try to eat them. + C.ai_holder?.give_destination(get_turf(victim)) + else + log_debug("Surprise carp attack failed to find any space turfs offscreen to the victim.") + +// Gets suitable spots for carp to spawn, without risk of going off the edge of the map. +// If there is demand for this proc, then it can easily be made independant and moved into one of the helper files. +/datum/event2/event/surprise_carp/proc/get_safe_square(atom/center, radius) + var/lower_left_x = max(center.x - radius, 1 + TRANSITIONEDGE) + var/lower_left_y = max(center.y - radius, 1 + TRANSITIONEDGE) + + var/upper_right_x = min(center.x + radius, world.maxx - TRANSITIONEDGE) + var/upper_right_y = min(center.y + radius, world.maxy - TRANSITIONEDGE) + + var/turf/lower_left = locate(lower_left_x, lower_left_y, victim.z) + var/turf/upper_right = locate(upper_right_x, upper_right_y, victim.z) + + return block(lower_left, upper_right) diff --git a/code/modules/gamemaster/event2/events/security/swarm_boarder.dm b/code/modules/gamemaster/event2/events/security/swarm_boarder.dm new file mode 100644 index 00000000000..283333c6796 --- /dev/null +++ b/code/modules/gamemaster/event2/events/security/swarm_boarder.dm @@ -0,0 +1,55 @@ +// This is just porting the event to the new new event system, it's not been balanced in any way +// so don't @ me if these things are grossly OP. +/datum/event2/meta/swarm_boarder + event_class = "swarm boarder" + departments = list(DEPARTMENT_EVERYONE, DEPARTMENT_SECURITY, DEPARTMENT_ENGINEERING) + chaos = 60 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_HIGH_IMPACT + var/safe_for_extended = FALSE + +/datum/event2/meta/swarm_boarder/get_weight() + if(istype(ticker.mode, /datum/game_mode/extended) && !safe_for_extended) + return 0 + + var/security = metric.count_people_in_department(DEPARTMENT_SECURITY) + var/engineering = metric.count_people_in_department(DEPARTMENT_ENGINEERING) + var/everyone = metric.count_people_in_department(DEPARTMENT_EVERYONE) - (engineering + security) + + var/ghost_activity = metric.assess_all_dead_mobs() / 100 + + return ( (security * 20) + (engineering * 10) + (everyone * 2) ) * ghost_activity + +/datum/event2/meta/swarm_boarder/normal + name = "swarmer shell - normal" + event_type = /datum/event2/event/ghost_pod_spawner/swarm_boarder + +/datum/event2/meta/swarm_boarder/melee + name = "swarmer shell - melee" + event_type = /datum/event2/event/ghost_pod_spawner/swarm_boarder/melee + +/datum/event2/meta/swarm_boarder/gunner + name = "swarmer shell - gunner" + event_type = /datum/event2/event/ghost_pod_spawner/swarm_boarder/gunner + + + + +/datum/event2/event/ghost_pod_spawner/swarm_boarder + announce_delay_lower_bound = 5 MINUTES + announce_delay_upper_bound = 15 MINUTES + pod_type = /obj/structure/ghost_pod/ghost_activated/swarm_drone/event + desired_turf_areas = list(/area/maintenance) + var/announce_odds = 80 + +/datum/event2/event/ghost_pod_spawner/swarm_boarder/melee + pod_type = /obj/structure/ghost_pod/ghost_activated/swarm_drone/event/melee + +/datum/event2/event/ghost_pod_spawner/swarm_boarder/gunner + pod_type = /obj/structure/ghost_pod/ghost_activated/swarm_drone/event/gunner + +/datum/event2/event/ghost_pod_spawner/swarm_boarder/announce() + if(prob(announce_odds)) + if(atc?.squelched) + atc.msg("Attention civilian vessels in [using_map.starsys_name] shipping lanes, caution \ + is advised as [pick("an unidentified vessel", "a known criminal's vessel", "a derelict vessel")] \ + has been detected passing multiple local stations.") diff --git a/code/modules/gamemaster/event2/events/synthetic/ion_storm.dm b/code/modules/gamemaster/event2/events/synthetic/ion_storm.dm new file mode 100644 index 00000000000..afcf20ebc8b --- /dev/null +++ b/code/modules/gamemaster/event2/events/synthetic/ion_storm.dm @@ -0,0 +1,71 @@ +/datum/event2/meta/ion_storm + name = "ion storm" + departments = list(DEPARTMENT_SYNTHETIC) + chaos = 40 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_MEDIUM_IMPACT + event_type = /datum/event2/event/ion_storm + +/datum/event2/meta/ion_storm/get_weight() + var/bots = metric.count_people_in_department(DEPARTMENT_SYNTHETIC) + var/weight = 5 + (bots * 40) // A small chance even if no synths are on, since it can still emag beepsky. + return weight + + +/datum/event2/event/ion_storm + announce_delay_lower_bound = 7 MINUTES + announce_delay_upper_bound = 15 MINUTES + var/bot_emag_chance = 30 // This is rolled once, instead of once a second for a minute like the old version. + var/announce_odds = 50 // Probability of an announcement actually happening after the delay. + +/datum/event2/event/ion_storm/start() + // Ion laws. + for(var/mob/living/silicon/target in silicon_mob_list) + if(target.z in get_location_z_levels()) + // Don't ion law drons. + if(istype(target, /mob/living/silicon/robot/drone)) + continue + + // Or borgs with an AI (they'll get their AI's ion law anyways). + if(istype(target, /mob/living/silicon/robot)) + var/mob/living/silicon/robot/R = target + if(R.connected_ai) + continue + if(R.shell) + continue + + // Crew member names, and excluding off station antags, are handled by `generate_ion_law()` automatically. + var/law = target.generate_ion_law() + target.add_ion_law(law) + target.show_laws() + + // Emag bots. + for(var/mob/living/bot/B in mob_list) + if(B.z in get_location_z_levels()) + if(prob(bot_emag_chance)) + B.emag_act(1) + + // Messaging server spam filters. + // This might be better served as a seperate event since it seems more like a hacker attack than a natural occurance. + if(message_servers) + for(var/obj/machinery/message_server/MS in message_servers) + if(MS.z in get_location_z_levels()) + MS.spamfilter.Cut() + for (var/i = 1, i <= MS.spamfilter_limit, i++) + MS.spamfilter += pick("warble","help","almach","ai","liberty","freedom","drugs", "[using_map.station_short]", \ + "admin","sol","security","meow","_","monkey","-","moron","pizza","message","spam",\ + "director", "Hello", "Hi!"," ","nuke","crate","taj","xeno") + +/datum/event2/event/ion_storm/announce() + if(prob(announce_odds)) + command_announcement.Announce("An ion storm was detected within proximity to \the [location_name()] recently. \ + Check all AI controlled equipment for corruption.", "Anomaly Alert", new_sound = 'sound/AI/ionstorm.ogg') + +// Fake variant used by traitors. +/datum/event2/event/ion_storm/fake + // Fake ion storms announce instantly, so the traitor can time it to make the AI look suspicious. + announce_delay_lower_bound = 0 + announce_delay_upper_bound = 0 + announce_odds = 100 + +/datum/event2/event/ion_storm/fake/start() + return \ No newline at end of file diff --git a/code/modules/gamemaster/event2/meta.dm b/code/modules/gamemaster/event2/meta.dm new file mode 100644 index 00000000000..3923f857444 --- /dev/null +++ b/code/modules/gamemaster/event2/meta.dm @@ -0,0 +1,81 @@ +// The 'meta' object contains information about its assigned 'action' object, like what departments it will affect. +// It is directly held inside the Game Master Event System. + +// The code for actually executing an event should go inside the event object instead. +/datum/event2/meta + // Name used for organization, shown in the debug verb for the GM system. + // If null, the meta event will be discarded when the GM system initializes, so it is safe to use nameless subtypes for inheritence. + var/name = null + + // If FALSE, the GM system won't pick this. + // Some events set this to FALSE after running, to avoid running twice. + var/enabled = TRUE + + // What departments the event attached might affect. + var/list/departments = list(DEPARTMENT_EVERYONE) + + // A guess on how disruptive to a round the event might be. If the action is chosen, the GM's + // 'danger' score is increased by this number. + // Negative numbers could be used to signify helpful events. + var/chaos = 0 + + // A threshold the GM will use alongside its 'danger' score, to determine if it should pass + // over the event associated with this object. The decision is based on + var/chaotic_threshold = null + + // If true, the event won't have it's `enabled` var set to FALSE when ran by the GM system. + var/reusable = FALSE + + // A string used to identify a 'class' of similar events. + // If the event is not reusable, than all events sharing the same class are disabled. + // Useful if you only ever want one event per round while having a lot of different subtypes of the event. + var/event_class = null + + // Counter for how many times this event has been picked by the GM. + // Can be used to make event repeats discouraged but not forbidden by adjusting the weight based on it. + var/times_ran = 0 + + // The type path to the event associated with this meta object. + // When the GM chooses this event, a new instance is made. + // Seperate instances allow for multiple concurrent events without sharing state, e.g. two blobs. + var/event_type = null + + +// Called by the GM system to actually start an event. +/datum/event2/meta/proc/make_event() + var/datum/event2/event/E = new event_type() + E.execute() + return E + +// Returns a TRUE or FALSE for if the GM system should be able to pick this event. +// Can be extended to check for more than just `enabled` later. +/datum/event2/meta/proc/can_pick() + return enabled + +/* + * Procs to Override + */ + +// Returns a number that determines how likely it is for the event to be picked over others. +// Individual events should override this for their own weights. +/datum/event2/meta/proc/get_weight() + return 0 + + +/datum/event2/meta/Topic(href, href_list) + if(..()) + return + + if(!check_rights(R_ADMIN|R_EVENT|R_DEBUG)) + message_admins("[usr] has attempted to manipulate an event without sufficent privilages.") + return + + if(href_list["force"]) + // SSevent_ticker.start_event(event_type) // VOREStation Edit - We don't use SSgame_master yet. + message_admins("Event '[name]' was forced by [usr.key].") + + if(href_list["toggle"]) + enabled = !enabled + message_admins("Event '[name]' was toggled [enabled ? "on" : "off"] by [usr.key].") + + // SSgame_master.interact(usr) // To refresh the UI. // VOREStation Edit - We don't use SSgame_master yet. \ No newline at end of file diff --git a/code/modules/gamemaster/game_master.dm b/code/modules/gamemaster/game_master.dm deleted file mode 100644 index 7220cb11a91..00000000000 --- a/code/modules/gamemaster/game_master.dm +++ /dev/null @@ -1,160 +0,0 @@ -// This is a sort of successor to the various event systems created over the years. It is designed to be just a tad smarter than the -// previous ones, checking various things like player count, department size and composition, individual player activity, -// individual player (IC) skill, and such, in order to try to choose the best actions to take in order to add spice or variety to -// the round. - -/datum/game_master - var/suspended = TRUE // If true, it will not do anything. - var/ignore_time_restrictions = FALSE// Useful for debugging without needing to wait 20 minutes each time. - var/list/available_actions = list() // A list of 'actions' that the GM has access to, to spice up a round, such as events. - var/danger = 0 // The GM's best guess at how chaotic the round is. High danger makes it hold back. - var/staleness = -20 // Determines liklihood of the GM doing something, increases over time. - var/danger_modifier = 1 // Multiplier for how much 'danger' is accumulated. - var/staleness_modifier = 1 // Ditto. Higher numbers generally result in more events occuring in a round. - var/ticks_completed = 0 // Counts amount of ticks completed. Note that this ticks once a minute. - var/next_action = 0 // Minimum amount of time of nothingness until the GM can pick something again. - var/last_department_used = null // If an event was done for a specific department, it is written here, so it doesn't do it again. - -/datum/game_master/New() - ..() - available_actions = init_subtypes(/datum/gm_action) - for(var/datum/gm_action/action in available_actions) - action.gm = src - - var/config_setup_delay = TRUE - spawn(0) - while(config_setup_delay) - if(config) - config_setup_delay = FALSE - if(config.enable_game_master) - suspended = FALSE - next_action = world.time + rand(15 MINUTES, 25 MINUTES) - else - sleep(30 SECONDS) - -/datum/game_master/process() - if(ticker && ticker.current_state == GAME_STATE_PLAYING && !suspended) - adjust_staleness(1) - adjust_danger(-1) - ticks_completed++ - - var/global_afk = metric.assess_all_living_mobs() - global_afk -= 100 - global_afk = abs(global_afk) - global_afk = round(global_afk / 100, 0.1) - adjust_staleness(global_afk) // Staleness increases faster if more people are less active. - - if(world.time < next_action && prob(staleness * 2) ) - log_debug("Game Master going to start something.") - start_action() - -// This is run before committing to an action/event. -/datum/game_master/proc/pre_action_checks() - if(!ticker || ticker.current_state != GAME_STATE_PLAYING) - log_debug("Game Master unable to start event: Ticker is nonexistant, or the game is not ongoing.") - return FALSE - if(suspended) - return FALSE - if(ignore_time_restrictions) - return TRUE - if(world.time < next_action) // Sanity. - log_debug("Game Master unable to start event: Time until next action is approximately [round((next_action - world.time) / (1 MINUTE))] minute(s)") - return FALSE - // Last minute antagging is bad for humans to do, so the GM will respect the start and end of the round. - var/mills = round_duration_in_ticks - var/mins = round((mills % 36000) / 600) - var/hours = round(mills / 36000) - - if(hours < 1 && mins <= 20) // Don't do anything for the first twenty minutes of the round. - log_debug("Game Master unable to start event: It is too early.") - return FALSE - if(hours >= 2 && mins >= 40) // Don't do anything in the last twenty minutes of the round, as well. - log_debug("Game Master unable to start event: It is too late.") - return FALSE - return TRUE - -/datum/game_master/proc/start_action() - if(!pre_action_checks()) // Make sure we're not doing last minute events, or early events. - return - log_debug("Game Master now starting action decision.") - var/list/most_active_departments = metric.assess_all_departments(3, list(last_department_used)) - var/list/best_actions = decide_best_action(most_active_departments) - - if(best_actions && best_actions.len) - var/list/weighted_actions = list() - for(var/datum/gm_action/action in best_actions) - if(action.chaotic > danger) - continue // We skip dangerous events when bad stuff is already occuring. - weighted_actions[action] = action.get_weight() - - var/datum/gm_action/choice = pickweight(weighted_actions) - if(choice) - log_debug("[choice.name] was chosen by the Game Master, and is now being ran.") - run_action(choice) - -/datum/game_master/proc/run_action(var/datum/gm_action/action) - action.set_up() - action.start() - action.announce() - if(action.chaotic) - danger += action.chaotic - if(action.length) - spawn(action.length) - action.end() - next_action = world.time + rand(5 MINUTES, 20 MINUTES) - last_department_used = action.departments[1] - - -/datum/game_master/proc/decide_best_action(var/list/most_active_departments) - if(!most_active_departments.len) // Server's empty? - log_debug("Game Master failed to find any active departments.") - return list() - - var/list/best_actions = list() // List of actions which involve the most active departments. - if(most_active_departments.len >= 2) - for(var/datum/gm_action/action in available_actions) - if(!action.enabled) - continue - // Try to incorporate an action with the top two departments first. - if(most_active_departments[1] in action.departments && most_active_departments[2] in action.departments) - best_actions.Add(action) - log_debug("[action.name] is being considered because both most active departments are involved.") - - if(best_actions.len) // We found something for those two, let's do it. - return best_actions - - // Otherwise we probably couldn't find something for the second highest group, so let's ignore them. - for(var/datum/gm_action/action in available_actions) - if(!action.enabled) - continue - if(most_active_departments[1] in action.departments) - best_actions.Add(action) - log_debug("[action.name] is being considered because the most active department is involved.") - - if(best_actions.len) // Found something for the one guy. - return best_actions - - // At this point we should expand our horizons. - for(var/datum/gm_action/action in available_actions) - if(!action.enabled) - continue - if(DEPARTMENT_EVERYONE in action.departments) - best_actions.Add(action) - log_debug("[action.name] is being considered because it involves everyone.") - - if(best_actions.len) // Finally, perhaps? - return best_actions - - // Just give a random event if for some reason it still can't make up its mind. - for(var/datum/gm_action/action in available_actions) - if(!action.enabled) - continue - best_actions.Add(action) - log_debug("[action.name] is being considered because everything else failed.") - - if(best_actions.len) // Finally, perhaps? - return best_actions - else - log_debug("Game Master failed to find a suitable event, something very wrong is going on.") - - diff --git a/code/modules/gamemaster/helpers.dm b/code/modules/gamemaster/helpers.dm deleted file mode 100644 index da05cb1b20c..00000000000 --- a/code/modules/gamemaster/helpers.dm +++ /dev/null @@ -1,9 +0,0 @@ -// 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) - -// 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 diff --git a/code/modules/hydroponics/spreading/spreading.dm b/code/modules/hydroponics/spreading/spreading.dm index 53e4e87627a..e3ac11ed76b 100644 --- a/code/modules/hydroponics/spreading/spreading.dm +++ b/code/modules/hydroponics/spreading/spreading.dm @@ -7,7 +7,7 @@ for(var/areapath in typesof(/area/hallway)) var/area/A = locate(areapath) for(var/turf/simulated/floor/F in A.contents) - if(turf_clear(F)) + if(!F.check_density()) turfs += F if(turfs.len) //Pick a turf to spawn at if we can diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm index b540aaec2e2..896deca111e 100644 --- a/code/modules/integrated_electronics/core/assemblies.dm +++ b/code/modules/integrated_electronics/core/assemblies.dm @@ -265,9 +265,11 @@ else if(istype(I, /obj/item/device/integrated_electronics/wirer) || istype(I, /obj/item/device/integrated_electronics/debugger) || I.is_screwdriver()) if(opened) interact(user) + return TRUE else to_chat(user, "\The [src] isn't opened, so you can't fiddle with the internal components. \ Try using a crowbar.") + return FALSE else if(istype(I, /obj/item/device/integrated_electronics/detailer)) var/obj/item/device/integrated_electronics/detailer/D = I @@ -365,3 +367,7 @@ /obj/item/device/electronic_assembly/proc/on_unanchored() for(var/obj/item/integrated_circuit/IC in contents) IC.on_unanchored() + +// Returns TRUE if I is something that could/should have a valid interaction. Used to tell circuitclothes to hit the circuit with something instead of the clothes +/obj/item/device/electronic_assembly/proc/is_valid_tool(var/obj/item/I) + return I.is_crowbar() || I.is_screwdriver() || istype(I, /obj/item/integrated_circuit) || istype(I, /obj/item/weapon/cell/device) || istype(I, /obj/item/device/integrated_electronics) \ No newline at end of file diff --git a/code/modules/integrated_electronics/core/assemblies/clothing.dm b/code/modules/integrated_electronics/core/assemblies/clothing.dm index 4415d367f8d..2b0b75f69fc 100644 --- a/code/modules/integrated_electronics/core/assemblies/clothing.dm +++ b/code/modules/integrated_electronics/core/assemblies/clothing.dm @@ -51,13 +51,12 @@ IC.examine(user) ..() -/obj/item/clothing/attackby(obj/item/I, mob/user) - if(IC) - // This needs to be done in a better way... - if(I.is_crowbar() || I.is_screwdriver() || istype(I, /obj/item/integrated_circuit) || istype(I, /obj/item/weapon/cell/device) || istype(I, /obj/item/device/integrated_electronics) ) - IC.attackby(I, user) - else - ..() +/obj/item/clothing/CtrlShiftClick(mob/user) + var/turf/T = get_turf(src) + if(!T.AdjacentQuick(user)) // So people aren't messing with these from across the room + return FALSE + var/obj/item/I = user.get_active_hand() // ctrl-shift-click doesn't give us the item, we have to fetch it + return IC.attackby(I, user) /obj/item/clothing/attack_self(mob/user) if(IC) @@ -105,6 +104,7 @@ /obj/item/clothing/under/circuitry name = "electronic jumpsuit" desc = "It's a wearable case for electronics. This on is a black jumpsuit with wiring weaved into the fabric." + description_info = "Control-shift-click on this with an item in hand to use it on the integrated circuit." icon_state = "circuitry" worn_state = "circuitry" @@ -118,6 +118,7 @@ name = "electronic gloves" desc = "It's a wearable case for electronics. This one is a pair of black gloves, with wires woven into them. A small \ device with a screen is attached to the left glove." + description_info = "Control-shift-click on this with an item in hand to use it on the integrated circuit." icon_state = "circuitry" item_state = "circuitry" @@ -131,6 +132,7 @@ name = "electronic goggles" desc = "It's a wearable case for electronics. This one is a pair of goggles, with wiring sticking out. \ Could this augment your vision?" // Sadly it won't, or at least not yet. + description_info = "Control-shift-click on this with an item in hand to use it on the integrated circuit." icon_state = "circuitry" item_state = "night" // The on-mob sprite would be identical anyways. @@ -143,6 +145,7 @@ name = "electronic boots" desc = "It's a wearable case for electronics. This one is a pair of boots, with wires attached to a small \ cover." + description_info = "Control-shift-click on this with an item in hand to use it on the integrated circuit." icon_state = "circuitry" item_state = "circuitry" @@ -155,6 +158,7 @@ name = "electronic headwear" desc = "It's a wearable case for electronics. This one appears to be a very technical-looking piece that \ goes around the collar, with a heads-up-display attached on the right." + description_info = "Control-shift-click on this with an item in hand to use it on the integrated circuit." icon_state = "circuitry" item_state = "circuitry" @@ -166,6 +170,7 @@ /obj/item/clothing/ears/circuitry name = "electronic earwear" desc = "It's a wearable case for electronics. This one appears to be a technical-looking headset." + description_info = "Control-shift-click on this with an item in hand to use it on the integrated circuit." icon = 'icons/obj/clothing/ears.dmi' icon_state = "circuitry" item_state = "circuitry" @@ -179,6 +184,7 @@ name = "electronic chestpiece" desc = "It's a wearable case for electronics. This one appears to be a very technical-looking vest, that \ almost looks professionally made, however the wiring popping out betrays that idea." + description_info = "Control-shift-click on this with an item in hand to use it on the integrated circuit." icon_state = "circuitry" item_state = "circuitry" diff --git a/code/modules/lighting/lighting_setup.dm b/code/modules/lighting/lighting_setup.dm index 6db6f807b55..ad014b013d3 100644 --- a/code/modules/lighting/lighting_setup.dm +++ b/code/modules/lighting/lighting_setup.dm @@ -1,6 +1,6 @@ // Create lighting overlays on all turfs with dynamic lighting in areas with dynamic lighting. /proc/create_all_lighting_overlays() - for(var/area/A in all_areas) + for(var/area/A in world) if(!A.dynamic_lighting) continue for(var/turf/T in A) diff --git a/code/modules/looking_glass/lg_console.dm b/code/modules/looking_glass/lg_console.dm index c4c9033dc1b..2196775c802 100644 --- a/code/modules/looking_glass/lg_console.dm +++ b/code/modules/looking_glass/lg_console.dm @@ -41,6 +41,9 @@ secret_programs["Flesh"] = image(icon = 'icons/skybox/skybox_vr.dmi', icon_state = "flesh") secret_programs["Synth Int"] = image(icon = 'icons/skybox/skybox_vr.dmi', icon_state = "synthinsides") secret_programs["Synth Int 2"] = image(icon = 'icons/skybox/skybox_vr.dmi', icon_state = "synthinsides_active") + secret_programs["Two Teshari"] = image(icon = 'icons/skybox/skybox_vr.dmi', icon_state = "doubletesh") + secret_programs["Teshari 1"] = image(icon = 'icons/skybox/skybox_vr.dmi', icon_state = "sca") + secret_programs["Teshari 2"] = image(icon = 'icons/skybox/skybox_vr.dmi', icon_state = "eis") /obj/machinery/computer/looking_glass/Destroy() my_area = null diff --git a/code/modules/maps/tg/map_template.dm b/code/modules/maps/tg/map_template.dm index 903dc58b8d7..5fa66e3b475 100644 --- a/code/modules/maps/tg/map_template.dm +++ b/code/modules/maps/tg/map_template.dm @@ -41,6 +41,7 @@ var/prev_shuttle_queue_state = SSshuttles.block_init_queue SSshuttles.block_init_queue = TRUE + var/machinery_was_awake = SSmachines.suspend() // Suspend machinery (if it was not already suspended) var/list/atom/atoms = list() var/list/area/areas = list() @@ -74,6 +75,8 @@ var/area/A = I A.power_change() + if(machinery_was_awake) + SSmachines.wake() // Wake only if it was awake before we tried to suspended it. SSshuttles.block_init_queue = prev_shuttle_queue_state SSshuttles.process_init_queues() // We will flush the queue unless there were other blockers, in which case they will do it. diff --git a/code/modules/maps/tg/reader.dm b/code/modules/maps/tg/reader.dm index 66258849498..71adb65bad9 100644 --- a/code/modules/maps/tg/reader.dm +++ b/code/modules/maps/tg/reader.dm @@ -297,6 +297,7 @@ var/global/use_preloader = FALSE old_position = dpos + 1 if(!atom_def) // Skip the item if the path does not exist. Fix your crap, mappers! + error("Maploader skipping undefined type: '[trim_text(copytext(full_def, 1, variables_start))]' (key=[model_key])") continue members.Add(atom_def) @@ -351,7 +352,7 @@ var/global/use_preloader = FALSE var/atom/instance _preloader.setup(members_attributes[index])//preloader for assigning set variables on atom creation var/atype = members[index] - for(var/area/A in all_areas) + for(var/area/A in world) if(A.type == atype) instance = A break diff --git a/code/modules/metric/count.dm b/code/modules/metric/count.dm index 3900aaaa97e..ba3678295fe 100644 --- a/code/modules/metric/count.dm +++ b/code/modules/metric/count.dm @@ -21,3 +21,47 @@ if(assess_player_activity(L) >= cutoff) num++ return num + +// Gives a count of how many human mobs of a specific species are on the station. +// Note that `ignore_synths` makes this proc ignore posibrains and drones, but NOT cyborgs, as they are still the same species in-universe. +/datum/metric/proc/count_all_of_specific_species(species_name, ignore_synths = TRUE, cutoff = 75, respect_z = TRUE) + var/num = 0 + for(var/mob/living/carbon/human/H in player_list) + if(respect_z && !(H.z in using_map.station_levels)) + continue + if(ignore_synths && H.isSynthetic() && H.get_FBP_type() != FBP_CYBORG) + continue + if(H.species.name == species_name) + if(assess_player_activity(H) >= cutoff) + num++ + return num + +// Gives a count of how many FBPs of a specific type there are on the station. +/datum/metric/proc/count_all_FBPs_of_kind(desired_FBP_class, cutoff = 75, respect_z = TRUE) + var/num = 0 + for(var/mob/living/carbon/human/H in player_list) + if(respect_z && !(H.z in using_map.station_levels)) + continue + if(H.get_FBP_type() != desired_FBP_class) + continue + if(assess_player_activity(H) >= cutoff) + num++ + return num + +// Like above, but for all FBPs. +/datum/metric/proc/count_all_FBPs(cutoff = 75, respect_z = TRUE) + var/num = count_all_FBPs_of_kind(FBP_CYBORG, cutoff, respect_z) + num += count_all_FBPs_of_kind(FBP_POSI, cutoff, respect_z) + num += count_all_FBPs_of_kind(FBP_DRONE, cutoff, respect_z) + return num + + +/datum/metric/proc/get_all_antags(cutoff = 75) + . = list() + for(var/mob/living/L in player_list) + if(L.mind && player_is_antag(L.mind) && assess_player_activity(L) >= cutoff) + . += L + +/datum/metric/proc/count_all_antags(cutoff = 75) + var/list/L = get_all_antags(cutoff) + return L.len \ No newline at end of file diff --git a/code/modules/metric/department.dm b/code/modules/metric/department.dm index acb58101f14..89a0f78ed96 100644 --- a/code/modules/metric/department.dm +++ b/code/modules/metric/department.dm @@ -29,44 +29,88 @@ return DEPARTMENT_UNKNOWN // Welp. +// Similar to above, but gets the actual job. Note that it returns the job datum itself, or null. +/datum/metric/proc/guess_job(mob/M) + // Like before, records are the most reliable way. + var/datum/data/record/R = find_general_record("name", M.real_name) + if(R) // They got a record, now find the job datum. + var/datum/job/J = SSjob.get_job(R.fields["real_rank"]) + if(istype(J)) + return J + + // Try the mind. + if(M.mind) + var/datum/job/J = SSjob.get_job(M.mind.assigned_role) + if(istype(J)) + return J + + // Last ditch effort, check for job assigned to the mob itself. + var/datum/job/J = SSjob.get_job(M.job) + if(istype(J)) + return J + + return null + // Feed this proc the name of a job, and it will try to figure out what department they are apart of. -// Note that this returns a list, as some jobs are in more than one department, like Command. The 'primary' department is the first -// in the list, e.g. a HoS has Security as first, Command as second in the returned list. +// Improved with the addition of SSjob, which has departments be an actual thing and not a virtual concept. /datum/metric/proc/role_name_to_department(var/role_name) - var/list/result = list() + var/datum/job/J = SSjob.get_job(role_name) + if(istype(J)) + if(LAZYLEN(J.departments)) + return J.departments + return list(DEPARTMENT_UNKNOWN) - if(SSjob.is_job_in_department(role_name, DEPARTMENT_SECURITY)) - result += DEPARTMENT_SECURITY +/datum/metric/proc/count_people_in_department(var/department, cutoff = 75) + var/list/L = get_people_in_department(department, cutoff) + return L.len - if(SSjob.is_job_in_department(role_name, DEPARTMENT_ENGINEERING)) - result += DEPARTMENT_ENGINEERING - if(SSjob.is_job_in_department(role_name, DEPARTMENT_MEDICAL)) - result += DEPARTMENT_MEDICAL - - if(SSjob.is_job_in_department(role_name, DEPARTMENT_RESEARCH)) - result += DEPARTMENT_RESEARCH - - if(SSjob.is_job_in_department(role_name, DEPARTMENT_CARGO)) - result += DEPARTMENT_CARGO - - if(SSjob.is_job_in_department(role_name, DEPARTMENT_CIVILIAN)) - result += DEPARTMENT_CIVILIAN - - if(SSjob.is_job_in_department(role_name, DEPARTMENT_SYNTHETIC)) - result += DEPARTMENT_SYNTHETIC - - if(SSjob.is_job_in_department(role_name, DEPARTMENT_COMMAND)) // We do Command last, since we consider command to only be a primary department for hop/admin. - result += DEPARTMENT_COMMAND - - if(!result.len) // No department was found. - result += DEPARTMENT_UNKNOWN - return result - -/datum/metric/proc/count_people_in_department(var/department) +/datum/metric/proc/get_people_in_department(department, cutoff = 75) + . = list() if(!department) return for(var/mob/M in player_list) - if(guess_department(M) != department) // Ignore people outside the department we're counting. + if(department != DEPARTMENT_EVERYONE && guess_department(M) != department) // Ignore people outside the department we're counting. continue - . += 1 + if(assess_player_activity(M) < cutoff) + continue + . += M + +/datum/metric/proc/get_people_with_job(job_type, cutoff = 75) + . = list() + // First, get the name. + var/datum/job/J = SSjob.get_job_type(job_type) + if(!istype(J)) + return + + // Now find people with the job name. + for(var/M in player_list) + var/datum/job/their_job = guess_job(M) + if(!istype(their_job)) // No job was guessed. + continue + if(their_job.title != J.title) // Jobs don't match. + continue + if(assess_player_activity(M) < cutoff) // Too AFK. + continue + . += M + +/datum/metric/proc/count_people_with_job(job_type, cutoff = 75) + var/list/L = get_people_with_job(job_type, cutoff) + return L.len + + + +/datum/metric/proc/get_people_with_alt_title(job_type, alt_title_type, cutoff = 75) + . = list() + + var/list/people_with_jobs = get_people_with_job(job_type, cutoff) + var/datum/job/J = SSjob.get_job_type(job_type) + var/datum/alt_title/A = new alt_title_type() + + for(var/M in people_with_jobs) + if(J.has_alt_title(M, null, A.title)) + . += M + +/datum/metric/proc/count_people_with_alt_title(job_type, alt_title_type, cutoff = 75) + var/list/L = get_people_with_alt_title(job_type, alt_title_type, cutoff) + return L.len \ No newline at end of file diff --git a/code/modules/mining/ore.dm b/code/modules/mining/ore.dm index 315202016f9..708c06db128 100644 --- a/code/modules/mining/ore.dm +++ b/code/modules/mining/ore.dm @@ -125,10 +125,12 @@ //VOREStation Add /obj/item/weapon/ore/attack(mob/living/M as mob, mob/living/user as mob) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.species.eat_ore == 1) - H.handle_eat_ore(src) - return + if(M.handle_eat_ore(src, user)) + return + ..() + +/obj/item/weapon/ore/attack_generic(var/mob/living/user) //Allow adminbussed mobs to eat ore if they click it while NOT on help intent. + if(user.handle_eat_ore(src)) + return ..() //VOREStation Add End diff --git a/code/modules/mob/_modifiers/modifiers.dm b/code/modules/mob/_modifiers/modifiers.dm index ca0f96d07bb..5950d9e98d5 100644 --- a/code/modules/mob/_modifiers/modifiers.dm +++ b/code/modules/mob/_modifiers/modifiers.dm @@ -48,6 +48,8 @@ var/pain_immunity // Makes the holder not care about pain while this is on. Only really useful to human mobs. var/pulse_modifier // Modifier for pulse, will be rounded on application, then added to the normal 'pulse' multiplier which ranges between 0 and 5 normally. Only applied if they're living. var/pulse_set_level // Positive number. If this is non-null, it will hard-set the pulse level to this. Pulse ranges from 0 to 5 normally. + var/emp_modifier // Added to the EMP strength, which is an inverse scale from 1 to 4, with 1 being the strongest EMP. 5 is a nullification. + var/explosion_modifier // Added to the bomb strength, which is an inverse scale from 1 to 3, with 1 being gibstrength. 4 is a nullification. /datum/modifier/New(var/new_holder, var/new_origin) holder = new_holder diff --git a/code/modules/mob/_modifiers/modifiers_misc.dm b/code/modules/mob/_modifiers/modifiers_misc.dm index 743e41bd1dc..8e6a094910c 100644 --- a/code/modules/mob/_modifiers/modifiers_misc.dm +++ b/code/modules/mob/_modifiers/modifiers_misc.dm @@ -324,3 +324,67 @@ the artifact triggers the rage. /datum/modifier/homeothermic/tick() ..() holder.bodytemperature = round((holder.bodytemperature + T20C) / 2) + +/datum/modifier/exothermic + name = "heat resistance" + desc = "Your body lowers to room temperature." + + on_created_text = "You feel comfortable." + on_expired_text = "You feel.. still probably comfortable." + stacks = MODIFIER_STACK_EXTEND + +/datum/modifier/exothermic/tick() + ..() + if(holder.bodytemperature > T20C) + holder.bodytemperature = round((holder.bodytemperature + T20C) / 2) + +/datum/modifier/endothermic + name = "cold resistance" + desc = "Your body rises to room temperature." + + on_created_text = "You feel comfortable." + on_expired_text = "You feel.. still probably comfortable." + stacks = MODIFIER_STACK_EXTEND + +/datum/modifier/endothermic/tick() + ..() + if(holder.bodytemperature < T20C) + holder.bodytemperature = round((holder.bodytemperature + T20C) / 2) + +// Nullifies EMP. +/datum/modifier/faraday + name = "EMP shielding" + desc = "You are covered in some form of faraday shielding. EMPs have no effect." + mob_overlay_state = "electricity" + + on_created_text = "You feel a surge of energy, that fades to a calm tide." + on_expired_text = "You feel a longing for the flow of energy." + stacks = MODIFIER_STACK_EXTEND + + emp_modifier = 5 + +// Nullifies explosions. +/datum/modifier/blastshield + name = "Blast Shielding" + desc = "You are protected from explosions somehow." + mob_overlay_state = "electricity" + + on_created_text = "You feel a surge of energy, that fades to a stalwart hum." + on_expired_text = "You feel a longing for the flow of energy." + stacks = MODIFIER_STACK_EXTEND + + explosion_modifier = 3 + +// Kills on expiration. +/datum/modifier/doomed + name = "Doomed" + desc = "You are doomed." + + on_created_text = "You feel an overwhelming sense of dread." + on_expired_text = "You feel the life drain from your body." + stacks = MODIFIER_STACK_EXTEND + +/datum/modifier/doomed/on_expire() + if(holder.stat != DEAD) + holder.visible_message("\The [holder] collapses, the life draining from their body.") + holder.death() diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm index d3d84db25a6..1d373679eed 100644 --- a/code/modules/mob/living/carbon/brain/MMI.dm +++ b/code/modules/mob/living/carbon/brain/MMI.dm @@ -59,6 +59,7 @@ return user.visible_message("\The [user] sticks \a [O] into \the [src].") + B.preserved = TRUE brainmob = B.brainmob B.brainmob = null @@ -108,6 +109,7 @@ brainobj = null else //Or make a new one if empty. brain = new(user.loc) + brain.preserved = FALSE brainmob.container = null//Reset brainmob mmi var. brainmob.loc = brain//Throw mob into brain. living_mob_list -= brainmob//Get outta here diff --git a/code/modules/mob/living/carbon/human/ai_controlled/ai_controlled.dm b/code/modules/mob/living/carbon/human/ai_controlled/ai_controlled.dm index 431b7c44561..7b222d8a616 100644 --- a/code/modules/mob/living/carbon/human/ai_controlled/ai_controlled.dm +++ b/code/modules/mob/living/carbon/human/ai_controlled/ai_controlled.dm @@ -3,6 +3,8 @@ ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive + a_intent = I_HURT + var/generate_species = SPECIES_HUMAN var/generate_dead = FALSE diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 86050f85cf4..72c36df9994 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -80,8 +80,9 @@ verbs -= /mob/living/carbon/proc/release_control callHook("death", list(src, gibbed)) - + if(mind) + // SSgame_master.adjust_danger(gibbed ? 40 : 20) // VOREStation Edit - We don't use SSgame_master yet. for(var/mob/observer/dead/O in mob_list) if(O.client && O.client.is_preference_enabled(/datum/client_preference/show_dsay)) to_chat(O, "[src] has died in [get_area(src)]. [ghost_follow_link(src, O)] ") diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 557a3dd83b3..642eaa2c4f8 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -100,6 +100,15 @@ if(!blinded) flash_eyes() + for(var/datum/modifier/M in modifiers) + if(!isnull(M.explosion_modifier)) + severity = CLAMP(severity + M.explosion_modifier, 1, 4) + + severity = round(severity) + + if(severity > 3) + return + var/shielded = 0 var/b_loss = null var/f_loss = null diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 2d816a9a941..894e3cfd80b 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -87,6 +87,9 @@ if(!client) species.handle_npc(src) + else if(stat == DEAD && !stasis) + handle_defib_timer() + if(!handle_some_updates()) return //We go ahead and process them 5 times for HUD images and other stuff though. @@ -1826,5 +1829,15 @@ traumatic_shock = 0 ..() +/mob/living/carbon/human/proc/handle_defib_timer() + if(!should_have_organ(O_BRAIN)) + return // No brain. + + var/obj/item/organ/internal/brain/brain = internal_organs_by_name[O_BRAIN] + if(!brain) + return // Still no brain. + + brain.tick_defib_timer() + #undef HUMAN_MAX_OXYLOSS #undef HUMAN_CRIT_MAX_OXYLOSS diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm index fe1edb30a10..5950d069d5d 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm @@ -101,7 +101,7 @@ /datum/trait/gem_eater name = "Expensive Taste" - desc = "There's nothing that sates the appetite better than precious gems, exotic or rare minerals and you have damn fine taste. Anything else is beneath you." + desc = "You only gain nutrition from ore. There's nothing that sates the appetite better than precious gems, exotic or rare minerals and you have damn fine taste. Anything else is beneath you." cost = 0 var_changes = list("gets_food_nutrition" = 0, "eat_ore" = 1) //The verb is given in human.dm diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 4a03fd6adf3..2476925fd25 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1195,7 +1195,7 @@ default behaviour is: var/matrix/M = matrix() M.Scale(desired_scale_x, desired_scale_y) M.Translate(0, 16*(desired_scale_y-1)) - //animate(src, transform = M, time = 10) //VOREStation edit + src.transform = M //VOREStation edit // This handles setting the client's color variable, which makes everything look a specific color. // This proc is here so it can be called without needing to check if the client exists, or if the client relogs. diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 0184a54d594..428cff36593 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -167,6 +167,15 @@ /mob/living/emp_act(severity) var/list/L = src.get_contents() + + if(LAZYLEN(modifiers)) + for(var/datum/modifier/M in modifiers) + if(!isnull(M.emp_modifier)) + severity = CLAMP(severity + M.emp_modifier, 1, 5) + + if(severity == 5) // Effectively nullified. + return + for(var/obj/O in L) O.emp_act(severity) ..() @@ -206,6 +215,9 @@ var/soaked = get_armor_soak(def_zone, armor_check, armor_pen) var/absorb = run_armor_check(def_zone, armor_check, armor_pen) + if(ai_holder) + ai_holder.react_to_attack(B) + apply_damage(damage, damage_type, def_zone, absorb, soaked) /mob/living/proc/resolve_item_attack(obj/item/I, mob/living/user, var/target_zone) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index ff5c89e289e..c0b28cc1e2b 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -17,6 +17,7 @@ var/list/department_radio_keys = list( ":v" = "Service", ".v" = "Service", ":p" = "AI Private", ".p" = "AI Private", ":y" = "Explorer", ".y" = "Explorer", + ":t" = "Talon", ".t" = "Talon", //VOREStation Add, ":R" = "right ear", ".R" = "right ear", ":L" = "left ear", ".L" = "left ear", @@ -35,6 +36,7 @@ var/list/department_radio_keys = list( ":V" = "Service", ".V" = "Service", ":P" = "AI Private", ".P" = "AI Private", ":Y" = "Explorer", ".Y" = "Explorer", + ":T" = "Talon", ".T" = "Talon", //VOREStation Add, //kinda localization -- rastaf0 //same keys as above, but on russian keyboard layout. This file uses cp1251 as encoding. diff --git a/code/modules/mob/living/silicon/robot/robot_remote_control.dm b/code/modules/mob/living/silicon/robot/robot_remote_control.dm index 90d74b2638f..2f4ca0e56b8 100644 --- a/code/modules/mob/living/silicon/robot/robot_remote_control.dm +++ b/code/modules/mob/living/silicon/robot/robot_remote_control.dm @@ -26,6 +26,8 @@ GLOBAL_LIST_EMPTY(available_ai_shells) shell = TRUE braintype = "AI Shell" SetName("[modtype] AI Shell [num2text(ident)]") + rbPDA = new /obj/item/device/pda/ai/shell(src) + setup_PDA() GLOB.available_ai_shells |= src if(!QDELETED(camera)) camera.c_tag = real_name //update the camera name too diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 6c7456f80e3..6a74eb41d52 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -305,6 +305,15 @@ if(!blinded) flash_eyes() + for(var/datum/modifier/M in modifiers) + if(!isnull(M.explosion_modifier)) + severity = CLAMP(severity + M.explosion_modifier, 1, 4) + + severity = round(severity) + + if(severity > 3) + return + switch(severity) if(1.0) if (stat != 2) diff --git a/code/modules/mob/living/silicon/subystems.dm b/code/modules/mob/living/silicon/subystems.dm index ac10167c2dd..b03ab5eeb21 100644 --- a/code/modules/mob/living/silicon/subystems.dm +++ b/code/modules/mob/living/silicon/subystems.dm @@ -2,7 +2,7 @@ var/register_alarms = 1 var/datum/nano_module/alarm_monitor/all/alarm_monitor var/datum/nano_module/atmos_control/atmos_control - var/datum/nano_module/crew_monitor/crew_monitor + var/datum/nano_module/program/crew_monitor/crew_monitor var/datum/nano_module/law_manager/law_manager var/datum/nano_module/power_monitor/power_monitor var/datum/nano_module/rcon/rcon diff --git a/code/modules/mob/living/simple_mob/defense.dm b/code/modules/mob/living/simple_mob/defense.dm index 744237b21d2..c09bf272cc2 100644 --- a/code/modules/mob/living/simple_mob/defense.dm +++ b/code/modules/mob/living/simple_mob/defense.dm @@ -96,6 +96,16 @@ /mob/living/simple_mob/ex_act(severity) if(!blinded) flash_eyes() + + for(var/datum/modifier/M in modifiers) + if(!isnull(M.explosion_modifier)) + severity = CLAMP(severity + M.explosion_modifier, 1, 4) + + severity = round(severity) + + if(severity > 3) + return + var/armor = run_armor_check(def_zone = null, attack_flag = "bomb") var/bombdam = 500 switch (severity) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse_vr.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse_vr.dm index 73deeefdb54..3c74e3784fd 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse_vr.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse_vr.dm @@ -9,7 +9,6 @@ desc = "A small rodent, often seen hiding in maintenance areas and making a nuisance of itself. And stealing cheese, or annoying the chef. SQUEAK! <3" - size_multiplier = 0.25 movement_cooldown = 1.5 //roughly half the speed of a person universal_understand = 1 @@ -51,8 +50,3 @@ return 0 else ..() - -/mob/living/simple_mob/animal/passive/mouse/resize(var/new_size, var/animate = TRUE) - size_multiplier = max(size_multiplier + 0.75, 1) //keeps sprite sizes consistent, keeps multiplier values low - ..() - size_multiplier = max(size_multiplier - 0.75, 0.25) //the limits here ensure no negative values or infinite shrinkage \ 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 index 2d700646ae5..44ab4fdd09b 100644 --- a/code/modules/mob/living/simple_mob/subtypes/blob/blob.dm +++ b/code/modules/mob/living/simple_mob/subtypes/blob/blob.dm @@ -23,6 +23,7 @@ var/mob/observer/blob/overmind = null var/obj/structure/blob/factory/factory = null + var/datum/blob_type/blob_type = null // Used for the blob core items, as they have no overmind mob. mob_class = MOB_CLASS_SLIME ai_holder_type = /datum/ai_holder/simple_mob/melee @@ -33,6 +34,8 @@ /mob/living/simple_mob/blob/update_icons() if(overmind) color = overmind.blob_type.complementary_color + else if(blob_type) + color = blob_type.complementary_color else color = null ..() @@ -40,6 +43,8 @@ /mob/living/simple_mob/blob/Destroy() if(overmind) overmind.blob_mobs -= src + if(blob_type) + blob_type = null return ..() /mob/living/simple_mob/blob/blob_act(obj/structure/blob/B) @@ -59,4 +64,17 @@ /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 + return ..() + +/mob/living/simple_mob/blob/IIsAlly(mob/living/L) + var/ally = ..(L) + if(!ally) + var/list/items = L.get_all_held_items() + for(var/obj/item/I in items) + if(istype(I, /obj/item/weapon/blobcore_chunk)) + var/obj/item/weapon/blobcore_chunk/BC = I + if(!overmind || (BC.blob_type && overmind.blob_type.type == BC.blob_type.type)) + ally = TRUE + break + + return ally diff --git a/code/modules/mob/living/simple_mob/subtypes/blob/spore.dm b/code/modules/mob/living/simple_mob/subtypes/blob/spore.dm index 29663f9e2cb..879db190d86 100644 --- a/code/modules/mob/living/simple_mob/subtypes/blob/spore.dm +++ b/code/modules/mob/living/simple_mob/subtypes/blob/spore.dm @@ -1,148 +1,155 @@ -// 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("slammed 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("clawed") - - 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 +// 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("slammed 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 if(blob_type) + color = 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(overmind) + overmind.blob_type.on_spore_lifetick(src) + + 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("clawed") + + 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 diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 209516ec882..bfdc39b25ea 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -19,6 +19,7 @@ /mob/new_player/New() mob_list += src + initialized = TRUE // Explicitly don't use Initialize(). New players join super early and use New() /mob/new_player/verb/new_player_panel() set src = usr @@ -79,15 +80,17 @@ /mob/new_player/Stat() ..() - if(statpanel("Lobby") && ticker) - if(ticker.hide_mode) - stat("Game Mode:", "Secret") - else - if(ticker.hide_mode == 0) - stat("Game Mode:", "[config.mode_names[master_mode]]") // Old setting for showing the game mode + if(statpanel("Lobby") && SSticker) + stat("Game Mode:", SSticker.hide_mode ? "Secret" : "[config.mode_names[master_mode]]") - if(ticker.current_state == GAME_STATE_PREGAME) - stat("Time To Start:", "[ticker.pregame_timeleft][round_progressing ? "" : " (DELAYED)"]") + if(SSvote.mode) + stat("Vote: [capitalize(SSvote.mode)]", "Time Left: [SSvote.time_remaining] s") + + if(SSticker.current_state == GAME_STATE_INIT) + stat("Time To Start:", "Server Initializing") + + else if(SSticker.current_state == GAME_STATE_PREGAME) + stat("Time To Start:", "[round(SSticker.pregame_timeleft,1)][round_progressing ? "" : " (DELAYED)"]") stat("Players: [totalPlayers]", "Players Ready: [totalPlayersReady]") totalPlayers = 0 totalPlayersReady = 0 @@ -368,8 +371,13 @@ //Find our spawning point. var/list/join_props = job_master.LateSpawn(client, rank) + + if(!join_props) + return + var/turf/T = join_props["turf"] var/join_message = join_props["msg"] + var/announce_channel = join_props["channel"] || "Common" if(!T || !join_message) return 0 @@ -419,18 +427,19 @@ //Grab some data from the character prefs for use in random news procs. - AnnounceArrival(character, rank, join_message) + AnnounceArrival(character, rank, join_message, announce_channel, character.z) else - AnnounceCyborg(character, rank, join_message) + AnnounceCyborg(character, rank, join_message, announce_channel, character.z) qdel(src) -/mob/new_player/proc/AnnounceCyborg(var/mob/living/character, var/rank, var/join_message) +/mob/new_player/proc/AnnounceCyborg(var/mob/living/character, var/rank, var/join_message, var/channel, var/zlevel) if (ticker.current_state == GAME_STATE_PLAYING) + var/list/zlevels = zlevel ? using_map.get_map_levels(zlevel, TRUE) : null if(character.mind.role_alt_title) rank = character.mind.role_alt_title // can't use their name here, since cyborg namepicking is done post-spawn, so we'll just say "A new Cyborg has arrived"/"A new Android has arrived"/etc. - global_announcer.autosay("A new[rank ? " [rank]" : " visitor" ] [join_message ? join_message : "has arrived on the station"].", "Arrivals Announcement Computer") + global_announcer.autosay("A new[rank ? " [rank]" : " visitor" ] [join_message ? join_message : "has arrived on the station"].", "Arrivals Announcement Computer", channel, zlevels) /mob/new_player/proc/LateChoices() var/name = client.prefs.be_random_name ? "friend" : client.prefs.real_name @@ -450,6 +459,8 @@ dat += "Choose from the following open/valid positions:
    " dat += "[show_hidden_jobs ? "Hide":"Show"] Hidden Jobs.
    " + + var/deferred = "" for(var/datum/job/job in job_master.occupations) if(job && IsJobAvailable(job.title)) // Checks for jobs with minimum age requirements @@ -463,9 +474,17 @@ continue var/active = 0 // Only players with the job assigned and AFK for less than 10 minutes count as active - for(var/mob/M in player_list) if(M.mind && M.client && M.mind.assigned_role == job.title && M.client.inactivity <= 10 * 60 * 10) + for(var/mob/M in player_list) if(M.mind && M.client && M.mind.assigned_role == job.title && M.client.inactivity <= 10 MINUTES) active++ - dat += "[job.title] ([job.current_positions]) (Active: [active])
    " + + var/string = "[job.title] ([job.current_positions]) (Active: [active])
    " + + if(job.offmap_spawn) //At the bottom + deferred += string + else + dat += string + + dat += deferred dat += "" src << browse(dat, "window=latechoices;size=300x640;can_close=1") diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 49489011219..81475ff2abe 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -194,6 +194,8 @@ b_skin = blue /datum/preferences/proc/dress_preview_mob(var/mob/living/carbon/human/mannequin) + if(!mannequin.dna) // Special handling for preview icons before SSAtoms has initailized. + mannequin.dna = new /datum/dna(null) copy_to(mannequin, TRUE) if(!equip_preview_mob) diff --git a/code/modules/modular_computers/computers/subtypes/dev_console.dm b/code/modules/modular_computers/computers/subtypes/dev_console.dm index 32f24b6001d..d7dbeed75d3 100644 --- a/code/modules/modular_computers/computers/subtypes/dev_console.dm +++ b/code/modules/modular_computers/computers/subtypes/dev_console.dm @@ -1,7 +1,7 @@ /obj/item/modular_computer/console name = "console" desc = "A stationary computer." - icon = 'icons/obj/modular_console_vr.dmi' //VOREStation Edit + icon = 'icons/obj/modular_console.dmi' icon_state = "console" icon_state_unpowered = "console" icon_state_screensaver = "standby" diff --git a/code/modules/modular_computers/computers/subtypes/dev_laptop.dm b/code/modules/modular_computers/computers/subtypes/dev_laptop.dm index 846759c8ad7..156d67525b5 100644 --- a/code/modules/modular_computers/computers/subtypes/dev_laptop.dm +++ b/code/modules/modular_computers/computers/subtypes/dev_laptop.dm @@ -4,7 +4,7 @@ desc = "A portable computer." hardware_flag = PROGRAM_LAPTOP icon_state_unpowered = "laptop-open" - icon = 'icons/obj/modular_laptop_vr.dmi' //VOREStation Edit + icon = 'icons/obj/modular_laptop.dmi' icon_state = "laptop-open" icon_state_screensaver = "standby" base_idle_power_usage = 25 diff --git a/code/modules/modular_computers/computers/subtypes/preset_tablet_vr.dm b/code/modules/modular_computers/computers/subtypes/preset_tablet_vr.dm index 3bbc7a396ba..9a879286189 100644 --- a/code/modules/modular_computers/computers/subtypes/preset_tablet_vr.dm +++ b/code/modules/modular_computers/computers/subtypes/preset_tablet_vr.dm @@ -1,7 +1,7 @@ /obj/item/modular_computer/tablet/preset/custom_loadout/rugged name = "rugged tablet computer" desc = "A rugged tablet computer." - icon = 'icons/obj/modular_tablet_vr.dmi' + icon = 'icons/obj/modular_tablet.dmi' icon_state = "rugged" icon_state_unpowered = "rugged" max_damage = 300 @@ -19,7 +19,7 @@ /obj/item/modular_computer/tablet/preset/custom_loadout/elite name = "elite tablet computer" desc = "A more expensive tablet computer." - icon = 'icons/obj/modular_tablet_vr.dmi' + icon = 'icons/obj/modular_tablet.dmi' icon_state = "elite" icon_state_unpowered = "elite" @@ -37,7 +37,7 @@ /obj/item/modular_computer/tablet/preset/custom_loadout/hybrid name = "hybrid tablet computer" desc = "A human/alien hybrid tech tablet computer." - icon = 'icons/obj/modular_tablet_vr.dmi' + icon = 'icons/obj/modular_tablet.dmi' icon_state = "hybrid" icon_state_unpowered = "hybrid" diff --git a/code/modules/modular_computers/file_system/programs/command/comm.dm b/code/modules/modular_computers/file_system/programs/command/comm.dm index 71e7179566b..fc2efa88202 100644 --- a/code/modules/modular_computers/file_system/programs/command/comm.dm +++ b/code/modules/modular_computers/file_system/programs/command/comm.dm @@ -268,7 +268,7 @@ var/datum/signal/status_signal = new status_signal.source = src - status_signal.transmission_method = 1 + status_signal.transmission_method = TRANSMISSION_RADIO status_signal.data["command"] = command switch(command) diff --git a/code/modules/modular_computers/file_system/programs/engineering/alarm_monitor.dm b/code/modules/modular_computers/file_system/programs/engineering/alarm_monitor.dm index c8870347543..8c03238bff8 100644 --- a/code/modules/modular_computers/file_system/programs/engineering/alarm_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/alarm_monitor.dm @@ -61,31 +61,35 @@ AH.unregister_alarm(object) /datum/nano_module/alarm_monitor/proc/all_alarms() + var/z = get_z(nano_host()) var/list/all_alarms = new() for(var/datum/alarm_handler/AH in alarm_handlers) - all_alarms += AH.visible_alarms() + all_alarms += AH.visible_alarms(z) return all_alarms /datum/nano_module/alarm_monitor/proc/major_alarms() + var/z = get_z(nano_host()) var/list/all_alarms = new() for(var/datum/alarm_handler/AH in alarm_handlers) - all_alarms += AH.major_alarms() + all_alarms += AH.major_alarms(z) return all_alarms // Modified version of above proc that uses slightly less resources, returns 1 if there is a major alarm, 0 otherwise. /datum/nano_module/alarm_monitor/proc/has_major_alarms() + var/z = get_z(nano_host()) for(var/datum/alarm_handler/AH in alarm_handlers) - if(AH.has_major_alarms()) + if(AH.has_major_alarms(z)) return 1 return 0 /datum/nano_module/alarm_monitor/proc/minor_alarms() + var/z = get_z(nano_host()) var/list/all_alarms = new() for(var/datum/alarm_handler/AH in alarm_handlers) - all_alarms += AH.minor_alarms() + all_alarms += AH.minor_alarms(z) return all_alarms @@ -104,9 +108,10 @@ var/list/data = host.initial_data() var/categories[0] + var/z = get_z(nano_host()) for(var/datum/alarm_handler/AH in alarm_handlers) categories[++categories.len] = list("category" = AH.category, "alarms" = list()) - for(var/datum/alarm/A in AH.major_alarms()) + for(var/datum/alarm/A in AH.visible_alarms(z)) var/cameras[0] var/lost_sources[0] @@ -118,7 +123,7 @@ lost_sources[++lost_sources.len] = AS.source_name categories[categories.len]["alarms"] += list(list( - "name" = sanitize(A.alarm_name()), + "name" = sanitize("[A.alarm_name()]" + "[A.max_severity() > 1 ? "(MAJOR)" : ""]"), "origin_lost" = A.origin == null, "has_cameras" = cameras.len, "cameras" = cameras, diff --git a/code/modules/modular_computers/file_system/programs/engineering/atmos_control.dm b/code/modules/modular_computers/file_system/programs/engineering/atmos_control.dm index 776e73ec7a5..bfcaadee3e9 100644 --- a/code/modules/modular_computers/file_system/programs/engineering/atmos_control.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/atmos_control.dm @@ -47,12 +47,17 @@ /datum/nano_module/atmos_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state) var/list/data = host.initial_data() var/alarms[0] - var/turf/T = get_turf(nano_host()) + + var/z = get_z(nano_host()) + var/list/map_levels = using_map.get_map_levels(z) + data["map_levels"] = map_levels // TODO: Move these to a cache, similar to cameras for(var/obj/machinery/alarm/alarm in (monitored_alarms.len ? monitored_alarms : machines)) if(!monitored_alarms.len && alarm.alarms_hidden) continue + if(!(alarm.z in map_levels)) + continue alarms[++alarms.len] = list( "name" = sanitize(alarm.name), "ref"= "\ref[alarm]", @@ -61,7 +66,6 @@ "y" = alarm.y, "z" = alarm.z) data["alarms"] = alarms - data["map_levels"] = using_map.get_map_levels(T.z) ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) if(!ui) diff --git a/code/modules/modular_computers/file_system/programs/engineering/power_monitor.dm b/code/modules/modular_computers/file_system/programs/engineering/power_monitor.dm index 32117e845cb..b5c086dc260 100644 --- a/code/modules/modular_computers/file_system/programs/engineering/power_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/power_monitor.dm @@ -53,10 +53,15 @@ var/list/sensors = list() // Focus: If it remains null if no sensor is selected and UI will display sensor list, otherwise it will display sensor reading. var/obj/machinery/power/sensor/focus = null - var/turf/T = get_turf(nano_host()) + + var/z = get_z(nano_host()) + var/list/map_levels = using_map.get_map_levels(z) + data["map_levels"] = map_levels // Build list of data from sensor readings. for(var/obj/machinery/power/sensor/S in grid_sensors) + if(!(S.z in map_levels)) + continue sensors.Add(list(list( "name" = S.name_tag, "alarm" = S.check_grid_warning() @@ -67,7 +72,6 @@ data["all_sensors"] = sensors if(focus) data["focus"] = focus.return_reading_data() - data["map_levels"] = using_map.get_map_levels(T.z) ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) diff --git a/code/modules/modular_computers/file_system/programs/engineering/rcon_console.dm b/code/modules/modular_computers/file_system/programs/engineering/rcon_console.dm index d5ee88b6700..7603b1115e3 100644 --- a/code/modules/modular_computers/file_system/programs/engineering/rcon_console.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/rcon_console.dm @@ -122,11 +122,19 @@ // Description: Refreshes local list of known devices. /datum/nano_module/rcon/proc/FindDevices() known_SMESs = new /list() + + var/z = get_z(nano_host()) + var/list/map_levels = using_map.get_map_levels(z) + for(var/obj/machinery/power/smes/buildable/SMES in machines) + if(!(SMES.z in map_levels)) + continue if(SMES.RCon_tag && (SMES.RCon_tag != "NO_TAG") && SMES.RCon) known_SMESs.Add(SMES) known_breakers = new /list() for(var/obj/machinery/power/breakerbox/breaker in machines) + if(!(breaker.z in map_levels)) + continue if(breaker.RCon_tag != "NO_TAG") known_breakers.Add(breaker) diff --git a/code/modules/modular_computers/file_system/programs/engineering/supermatter_monitor.dm b/code/modules/modular_computers/file_system/programs/engineering/supermatter_monitor.dm index af0489a953c..6939a44dffe 100644 --- a/code/modules/modular_computers/file_system/programs/engineering/supermatter_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/supermatter_monitor.dm @@ -41,10 +41,10 @@ // Refreshes list of active supermatter crystals /datum/nano_module/supermatter_monitor/proc/refresh() supermatters = list() - var/turf/T = get_turf(nano_host()) - if(!T) + var/z = get_z(nano_host()) + if(!z) return - var/valid_z_levels = (GetConnectedZlevels(T.z) & using_map.station_levels) + var/valid_z_levels = using_map.get_map_levels(z) for(var/obj/machinery/power/supermatter/S in machines) // Delaminating, not within coverage, not on a tile. if(S.grav_pulling || S.exploded || !(S.z in valid_z_levels) || !istype(S.loc, /turf/)) diff --git a/code/modules/modular_computers/file_system/programs/generic/camera.dm b/code/modules/modular_computers/file_system/programs/generic/camera.dm index a722dea6b6b..e07d9ec293f 100644 --- a/code/modules/modular_computers/file_system/programs/generic/camera.dm +++ b/code/modules/modular_computers/file_system/programs/generic/camera.dm @@ -15,6 +15,12 @@ return access_research if(NETWORK_ERT) return access_cent_specops + //VOREStation Add Start + if(NETWORK_TALON_SHIP) + return access_talon + if(NETWORK_TALON_HELMETS) + return access_talon + //VOREStation Add End if(network in using_map.station_networks) return access_security // Default for all other station networks @@ -62,8 +68,10 @@ data["networks"] = all_networks + var/list/map_levels = using_map.get_map_levels(get_z(nano_host()), TRUE) + if(current_network) - data["cameras"] = camera_repository.cameras_in_network(current_network) + data["cameras"] = camera_repository.cameras_in_network(current_network, map_levels) ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) diff --git a/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm b/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm index 11050519973..2b259519265 100644 --- a/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm +++ b/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm @@ -1,7 +1,7 @@ /datum/computer_file/program/suit_sensors filename = "sensormonitor" filedesc = "Suit Sensors Monitoring" - nanomodule_path = /datum/nano_module/crew_monitor + nanomodule_path = /datum/nano_module/program/crew_monitor program_icon_state = "crew" program_key_state = "med_key" program_menu_icon = "heart" @@ -12,13 +12,10 @@ size = 11 - - - -/datum/nano_module/crew_monitor +/datum/nano_module/program/crew_monitor name = "Crew monitor" -/datum/nano_module/crew_monitor/Topic(href, href_list) +/datum/nano_module/program/crew_monitor/Topic(href, href_list) if(..()) return 1 var/turf/T = get_turf(nano_host()) // TODO: Allow setting any using_map.contact_levels from the interface. if (!T || !(T.z in using_map.player_levels)) @@ -32,20 +29,25 @@ AI.ai_actual_track(H) return 1 -/datum/nano_module/crew_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) +/datum/nano_module/program/crew_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) var/list/data = host.initial_data() - var/turf/T = get_turf(nano_host()) data["isAI"] = isAI(user) - data["map_levels"] = using_map.get_map_levels(T.z, FALSE) + + var/z = get_z(nano_host()) + var/list/map_levels = using_map.get_map_levels(z, TRUE) + data["map_levels"] = map_levels + data["crewmembers"] = list() - for(var/z in data["map_levels"]) // VOREStation Edit - data["crewmembers"] += crew_repository.health_data(z) + for(var/zlevel in map_levels) + data["crewmembers"] += crew_repository.health_data(zlevel) if(!data["map_levels"].len) to_chat(user, "The crew monitor doesn't seem like it'll work here.") - if(ui) // VOREStation Addition - ui.close() // VOREStation Addition + if(program) + program.kill_program() + else if(ui) + ui.close() return ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) @@ -65,7 +67,7 @@ // should make the UI auto-update; doesn't seem to? ui.set_auto_update(1) -/*/datum/nano_module/crew_monitor/proc/scan() +/*/datum/nano_module/program/crew_monitor/proc/scan() for(var/mob/living/carbon/human/H in mob_list) if(istype(H.w_uniform, /obj/item/clothing/under)) var/obj/item/clothing/under/C = H.w_uniform diff --git a/code/modules/modular_computers/file_system/programs/ships/navigation.dm b/code/modules/modular_computers/file_system/programs/ships/navigation.dm new file mode 100644 index 00000000000..dbe7aed5def --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/ships/navigation.dm @@ -0,0 +1,63 @@ +/datum/computer_file/program/ship_nav + filename = "navviewer" + filedesc = "Ship Navigational Screen" + nanomodule_path = /datum/nano_module/program/ship/nav + program_icon_state = "helm" + program_key_state = "generic_key" + program_menu_icon = "search" + extended_desc = "Displays a ship's location in the sector." + required_access = null + requires_ntnet = 1 + network_destination = "ship position sensors" + size = 4 + +/datum/nano_module/program/ship/nav + name = "Navigation Display" + +/datum/nano_module/program/ship/nav/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + if(!linked) + to_chat(user, "You don't appear to be on a spaceship...") + if(program) + program.kill_program() + else if(ui) + ui.close() + return + + var/list/data = list() + if(program) + data = program.get_header_data() + + var/turf/T = get_turf(linked) + var/obj/effect/overmap/visitable/sector/current_sector = locate() in T + + data["sector"] = current_sector ? current_sector.name : "Deep Space" + data["sector_info"] = current_sector ? current_sector.desc : "Not Available" + data["s_x"] = linked.x + data["s_y"] = linked.y + data["speed"] = round(linked.get_speed()*1000, 0.01) + data["accel"] = round(linked.get_acceleration()*1000, 0.01) + data["heading"] = linked.get_heading_degrees() + data["viewing"] = viewing_overmap(user) + + if(linked.get_speed()) + data["ETAnext"] = "[round(linked.ETA()/10)] seconds" + else + data["ETAnext"] = "N/A" + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "nav.tmpl", "[linked.name] Navigation Screen", 380, 530, state = state) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/datum/nano_module/program/ship/nav/OnTopic(var/mob/user, var/list/href_list) + if(..()) + return TOPIC_HANDLED + + if (!linked) + return TOPIC_NOACTION + + if (href_list["viewing"]) + viewing_overmap(user) ? unlook(user) : look(user) + return TOPIC_REFRESH diff --git a/code/modules/modular_computers/file_system/programs/ships/ship.dm b/code/modules/modular_computers/file_system/programs/ships/ship.dm new file mode 100644 index 00000000000..1db653153be --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/ships/ship.dm @@ -0,0 +1,87 @@ +/datum/nano_module/program/ship + var/obj/effect/overmap/visitable/ship/linked + var/list/viewers + var/extra_view = 0 + +/datum/nano_module/program/ship/New() + ..() + sync_linked() + if(linked) + name = "[linked.name] [name]" + +/datum/nano_module/program/ship/Destroy() + if(LAZYLEN(viewers)) + for(var/weakref/W in viewers) + var/M = W.resolve() + if(M) + unlook(M) + . = ..() + +/datum/nano_module/program/ship/proc/sync_linked() + var/obj/effect/overmap/visitable/ship/sector = get_overmap_sector(get_z(nano_host())) + if(!sector) + return + return attempt_hook_up_recursive(sector) + +/datum/nano_module/program/ship/proc/attempt_hook_up_recursive(obj/effect/overmap/visitable/ship/sector) + if(attempt_hook_up(sector)) + return sector + for(var/obj/effect/overmap/visitable/ship/candidate in sector) + if((. = .(candidate))) + return + +/datum/nano_module/program/ship/proc/attempt_hook_up(obj/effect/overmap/visitable/ship/sector) + if(!istype(sector)) + return + if(sector.check_ownership(nano_host())) + linked = sector + return 1 + +/datum/nano_module/program/ship/proc/look(var/mob/user) + if(linked) + user.machine = nano_host() + user.reset_view(linked) + user.set_viewsize(world.view + extra_view) + GLOB.moved_event.register(user, src, /datum/nano_module/program/ship/proc/unlook) + LAZYDISTINCTADD(viewers, weakref(user)) + +/datum/nano_module/program/ship/proc/unlook(var/mob/user) + user.reset_view() + user.set_viewsize() // reset to default + GLOB.moved_event.unregister(user, src, /datum/nano_module/program/ship/proc/unlook) + LAZYREMOVE(viewers, weakref(user)) + +/datum/nano_module/program/ship/proc/viewing_overmap(mob/user) + return (weakref(user) in viewers) + +/datum/nano_module/program/ship/proc/DefaultTopicState() + return global.default_state + +/datum/nano_module/program/ship/Topic(var/href, var/href_list = list(), var/datum/topic_state/state) + if((. = ..())) + return + state = state || DefaultTopicState() || global.default_state + if(CanUseTopic(usr, state, href_list) == STATUS_INTERACTIVE) + CouldUseTopic(usr) + return OnTopic(usr, href_list, state) + CouldNotUseTopic(usr) + return TRUE + +/datum/nano_module/program/ship/proc/OnTopic(var/mob/user, var/href_list, var/datum/topic_state/state) + return TOPIC_NOACTION + +/datum/nano_module/program/ship/proc/CouldNotUseTopic(mob/user) + . = ..() + unlook(user) + +/datum/nano_module/program/ship/proc/CouldUseTopic(mob/user) + . = ..() + if(viewing_overmap(user)) + look(user) + +/datum/nano_module/program/ship/check_eye(var/mob/user) + if (!get_dist(user, nano_host()) > 1 || user.blinded || !linked ) + unlook(user) + return -1 + else + return 0 \ No newline at end of file diff --git a/code/modules/modular_computers/hardware/network_card.dm b/code/modules/modular_computers/hardware/network_card.dm index 69f4a8bb642..2f382e0f4d8 100644 --- a/code/modules/modular_computers/hardware/network_card.dm +++ b/code/modules/modular_computers/hardware/network_card.dm @@ -79,20 +79,25 @@ var/global/ntnet_card_uid = 1 return 0 if(holder2) - var/turf/T = get_turf(holder2) - if(!istype(T)) //no reception in nullspace + var/holderz = get_z(holder2) + if(!holderz) //no reception in nullspace return 0 - if(T.z in using_map.station_levels) - // Computer is on station. Low/High signal depending on what type of network card you have - if(long_range) - return 2 - else - return 1 - if(T.z in using_map.contact_levels) //not on station, but close enough for radio signal to travel - if(long_range) // Computer is not on station, but it has upgraded network card. Low signal. - return 1 - - return 0 // Computer is not on station and does not have upgraded network card. No signal. + var/list/zlevels_in_range = using_map.get_map_levels(holderz, long_range) + var/best = 0 + for(var/relay in ntnet_global.relays) + var/obj/machinery/ntnet_relay/R = relay + //Relay is down + if(!R.operable()) + continue + //We're on the same z + if(R.z == holderz) + best = 2 + break // No point in going further + //Not on the same z but within range anyway + if(R.z in zlevels_in_range) + best = 1 + return best + return 0 // No computer! /obj/item/weapon/computer_hardware/network_card/Destroy() if(holder2 && (holder2.network_card == src)) diff --git a/code/modules/multi-tile/multi-tile.dm b/code/modules/multi-tile/multi-tile.dm index b8dd9ef5124..3c590c5b6d4 100644 --- a/code/modules/multi-tile/multi-tile.dm +++ b/code/modules/multi-tile/multi-tile.dm @@ -11,6 +11,8 @@ var/list/checked_turfs = list() for(var/turf/T in locs) var/turf/Tcheck = get_step(T, stepdir) + if(!Tcheck) //Map edge + continue if(Tcheck in checked_turfs) continue if(Tcheck in locs) diff --git a/code/modules/multiz/open_space_controller.dm b/code/modules/multiz/open_space_controller.dm deleted file mode 100644 index e790f476dc0..00000000000 --- a/code/modules/multiz/open_space_controller.dm +++ /dev/null @@ -1,105 +0,0 @@ -// -// Controller handling icon updates of open space turfs -// - -/var/global/open_space_initialised = FALSE -/var/global/datum/controller/process/open_space/OS_controller = null -/var/global/image/over_OS_darkness = image('icons/turf/open_space.dmi', "black_open") - -/datum/controller/process/open_space - var/list/turfs_to_process = list() // List of turfs queued for update. - var/list/turfs_to_process_old = null // List of turfs currently being updated. - -/datum/controller/process/open_space/setup() - . = ..() - name = "openspace" - schedule_interval = world.tick_lag // every second - start_delay = 30 SECONDS - OS_controller = src - over_OS_darkness.plane = OVER_OPENSPACE_PLANE - over_OS_darkness.layer = MOB_LAYER - initialize_open_space() - - // Pre-process open space once once before the round starts. Wait 20 seconds so other stuff has time to finish. - spawn(200) - doWork(1) - -/datum/controller/process/open_space/copyStateFrom(var/datum/controller/process/open_space/other) - . = ..() - OS_controller = src - -/datum/controller/process/open_space/doWork() - // We use a different list so any additions to the update lists during a delay from scheck() - // don't cause things to be cut from the list without being updated. - turfs_to_process_old = turfs_to_process - turfs_to_process = list() - - for(last_object in turfs_to_process_old) - var/turf/T = last_object - if(!QDELETED(T)) - update_turf(T) - SCHECK - -/datum/controller/process/open_space/proc/update_turf(var/turf/T) - for(var/atom/movable/A in T) - A.fall() - T.update_icon() - -/datum/controller/process/open_space/proc/add_turf(var/turf/T, var/recursive = 0) - ASSERT(isturf(T)) - turfs_to_process += T - if(recursive > 0) - var/turf/above = GetAbove(T) - if(above && isopenspace(above)) - add_turf(above, recursive) - -// Do the initial updates of open space turfs when the game starts. This will lag! -/datum/controller/process/open_space/proc/initialize_open_space() - // Do initial setup from bottom to top. - for(var/zlevel = 1 to world.maxz) - for(var/turf/simulated/open/T in block(locate(1, 1, zlevel), locate(world.maxx, world.maxy, zlevel))) - add_turf(T) - open_space_initialised = TRUE - -/turf/Entered(atom/movable/AM) - . = ..() - if(open_space_initialised && !AM.invisibility && isobj(AM)) - var/turf/T = GetAbove(src) - if(isopenspace(T)) - // log_debug("[T] ([T.x],[T.y],[T.z]) queued for update for [src].Entered([AM])") - OS_controller.add_turf(T, 1) - -/turf/Exited(atom/movable/AM) - . = ..() - if(open_space_initialised && !AM.invisibility && isobj(AM)) - var/turf/T = GetAbove(src) - if(isopenspace(T)) - // log_debug("[T] ([T.x],[T.y],[T.z]) queued for update for [src].Exited([AM])") - OS_controller.add_turf(T, 1) - -/obj/update_icon() - . = ..() - if(open_space_initialised && !invisibility && isturf(loc)) - var/turf/T = GetAbove(src) - if(isopenspace(T)) - // log_debug("[T] ([T.x],[T.y],[T.z]) queued for update for [src].update_icon()") - OS_controller.add_turf(T, 1) - -// Ouch... this is painful. But is there any other way? -/* - No for now -/obj/New() - . = ..() - if(open_space_initialised && !invisibility) - var/turf/T = GetAbove(src) - if(isopenspace(T)) - // log_debug("[T] ([T.x],[T.y],[T.z]) queued for update for [src]New()") - OS_controller.add_turf(T, 1) -*/ - -// Just as New() we probably should hook Destroy() If we can think of something more efficient, lets hear it. -/obj/Destroy() - if(open_space_initialised && !invisibility && isturf(loc)) - var/turf/T = GetAbove(src) - if(isopenspace(T)) - OS_controller.add_turf(T, 1) - . = ..() // Important that this be at the bottom, or we will have been moved to nullspace. diff --git a/code/modules/multiz/pipes.dm b/code/modules/multiz/pipes.dm index 7b13845211a..237e38562e7 100644 --- a/code/modules/multiz/pipes.dm +++ b/code/modules/multiz/pipes.dm @@ -214,6 +214,26 @@ obj/machinery/atmospherics/pipe/zpipe/up/supply icon_connect_type = "-supply" color = PIPE_COLOR_BLUE +obj/machinery/atmospherics/pipe/zpipe/up/fuel + icon_state = "up-fuel" + name = "upwards fuel pipe" + desc = "A fuel pipe segment to connect upwards." + connect_types = CONNECT_TYPE_FUEL + piping_layer = PIPING_LAYER_FUEL + layer = PIPES_FUEL_LAYER + icon_connect_type = "-fuel" + color = PIPE_COLOR_YELLOW + +obj/machinery/atmospherics/pipe/zpipe/up/aux + icon_state = "up-aux" + name = "upwards aux pipe" + desc = "A aux pipe segment to connect upwards." + connect_types = CONNECT_TYPE_AUX + piping_layer = PIPING_LAYER_AUX + layer = PIPES_AUX_LAYER + icon_connect_type = "-aux" + color = PIPE_COLOR_CYAN + obj/machinery/atmospherics/pipe/zpipe/down/scrubbers icon_state = "down-scrubbers" name = "downwards scrubbers pipe" @@ -233,3 +253,23 @@ obj/machinery/atmospherics/pipe/zpipe/down/supply layer = PIPES_SUPPLY_LAYER icon_connect_type = "-supply" color = PIPE_COLOR_BLUE + +obj/machinery/atmospherics/pipe/zpipe/down/fuel + icon_state = "down-fuel" + name = "downwards fuel pipe" + desc = "A fuel pipe segment to connect downwards." + connect_types = CONNECT_TYPE_FUEL + piping_layer = PIPING_LAYER_FUEL + layer = PIPES_FUEL_LAYER + icon_connect_type = "-fuel" + color = PIPE_COLOR_YELLOW + +obj/machinery/atmospherics/pipe/zpipe/down/aux + icon_state = "down-aux" + name = "upwards aux pipe" + desc = "A aux pipe segment to connect upwards." + connect_types = CONNECT_TYPE_AUX + piping_layer = PIPING_LAYER_AUX + layer = PIPES_AUX_LAYER + icon_connect_type = "-aux" + color = PIPE_COLOR_CYAN \ No newline at end of file diff --git a/code/modules/multiz/turf.dm b/code/modules/multiz/turf.dm index 4daa773401a..2b280eaac17 100644 --- a/code/modules/multiz/turf.dm +++ b/code/modules/multiz/turf.dm @@ -30,6 +30,11 @@ var/turf/below +/turf/simulated/open/vacuum + oxygen = 0 + nitrogen = 0 + temperature = TCMB + /turf/simulated/open/post_change() ..() update() @@ -56,7 +61,8 @@ below.update_icon() // So the 'ceiling-less' overlay gets added. for(var/atom/movable/A in src) A.fall() - OS_controller.add_turf(src, 1) + if(GLOB.open_space_initialised) + SSopen_space.add_turf(src, TRUE) // override to make sure nothing is hidden /turf/simulated/open/levelupdate() @@ -95,6 +101,8 @@ if(O.invisibility) continue // Ignore objects that have any form of invisibility if(O.loc != below) continue // Ignore multi-turf objects not directly below var/image/temp2 = image(O, dir = O.dir, layer = O.layer) + if(temp2.icon == null) + temp2.icon_state = null temp2.plane = src.plane temp2.color = O.color temp2.overlays += O.overlays @@ -103,7 +111,7 @@ add_overlay(o_img) if(!below_is_open) - add_overlay(over_OS_darkness) + add_overlay(SSopen_space.over_OS_darkness) return 0 return PROCESS_KILL diff --git a/code/modules/nifsoft/software/06_screens.dm b/code/modules/nifsoft/software/06_screens.dm index 7c911623402..97f4c272a9b 100644 --- a/code/modules/nifsoft/software/06_screens.dm +++ b/code/modules/nifsoft/software/06_screens.dm @@ -5,7 +5,7 @@ access = access_medical cost = 625 p_drain = 0.025 - var/datum/nano_module/crew_monitor/arscreen + var/datum/nano_module/program/crew_monitor/arscreen New() ..() diff --git a/code/modules/organs/internal/brain.dm b/code/modules/organs/internal/brain.dm index abbf6940056..c697f9bea51 100644 --- a/code/modules/organs/internal/brain.dm +++ b/code/modules/organs/internal/brain.dm @@ -18,6 +18,22 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain) var/clone_source = FALSE var/mob/living/carbon/brain/brainmob = null var/can_assist = TRUE + var/defib_timer = -1 + +/obj/item/organ/internal/brain/process() + ..() + if(owner && owner.stat != DEAD) // So there's a lower risk of ticking twice. + tick_defib_timer() + +// This is called by `process()` when the owner is alive, or brain is not in a body, and by `Life()` directly when dead. +/obj/item/organ/internal/brain/proc/tick_defib_timer() + if(preserved) // In an MMI/ice box/etc. + return + + if(!owner || owner.stat == DEAD) + defib_timer = max(--defib_timer, 0) + else + defib_timer = min(++defib_timer, (config.defib_timer MINUTES) / 2) /obj/item/organ/internal/brain/proc/can_assist() return can_assist @@ -65,6 +81,7 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain) /obj/item/organ/internal/brain/New() ..() health = config.default_brain_health + defib_timer = (config.defib_timer MINUTES) / 2 spawn(5) if(brainmob && brainmob.client) brainmob.client.screen.len = null //clear the hud diff --git a/code/modules/overmap/_defines.dm b/code/modules/overmap/_defines.dm deleted file mode 100644 index 6cfde467938..00000000000 --- a/code/modules/overmap/_defines.dm +++ /dev/null @@ -1,145 +0,0 @@ -//How far from the edge of overmap zlevel could randomly placed objects spawn -#define OVERMAP_EDGE 2 - -#define SHIP_SIZE_TINY 1 -#define SHIP_SIZE_SMALL 2 -#define SHIP_SIZE_LARGE 3 - -//multipliers for max_speed to find 'slow' and 'fast' speeds for the ship -#define SHIP_SPEED_SLOW 1/(40 SECONDS) -#define SHIP_SPEED_FAST 3/(20 SECONDS)// 15 speed - -#define OVERMAP_WEAKNESS_NONE 0 -#define OVERMAP_WEAKNESS_FIRE 1 -#define OVERMAP_WEAKNESS_EMP 2 -#define OVERMAP_WEAKNESS_MINING 4 -#define OVERMAP_WEAKNESS_EXPLOSIVE 8 - -//Dimension of overmap (squares 4 lyfe) -var/global/list/map_sectors = list() - -/area/overmap/ - name = "System Map" - icon_state = "start" - requires_power = 0 - base_turf = /turf/unsimulated/map - -/turf/unsimulated/map - icon = 'icons/turf/space.dmi' - icon_state = "map" - initialized = FALSE // TODO - Fix unsimulated turf initialization so this override is not necessary! - -/turf/unsimulated/map/edge - opacity = 1 - density = 1 - -/turf/unsimulated/map/Initialize() - . = ..() - name = "[x]-[y]" - var/list/numbers = list() - - if(x == 1 || x == global.using_map.overmap_size) - numbers += list("[round(y/10)]","[round(y%10)]") - if(y == 1 || y == global.using_map.overmap_size) - numbers += "-" - if(y == 1 || y == global.using_map.overmap_size) - numbers += list("[round(x/10)]","[round(x%10)]") - - for(var/i = 1 to numbers.len) - var/image/I = image('icons/effects/numbers.dmi',numbers[i]) - I.pixel_x = 5*i - 2 - I.pixel_y = world.icon_size/2 - 3 - if(y == 1) - I.pixel_y = 3 - I.pixel_x = 5*i + 4 - if(y == global.using_map.overmap_size) - I.pixel_y = world.icon_size - 9 - I.pixel_x = 5*i + 4 - if(x == 1) - I.pixel_x = 5*i - 2 - if(x == global.using_map.overmap_size) - I.pixel_x = 5*i + 2 - add_overlay(I) - -//list used to track which zlevels are being 'moved' by the proc below -var/list/moving_levels = list() -//Proc to 'move' stars in spess -//yes it looks ugly, but it should only fire when state actually change. -//null direction stops movement -proc/toggle_move_stars(zlevel, direction) - if(!zlevel) - return - - if (moving_levels["[zlevel]"] != direction) - moving_levels["[zlevel]"] = direction - - var/list/spaceturfs = block(locate(1, 1, zlevel), locate(world.maxx, world.maxy, zlevel)) - for(var/turf/space/T in spaceturfs) - T.toggle_transit(direction) - CHECK_TICK -/* -//list used to cache empty zlevels to avoid nedless map bloat -var/list/cached_space = list() - -proc/overmap_spacetravel(var/turf/space/T, var/atom/movable/A) - var/obj/effect/map/M = map_sectors["[T.z]"] - if (!M) - return - var/mapx = M.x - var/mapy = M.y - var/nx = 1 - var/ny = 1 - var/nz = M.map_z - - if(T.x <= TRANSITIONEDGE) - nx = world.maxx - TRANSITIONEDGE - 2 - ny = rand(TRANSITIONEDGE + 2, world.maxy - TRANSITIONEDGE - 2) - mapx = max(1, mapx-1) - - else if (A.x >= (world.maxx - TRANSITIONEDGE - 1)) - nx = TRANSITIONEDGE + 2 - ny = rand(TRANSITIONEDGE + 2, world.maxy - TRANSITIONEDGE - 2) - mapx = min(world.maxx, mapx+1) - - else if (T.y <= TRANSITIONEDGE) - ny = world.maxy - TRANSITIONEDGE -2 - nx = rand(TRANSITIONEDGE + 2, world.maxx - TRANSITIONEDGE - 2) - mapy = max(1, mapy-1) - - else if (A.y >= (world.maxy - TRANSITIONEDGE - 1)) - ny = TRANSITIONEDGE + 2 - nx = rand(TRANSITIONEDGE + 2, world.maxx - TRANSITIONEDGE - 2) - mapy = min(world.maxy, mapy+1) - - testing("[A] moving from [M] ([M.x], [M.y]) to ([mapx],[mapy]).") - - var/turf/map = locate(mapx,mapy,OVERMAP_ZLEVEL) - var/obj/effect/map/TM = locate() in map - if(TM) - nz = TM.map_z - testing("Destination: [TM]") - else - if(cached_space.len) - var/obj/effect/map/sector/temporary/cache = cached_space[cached_space.len] - cached_space -= cache - nz = cache.map_z - cache.x = mapx - cache.y = mapy - testing("Destination: *cached* [TM]") - else - world.maxz++ - nz = world.maxz - TM = new /obj/effect/map/sector/temporary(mapx, mapy, nz) - testing("Destination: *new* [TM]") - - var/turf/dest = locate(nx,ny,nz) - if(dest) - A.loc = dest - - if(istype(M, /obj/effect/map/sector/temporary)) - var/obj/effect/map/sector/temporary/source = M - if (source.can_die()) - testing("Catching [M] for future use") - source.loc = null - cached_space += source -*/ \ No newline at end of file diff --git a/code/modules/overmap/champagne.dm b/code/modules/overmap/champagne.dm new file mode 100644 index 00000000000..463f18eb2b9 --- /dev/null +++ b/code/modules/overmap/champagne.dm @@ -0,0 +1,115 @@ +// +// Champagne bottle for creating new landable ship shuttles in game from scratch. +// Note: It depends on the area being sane. In theory players could use this to make pretty much any room a shuttle. +// +/obj/item/champagne + name = "bottle of champagne" + desc = "Made from grapes grown in the champagne asteroid belt, the bubbly liquid inside is softly glowing. Suitable for christening boats, not so much for drinking." + description_info = "This lets you create a new overmap shuttle from scratch. \ + The shuttle must already be constructed and have an area defined (use the blueprints). \ + Only a single area is supported (for now). Build a shuttle console and hit it with the bottle." + icon = 'icons/obj/drinks.dmi' + icon_state = "champagne" + attack_verb = list("attacked", "bonked", "hit") + var/min_name_len = 4 // Refuse if shuttle tag is shorter than this. + var/max_name_len = 32 // Refuse if shuttle tag is longer than this. + var/max_area_turfs = 256 // Refuse if area has more than this many turfs. + +/obj/item/champagne/afterattack(var/atom/A, mob/user as mob, proximity) + if(!proximity) + return + var/obj/machinery/computer/shuttle_control/explore/comp = A + if(!istype(comp)) + return + + if(comp.shuttle_tag) + to_chat(user, "[comp] is already configured to link with [comp.shuttle_tag]") + return + + user.visible_message("[user] lifts [src] bottle over [comp]!") + var/shuttle_name = input("Choose a name for the shuttle", "New Shuttle Name") as null|text + if(!shuttle_name || QDELETED(src) || QDELETED(comp) || comp.shuttle_tag || user.incapacitated()) + return // After input() safety re-checks + + // Tons of safety checks here. Make sure they don't destroy everything. + if(length(shuttle_name) < min_name_len || length(shuttle_name) > max_name_len) + to_chat(user, "Name length must be between [min_name_len] and [max_name_len].") + return + if(shuttle_name in SSshuttles.shuttles) + to_chat(user, "Invalid name: Already in use.") + return + + var/area/my_area = get_area(comp) + if(!my_area || istype(my_area, /area/space)) + to_chat(user, "[comp] must be in a valid area to become a shuttle.") + return + if(my_area in SSshuttles.shuttle_areas) + to_chat(user, "[comp] is already in a shuttle.") + return + // Count turfs in the area + var/list/turfs = get_area_turfs(my_area) + if(turfs.len > max_area_turfs) + to_chat(user, "The new shuttle area is too large.") + return + + var/turf/comp_turf = get_turf(comp) + var/datum/shuttle/autodock/S = create_landable_shuttle(shuttle_name, comp_turf, my_area) + playsound(src, 'sound/effects/Glassbr3.ogg', 100, 0) + user.visible_message("[user] smashes [src] on [comp]", + "You smash [src] on [comp], christening a new landable ship named [S.name]", + "You hear glass shattering") + log_and_message_admins("[key_name_admin(user)] Created a new shuttle [S.name]. [ADMIN_JMP(comp_turf)]") + spawn(1 SECOND) + playsound(comp_turf, 'sound/voice/Serithi/Shuttlehere.ogg', 75, 0) + qdel(src) + + return TRUE + +/obj/item/champagne/proc/create_landable_shuttle(var/shuttle_name, var/turf/start_loc, var/area/shuttle_area) + // First things first, create the starting location landmark. + // WARNING - We can't figure out a good base_area or base_turf from inspecttion, as the shuttle is already built! + // For now its going to just do world.area and z level base turf. Beware! + var/area/base_area = world.area + var/base_turf = get_base_turf(get_z(start_loc)) + var/obj/effect/shuttle_landmark/automatic/champagne/starting_landmark = new(start_loc, base_area, base_turf) + + // Okay first things first create the shuttle Override to no areas to prevent runtimes, then add them in. + var/datum/shuttle/autodock/overmap/shuttle = new /datum/shuttle/autodock/overmap{shuttle_area = list()}(shuttle_name, starting_landmark) + LAZYADD(shuttle.shuttle_area, shuttle_area) + shuttle.refresh_fuel_ports_list() // We added area, refresh + shuttle.set_docking_codes(null) // It doesn't get to magically know docking codes. + + // Unfortunately we can't simply call initialize_shuttle because it takes a typepath. + // I Don't want to rewrite that right now, so we must emulate. This is a special case anyway. + // Emulation of SSshuttles.initialize_shuttle(): All it does is add to shuttle areas and populate objects + SSshuttles.shuttle_areas |= shuttle.shuttle_area + shuttle.populate_shuttle_objects() + + // Okay now create the SHIP part + var/obj/effect/overmap/visitable/ship/landable/champagne/newship = new(start_loc, shuttle_name, shuttle_name) + // It automatically registers itself with SSshuttles + + log_debug("Created new ship [newship] for shuttle [shuttle] at landmark [starting_landmark]") + return shuttle + +// +// Shuttle landmark dynamically generated at runtime by champagne bottle. +// +/obj/effect/shuttle_landmark/automatic/champagne + flags = SLANDMARK_FLAG_ZERO_G // Don't auto-set + +/obj/effect/shuttle_landmark/automatic/champagne/Initialize(mapload, base_area, base_turf) + src.base_turf = base_turf + src.base_area = base_area + . = ..() + +// +// Landable ship dynamically created at runtime by champagne bottle. +// +/obj/effect/overmap/visitable/ship/landable/champagne + desc = "Newly minted space faring vessel." + +/obj/effect/overmap/visitable/ship/landable/champagne/Initialize(mapload, _name, _shuttle) + src.name = _name + src.shuttle = _shuttle + . = ..() diff --git a/code/modules/overmap/events/overmap_event.dm b/code/modules/overmap/events/overmap_event.dm index 7529adb0323..9add25a5c1b 100644 --- a/code/modules/overmap/events/overmap_event.dm +++ b/code/modules/overmap/events/overmap_event.dm @@ -13,7 +13,6 @@ var/list/event_icon_states // Randomly picked from var/difficulty = EVENT_LEVEL_MODERATE var/weaknesses //if the BSA can destroy them and with what - var/list/victims //basically cached events on which Z level /obj/effect/overmap/event/Initialize() . = ..() diff --git a/code/modules/overmap/helpers.dm b/code/modules/overmap/helpers.dm new file mode 100644 index 00000000000..e07be07ac02 --- /dev/null +++ b/code/modules/overmap/helpers.dm @@ -0,0 +1,5 @@ +/proc/get_overmap_sector(var/z) + if(using_map.use_overmap) + return map_sectors["[z]"] + else + return null diff --git a/code/modules/overmap/overmap_shuttle.dm b/code/modules/overmap/overmap_shuttle.dm index c3195c99de1..b614137db4f 100644 --- a/code/modules/overmap/overmap_shuttle.dm +++ b/code/modules/overmap/overmap_shuttle.dm @@ -1,4 +1,4 @@ -#define waypoint_sector(waypoint) map_sectors["[waypoint.z]"] +#define waypoint_sector(waypoint) get_overmap_sector(get_z(waypoint)) /datum/shuttle/autodock/overmap warmup_time = 10 diff --git a/code/modules/overmap/sectors.dm b/code/modules/overmap/sectors.dm index f4378746090..9c3408eabfd 100644 --- a/code/modules/overmap/sectors.dm +++ b/code/modules/overmap/sectors.dm @@ -82,7 +82,7 @@ //Helper for init. /obj/effect/overmap/visitable/proc/check_ownership(obj/object) - if((object.z in map_z) && !(get_area(object) in SSshuttles.shuttle_areas)) + if((get_z(object) in map_z) && !(get_area(object) in SSshuttles.shuttle_areas)) return 1 //If shuttle_name is false, will add to generic waypoints; otherwise will add to restricted. Does not do checks. diff --git a/code/modules/overmap/ships/computers/engine_control.dm b/code/modules/overmap/ships/computers/engine_control.dm index 9c77e1b995e..c07fdf45cbd 100644 --- a/code/modules/overmap/ships/computers/engine_control.dm +++ b/code/modules/overmap/ships/computers/engine_control.dm @@ -4,6 +4,7 @@ name = "engine control console" icon_keyboard = "tech_key" icon_screen = "engines" + circuit = /obj/item/weapon/circuitboard/engine var/display_state = "status" /obj/machinery/computer/ship/engines/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) diff --git a/code/modules/overmap/ships/computers/helm.dm b/code/modules/overmap/ships/computers/helm.dm index cd57485cb7c..70deb4347bf 100644 --- a/code/modules/overmap/ships/computers/helm.dm +++ b/code/modules/overmap/ships/computers/helm.dm @@ -19,6 +19,7 @@ GLOBAL_LIST_EMPTY(all_waypoints) icon_keyboard = "teleport_key" icon_screen = "helm" light_color = "#7faaff" + circuit = /obj/item/weapon/circuitboard/helm core_skill = /datum/skill/pilot var/autopilot = 0 var/list/known_sectors = list() @@ -226,6 +227,7 @@ GLOBAL_LIST_EMPTY(all_waypoints) name = "navigation console" icon_keyboard = "generic_key" icon_screen = "helm" + circuit = /obj/item/weapon/circuitboard/nav /obj/machinery/computer/ship/navigation/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) if(!linked) @@ -274,6 +276,7 @@ GLOBAL_LIST_EMPTY(all_waypoints) icon_state = "tele_nav" icon_keyboard = null icon_screen = null + circuit = /obj/item/weapon/circuitboard/nav/tele density = 0 /obj/machinery/computer/ship/navigation/telescreen/update_icon() diff --git a/code/modules/overmap/ships/computers/sensors.dm b/code/modules/overmap/ships/computers/sensors.dm index 982872a1e22..c1571c12ef9 100644 --- a/code/modules/overmap/ships/computers/sensors.dm +++ b/code/modules/overmap/ships/computers/sensors.dm @@ -3,6 +3,7 @@ icon_keyboard = "teleport_key" icon_screen = "teleport" light_color = "#77fff8" + circuit = /obj/item/weapon/circuitboard/sensors extra_view = 4 var/obj/machinery/shipsensors/sensors diff --git a/code/modules/overmap/ships/computers/ship.dm b/code/modules/overmap/ships/computers/ship.dm index 4ab9d241df4..6e6304f1f84 100644 --- a/code/modules/overmap/ships/computers/ship.dm +++ b/code/modules/overmap/ships/computers/ship.dm @@ -16,11 +16,14 @@ somewhere on that shuttle. Subtypes of these can be then used to perform ship ov linked = sector return 1 -/obj/machinery/computer/ship/proc/sync_linked() - var/obj/effect/overmap/visitable/ship/sector = map_sectors["[z]"] +/obj/machinery/computer/ship/proc/sync_linked(var/user = null) + var/obj/effect/overmap/visitable/ship/sector = get_overmap_sector(z) if(!sector) return - return attempt_hook_up_recursive(sector) + . = attempt_hook_up_recursive(sector) + if(. && linked && user) + to_chat(user, "[src] reconnected to [linked]") + user << browse(null, "window=[src]") // close reconnect dialog /obj/machinery/computer/ship/proc/attempt_hook_up_recursive(obj/effect/overmap/visitable/ship/sector) if(attempt_hook_up(sector)) @@ -43,7 +46,7 @@ somewhere on that shuttle. Subtypes of these can be then used to perform ship ov if(..()) return TOPIC_HANDLED if(href_list["sync"]) - sync_linked() + sync_linked(user) return TOPIC_REFRESH if(href_list["close"]) unlook(user) diff --git a/code/modules/overmap/ships/computers/shuttle.dm b/code/modules/overmap/ships/computers/shuttle.dm index 726c3391782..42904d2a422 100644 --- a/code/modules/overmap/ships/computers/shuttle.dm +++ b/code/modules/overmap/ships/computers/shuttle.dm @@ -1,6 +1,7 @@ //Shuttle controller computer for shuttles going between sectors /obj/machinery/computer/shuttle_control/explore name = "general shuttle control console" + circuit = /obj/item/weapon/circuitboard/shuttle_console/explore ui_template = "shuttle_control_console_exploration.tmpl" /obj/machinery/computer/shuttle_control/explore/get_ui_data(var/datum/shuttle/autodock/overmap/shuttle) diff --git a/code/modules/overmap/ships/landable.dm b/code/modules/overmap/ships/landable.dm index 967fdeb5710..0a28eefd8d2 100644 --- a/code/modules/overmap/ships/landable.dm +++ b/code/modules/overmap/ships/landable.dm @@ -80,7 +80,7 @@ . = ..() /obj/effect/shuttle_landmark/ship/Destroy() - var/obj/effect/overmap/visitable/ship/landable/ship = map_sectors["[z]"] + var/obj/effect/overmap/visitable/ship/landable/ship = get_overmap_sector(z) if(istype(ship) && ship.landmark == src) ship.landmark = null . = ..() @@ -141,7 +141,7 @@ on_landing(from, into) /obj/effect/overmap/visitable/ship/landable/proc/on_landing(obj/effect/shuttle_landmark/from, obj/effect/shuttle_landmark/into) - var/obj/effect/overmap/visitable/target = map_sectors["[into.z]"] + var/obj/effect/overmap/visitable/target = get_overmap_sector(get_z(into)) var/datum/shuttle/shuttle_datum = SSshuttles.shuttles[shuttle] if(into.landmark_tag == shuttle_datum.motherdock) // If our motherdock is a landable ship, it won't be found properly here so we need to find it manually. for(var/obj/effect/overmap/visitable/ship/landable/landable in SSshuttles.ships) diff --git a/code/modules/overmap/spacetravel.dm b/code/modules/overmap/spacetravel.dm index adb7e802697..aec5c06f75c 100644 --- a/code/modules/overmap/spacetravel.dm +++ b/code/modules/overmap/spacetravel.dm @@ -57,7 +57,7 @@ proc/overmap_spacetravel(var/turf/space/T, var/atom/movable/A) if (!T || !A) return - var/obj/effect/overmap/visitable/M = map_sectors["[T.z]"] + var/obj/effect/overmap/visitable/M = get_overmap_sector(T.z) if (!M) return diff --git a/code/modules/overmap/turfs.dm b/code/modules/overmap/turfs.dm index 3508203a6e6..fc9f0b16eb9 100644 --- a/code/modules/overmap/turfs.dm +++ b/code/modules/overmap/turfs.dm @@ -1,7 +1,7 @@ //Dimension of overmap (squares 4 lyfe) var/global/list/map_sectors = list() -/area/overmap/ +/area/overmap name = "System Map" icon_state = "start" requires_power = 0 diff --git a/code/modules/paperwork/adminpaper.dm b/code/modules/paperwork/adminpaper.dm index 04b47377dd6..353090efede 100644 --- a/code/modules/paperwork/adminpaper.dm +++ b/code/modules/paperwork/adminpaper.dm @@ -40,11 +40,15 @@ var/originhash = md5("[origin]") var/timehash = copytext(md5("[world.time]"),1,10) var/text = null - var/logo = alert(usr, "Do you want the header of your fax to have a NanoTrasen or SolGov logo?","Fax Logo","NanoTrasen","SolGov") + var/logo = alert(usr, "Do you want the header of your fax to have a NanoTrasen, SolGov, or Trader logo?","Fax Logo","NanoTrasen","SolGov","Trader") //VOREStation Add - Trader if(logo == "SolGov") logo = "sglogo.png" - else + //VOREStation Edit/Add + else if(logo == "NanoTrasen") logo = "ntlogo.png" + else + logo = "trader.png" + //VOREStation Edit/Add End //TODO change logo based on who you're contacting. text = "

    " text += "[origin] Quantum Uplink Signed Message
    " @@ -152,4 +156,4 @@ obj/item/weapon/paper/admin/proc/updateDisplay() return /obj/item/weapon/paper/admin/get_signature() - return input(usr, "Enter the name you wish to sign the paper with (will prompt for multiple entries, in order of entry)", "Signature") as text|null \ No newline at end of file + return input(usr, "Enter the name you wish to sign the paper with (will prompt for multiple entries, in order of entry)", "Signature") as text|null diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm index 9d09d63695a..64f02d21887 100644 --- a/code/modules/paperwork/clipboard.dm +++ b/code/modules/paperwork/clipboard.dm @@ -1,7 +1,7 @@ /obj/item/weapon/clipboard name = "clipboard" desc = "Used to clip paper to, for an on-the-go writing board." - icon = 'icons/obj/bureaucracy_vr.dmi' //VOREStation Edit + icon = 'icons/obj/bureaucracy.dmi' icon_state = "clipboard" item_state = "clipboard" throwforce = 0 diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 706ccda8e05..5353b2cf185 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -1,5 +1,5 @@ var/list/obj/machinery/photocopier/faxmachine/allfaxes = list() -var/list/admin_departments = list("[using_map.boss_name]", "Virgo-Prime Governmental Authority", "Supply") // Vorestation Edit +var/list/admin_departments = list("[using_map.boss_name]", "Virgo-Prime Governmental Authority", "Virgo-Erigonne Job Boards", "Supply") // Vorestation Edit var/list/alldepartments = list() var/list/adminfaxes = list() //cache for faxes that have been sent to admins diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index b0341871b93..d0e9931f714 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -1,7 +1,7 @@ /obj/item/weapon/folder name = "folder" desc = "A folder." - icon = 'icons/obj/bureaucracy_vr.dmi' //VOREStation Edit + icon = 'icons/obj/bureaucracy.dmi' icon_state = "folder" w_class = ITEMSIZE_SMALL pressure_resistance = 2 diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 8254c86b5c0..b94a330a639 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -651,4 +651,4 @@ /obj/item/weapon/paper/manifest name = "supply manifest" - var/is_copy = 1 \ No newline at end of file + var/is_copy = 1 diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 1ca6e438b63..dbfd7855fff 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -12,7 +12,7 @@ /obj/item/weapon/pen desc = "It's a normal black ink pen." name = "pen" - icon = 'icons/obj/bureaucracy_vr.dmi' //VOREStation Edit + icon = 'icons/obj/bureaucracy.dmi' icon_state = "pen" item_state = "pen" slot_flags = SLOT_BELT | SLOT_EARS diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index 7840333ef31..918786302b8 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -44,6 +44,7 @@ /obj/item/weapon/stamp/denied name = "\improper DENIED rubber stamp" icon_state = "stamp-deny" + attack_verb = list("DENIED") /obj/item/weapon/stamp/clown name = "clown's rubber stamp" diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 4b86bc9a9a6..66cc7aa367a 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -582,9 +582,12 @@ obj/structure/cable/proc/cableColor(var/colorC) else if(amount == 2) icon_state = "coil2" name = "cable piece" - else + else if(amount > 2 && amount != max_amount) icon_state = "coil" - name = "cable coil" + name = initial(name) + else + icon_state = "coil-max" + name = initial(name) /obj/item/stack/cable_coil/proc/set_cable_color(var/selected_color, var/user) if(!selected_color) diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index 91ff81947e4..d9186b548f3 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -1,7 +1,9 @@ +GLOBAL_LIST_EMPTY(all_turbines) + /obj/machinery/power/generator name = "thermoelectric generator" desc = "It's a high efficiency thermoelectric generator." - icon_state = "teg" + icon_state = "teg-unassembled" density = 1 anchored = 0 @@ -27,6 +29,7 @@ /obj/machinery/power/generator/Initialize() soundloop = new(list(src), FALSE) desc = initial(desc) + " Rated for [round(max_power/1000)] kW." + GLOB.all_turbines += src ..() //Not returned, because... return INITIALIZE_HINT_LATELOAD @@ -35,6 +38,7 @@ /obj/machinery/power/generator/Destroy() QDEL_NULL(soundloop) + GLOB.all_turbines -= src return ..() //generators connect in dir and reverse_dir(dir) directions @@ -64,13 +68,26 @@ circ2 = null /obj/machinery/power/generator/proc/updateicon() - if(stat & (NOPOWER|BROKEN)) - overlays.Cut() + icon_state = anchored ? "teg-assembled" : "teg-unassembled" + cut_overlays() + if (circ1) + circ1.temperature_overlay = null + if (circ2) + circ2.temperature_overlay = null + if (stat & (NOPOWER|BROKEN)) + return 1 else - overlays.Cut() - - if(lastgenlev != 0) - overlays += image('icons/obj/power.dmi', "teg-op[lastgenlev]") + if (lastgenlev != 0) + add_overlay("teg-op[lastgenlev]") + if (circ1 && circ2) + var/extreme = (lastgenlev > 9) ? "ex" : "" + if (circ1.last_temperature < circ2.last_temperature) + circ1.temperature_overlay = "circ-[extreme]cold" + circ2.temperature_overlay = "circ-[extreme]hot" + else + circ1.temperature_overlay = "circ-[extreme]hot" + circ2.temperature_overlay = "circ-[extreme]cold" + return 1 /obj/machinery/power/generator/process() if(!circ1 || !circ2 || !anchored || stat & (BROKEN|NOPOWER)) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 495656ad339..c9041ad93c8 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -672,6 +672,8 @@ var/global/list/light_type_cache = list() if(status != LIGHT_OK) break on = !on update(0) + if(!on) // Only play when the light turns off. + playsound(src, 'sound/effects/light_flicker.ogg', 50, 1) sleep(rand(5, 15)) on = (status == LIGHT_OK) update(0) diff --git a/code/modules/power/port_gen_vr.dm b/code/modules/power/port_gen_vr.dm new file mode 100644 index 00000000000..e6e805e1d77 --- /dev/null +++ b/code/modules/power/port_gen_vr.dm @@ -0,0 +1,11 @@ +/obj/machinery/power/port_gen/pacman/super/potato + name = "nuclear reactor" + desc = "PTTO-3, an industrial all-in-one nuclear power plant by Neo-Chernobyl GmbH. It uses uranium as a fuel source. Rated for 200 kW max safe output." + icon_state = "potato" + time_per_sheet = 1152 //same power output, but a 50 sheet stack will last 4 hours at max safe power + power_gen = 40000 //watts + max_power_output = 5 + max_safe_output = 6 + temperature_gain = 80 //how much the temperature increases per power output level, in degrees per level + max_temperature = 450 + anchored = 1 diff --git a/code/modules/vore/fluffstuff/guns/bsharpoon.dm b/code/modules/projectiles/guns/energy/bsharpoon_vr.dm similarity index 100% rename from code/modules/vore/fluffstuff/guns/bsharpoon.dm rename to code/modules/projectiles/guns/energy/bsharpoon_vr.dm diff --git a/code/modules/vore/fluffstuff/guns/cell_loaded/cell_loaded.dm b/code/modules/projectiles/guns/energy/cell_loaded_vr/cell_loaded.dm similarity index 100% rename from code/modules/vore/fluffstuff/guns/cell_loaded/cell_loaded.dm rename to code/modules/projectiles/guns/energy/cell_loaded_vr/cell_loaded.dm diff --git a/code/modules/vore/fluffstuff/guns/cell_loaded/ml3m.dm b/code/modules/projectiles/guns/energy/cell_loaded_vr/ml3m.dm similarity index 100% rename from code/modules/vore/fluffstuff/guns/cell_loaded/ml3m.dm rename to code/modules/projectiles/guns/energy/cell_loaded_vr/ml3m.dm diff --git a/code/modules/vore/fluffstuff/guns/cell_loaded/ml3m_cells.dm b/code/modules/projectiles/guns/energy/cell_loaded_vr/ml3m_cells.dm similarity index 100% rename from code/modules/vore/fluffstuff/guns/cell_loaded/ml3m_cells.dm rename to code/modules/projectiles/guns/energy/cell_loaded_vr/ml3m_cells.dm diff --git a/code/modules/vore/fluffstuff/guns/cell_loaded/nsfw.dm b/code/modules/projectiles/guns/energy/cell_loaded_vr/nsfw.dm similarity index 100% rename from code/modules/vore/fluffstuff/guns/cell_loaded/nsfw.dm rename to code/modules/projectiles/guns/energy/cell_loaded_vr/nsfw.dm diff --git a/code/modules/vore/fluffstuff/guns/cell_loaded/nsfw_cells.dm b/code/modules/projectiles/guns/energy/cell_loaded_vr/nsfw_cells.dm similarity index 100% rename from code/modules/vore/fluffstuff/guns/cell_loaded/nsfw_cells.dm rename to code/modules/projectiles/guns/energy/cell_loaded_vr/nsfw_cells.dm diff --git a/code/modules/vore/fluffstuff/guns/crestrose.dm b/code/modules/projectiles/guns/energy/crestrose_vr.dm similarity index 100% rename from code/modules/vore/fluffstuff/guns/crestrose.dm rename to code/modules/projectiles/guns/energy/crestrose_vr.dm diff --git a/code/modules/vore/fluffstuff/guns/dominator.dm b/code/modules/projectiles/guns/energy/dominator_vr.dm similarity index 100% rename from code/modules/vore/fluffstuff/guns/dominator.dm rename to code/modules/projectiles/guns/energy/dominator_vr.dm diff --git a/code/modules/vore/fluffstuff/guns/gunsword.dm b/code/modules/projectiles/guns/energy/gunsword_vr.dm similarity index 100% rename from code/modules/vore/fluffstuff/guns/gunsword.dm rename to code/modules/projectiles/guns/energy/gunsword_vr.dm diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 6540dc470d3..45c6364c1b3 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -12,7 +12,7 @@ origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2) matter = list(DEFAULT_WALL_MATERIAL = 2000) projectile_type = /obj/item/projectile/beam/midlaser -// one_handed_penalty = 30 + one_handed_penalty = 30 firemodes = list( list(mode_name="normal", fire_delay=8, projectile_type=/obj/item/projectile/beam/midlaser, charge_cost = 240), @@ -125,13 +125,14 @@ flux in a nuclear reactor core. This incredible technology may help YOU achieve high excitation rates with small laser volumes!" icon_state = "lasercannon" item_state = null + wielded_item_state = "mhdhowitzer-wielded" //Placeholder origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_POWER = 3) slot_flags = SLOT_BELT|SLOT_BACK projectile_type = /obj/item/projectile/beam/heavylaser/cannon battery_lock = 1 fire_delay = 20 w_class = ITEMSIZE_LARGE -// one_handed_penalty = 90 // The thing's heavy and huge. + one_handed_penalty = 90 // The thing's heavy and huge. accuracy = 45 charge_cost = 600 @@ -162,7 +163,8 @@ ionized beams, this is a weapon to kill from a distance." icon_state = "sniper" item_state = "sniper" - item_state_slots = list(slot_r_hand_str = "z8carbine", slot_l_hand_str = "z8carbine") //placeholder + item_state_slots = list(slot_r_hand_str = "lsniper", slot_l_hand_str = "lsniper") + wielded_item_state = "lsniper-wielded" origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 5, TECH_POWER = 4) projectile_type = /obj/item/projectile/beam/sniper slot_flags = SLOT_BACK @@ -174,8 +176,7 @@ w_class = ITEMSIZE_HUGE // So it can't fit in a backpack. accuracy = -45 //shooting at the hip 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. + one_handed_penalty = 60 // The weapon itself is heavy, and the long barrel makes it hard to hold steady with just one hand. /obj/item/weapon/gun/energy/sniperrifle/ui_action_click() scope() diff --git a/code/modules/projectiles/guns/energy/laser_vr.dm b/code/modules/projectiles/guns/energy/laser_vr.dm new file mode 100644 index 00000000000..756ef967d5d --- /dev/null +++ b/code/modules/projectiles/guns/energy/laser_vr.dm @@ -0,0 +1,302 @@ +/* TUTORIAL + "icon" is the file with the HUD/ground icon for the item + "icon_state" is the iconstate in this file for the item + "icon_override" is the file with the on-mob icons, can be the same file + "item_state" is the iconstate for the on-mob icons: + item_state_s is used for worn uniforms on mobs + item_state_r and item_state_l are for being held in each hand + + "item_state_slots" can replace "item_state", it is a list: + item_state_slots["slotname1"] = "item state for that slot" + item_state_slots["slotname2"] = "item state for that slot" + + on guns, in particular: + item_state being null makes it look for exactly the icon_state in the on-mob file, + including any 0,75,etc appended from the energy bar setting + item_state being present prevents different mode sprites, sadly, but you may + be able to override this on the gun itself with a proc +*/ + +/* TEMPLATE +//ckey:Character Name +/obj/item/weapon/gun/type/fluff/charactername + name = "" + desc = "" + + icon = 'icons/vore/custom_guns_vr.dmi' + icon_state = "myicon" + + icon_override = 'icons/vore/custom_guns_vr.dmi' + item_state = "myicon" + +*/ + +// For general use +/obj/item/weapon/gun/energy/imperial + name = "imperial energy pistol" + desc = "An elegant weapon developed by the Imperium Auream. Their weaponsmiths have cleverly found a way to make a gun that is only about the size of an average energy pistol, yet with the fire power of a laser carbine." + icon_state = "ge_pistol" + item_state = "ge_pistol" + fire_sound = 'sound/weapons/mandalorian.ogg' + icon = 'icons/obj/gun_vr.dmi' + item_icons = list(slot_r_hand_str = 'icons/obj/gun_vr.dmi', slot_l_hand_str = 'icons/obj/gun_vr.dmi') // WORK YOU FUCKING CUNT PIECE OF SHIT BASTARD STUPID BITCH ITEM ICON AAAAHHHH + item_state_slots = list(slot_r_hand_str = "ge_pistol_r", slot_l_hand_str = "ge_pistol_l") + slot_flags = SLOT_BELT + w_class = ITEMSIZE_NORMAL + force = 10 + origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2) + matter = list(DEFAULT_WALL_MATERIAL = 2000) + projectile_type = /obj/item/projectile/beam/imperial + +// Removed because gun64_vr.dmi guns don't work. +/* +//-----------------------G44 Energy Variant-------------------- +/obj/item/weapon/gun/energy/gun/burst/g44e + name = "G44 Energy Rifle" + desc = "The G44 Energy is a laser variant of the G44 lightweight assault rifle manufactured by the National Armory of Gaia. Though almost exclusively to the United Federation's Military Assault Command Operations Department (MACOs) and Starfleet, it is occassionally sold to security departments for their stun capabilities." + icon = 'icons/obj/gun64_vr.dmi' + icon_state = "g44estun100" + item_state = "energystun100" //This is temporary. + fire_sound = 'sound/weapons/Taser.ogg' + charge_cost = 100 + force = 8 + w_class = ITEMSIZE_LARGE + fire_delay = 6 + pixel_x = -16 + + projectile_type = /obj/item/projectile/beam/stun/weak + origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_ILLEGAL = 3) + modifystate = "g44estun" + + one_handed_penalty = 60 + + firemodes = list( + list(mode_name="stun", burst=1, projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="g44estun", fire_sound='sound/weapons/Taser.ogg', charge_cost = 100), + list(mode_name="stun burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="g44estun", fire_sound='sound/weapons/Taser.ogg'), + list(mode_name="lethal", burst=1, projectile_type=/obj/item/projectile/beam/burstlaser, modifystate="g44ekill", fire_sound='sound/weapons/Laser.ogg', charge_cost = 200), + list(mode_name="lethal burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/burstlaser, modifystate="g44ekill", fire_sound='sound/weapons/Laser.ogg'), + ) +*/ + +//////////////////// Energy Weapons //////////////////// + +// ------------ Energy Luger ------------ +/obj/item/weapon/gun/energy/gun/eluger + name = "energy Luger" + desc = "The finest sidearm produced by RauMauser. Although its battery cannot be removed, its ergonomic design makes it easy to shoot, allowing for rapid follow-up shots. It also has the ability to toggle between stun and kill." + icon = 'icons/obj/gun_vr.dmi' + icon_state = "elugerstun100" + item_state = "gun" + fire_delay = null // Lugers are quite comfortable to shoot, thus allowing for more controlled follow-up shots. Rate of fire similar to a laser carbine. + battery_lock = 1 // In exchange for balance, you cannot remove the battery. Also there's no sprite for that and I fucking suck at sprites. -Ace + origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2, TECH_ILLEGAL = 2) // Illegal tech cuz Space Nazis + modifystate = "elugerstun" + fire_sound = 'sound/weapons/Taser.ogg' + firemodes = list( + list(mode_name="stun", charge_cost=120,projectile_type=/obj/item/projectile/beam/stun, modifystate="elugerstun", fire_sound='sound/weapons/Taser.ogg'), + list(mode_name="lethal", charge_cost=240,projectile_type=/obj/item/projectile/beam/eluger, modifystate="elugerkill", fire_sound='sound/weapons/eluger.ogg'), + ) + +//////////////////// Eris Ported Guns //////////////////// +//HoP gun +/obj/item/weapon/gun/energy/gun/martin + name = "holdout energy gun" + desc = "The FS PDW E \"Martin\" is small holdout e-gun. Don't miss!" + icon = 'icons/obj/gun_vr.dmi' + icon_state = "PDW" + item_state = "gun" + w_class = ITEMSIZE_SMALL + projectile_type = /obj/item/projectile/beam/stun + charge_cost = 1200 + charge_meter = 0 + modifystate = null + battery_lock = 1 + fire_sound = 'sound/weapons/Taser.ogg' + origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2) + firemodes = list( + list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, fire_sound='sound/weapons/Taser.ogg', charge_cost = 600), + list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, fire_sound='sound/weapons/Laser.ogg', charge_cost = 1200), + ) + +/obj/item/weapon/gun/energy/gun/martin/proc/update_mode() + var/datum/firemode/current_mode = firemodes[sel_mode] + switch(current_mode.name) + if("stun") add_overlay("taser_pdw") + if("lethal") add_overlay("lazer_pdw") + +/obj/item/weapon/gun/energy/gun/martin/update_icon() + cut_overlays() + update_mode() + +///////////////////////////////////////////////////// +//////////////////// Custom Ammo //////////////////// +///////////////////////////////////////////////////// +//---------------- Beams ---------------- +/obj/item/projectile/beam/eluger + name = "laser beam" + icon_state = "xray" + light_color = "#00FF00" + 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/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/muzzle/laser_omni + tracer_type = /obj/effect/projectile/tracer/laser_omni + impact_type = /obj/effect/projectile/impact/laser_omni + +//Gun Locking Mechanism +/obj/item/weapon/gun/energy/locked + req_access = list(access_armory) //for toggling safety + var/locked = 1 + var/lockable = 1 + +/obj/item/weapon/gun/energy/locked/attackby(obj/item/I, mob/user) + var/obj/item/weapon/card/id/id = I.GetID() + if(istype(id) && lockable) + if(check_access(id)) + locked = !locked + to_chat(user, "You [locked ? "enable" : "disable"] the safety lock on \the [src].") + else + to_chat(user, "Access denied.") + user.visible_message("[user] swipes \the [I] against \the [src].") + else + return ..() + +/obj/item/weapon/gun/energy/locked/emag_act(var/remaining_charges,var/mob/user) + ..() + if(lockable) + locked = !locked + to_chat(user, "You [locked ? "enable" : "disable"] the safety lock on \the [src]!") + +/obj/item/weapon/gun/energy/locked/special_check(mob/user) + if(locked) + var/turf/T = get_turf(src) + if(T.z in using_map.map_levels) + to_chat(user, "The safety device prevents the gun from firing this close to the facility.") + return 0 + return ..() + +//Expedition Frontier Phaser +/obj/item/weapon/gun/energy/locked/frontier + name = "frontier phaser" + desc = "An extraordinarily rugged laser weapon, built to last and requiring effectively no maintenance. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility." + icon = 'icons/obj/gun_vr.dmi' + icon_state = "phaser" + item_state = "phaser" + item_icons = list(slot_l_hand_str = 'icons/mob/items/lefthand_guns_vr.dmi', slot_r_hand_str = 'icons/mob/items/righthand_guns_vr.dmi', "slot_belt" = 'icons/mob/belt_vr.dmi') + fire_sound = 'sound/weapons/laser2.ogg' + origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_POWER = 4) + charge_cost = 300 + + battery_lock = 1 + unacidable = 1 + + var/recharging = 0 + var/phase_power = 75 + + projectile_type = /obj/item/projectile/beam + firemodes = list( + list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam, charge_cost = 300), + list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 60), + ) + +/obj/item/weapon/gun/energy/locked/frontier/unload_ammo(var/mob/user) + if(recharging) + return + recharging = 1 + update_icon() + user.visible_message("[user] opens \the [src] and starts pumping the handle.", \ + "You open \the [src] and start pumping the handle.") + while(recharging) + if(!do_after(user, 10, src)) + break + playsound(get_turf(src),'sound/items/change_drill.ogg',25,1) + if(power_supply.give(phase_power) < phase_power) + break + + recharging = 0 + update_icon() + +/obj/item/weapon/gun/energy/locked/frontier/update_icon() + if(recharging) + icon_state = "[initial(icon_state)]_pump" + update_held_icon() + return + ..() + +/obj/item/weapon/gun/energy/locked/frontier/emp_act(severity) + return ..(severity+2) + +/obj/item/weapon/gun/energy/locked/frontier/ex_act() //|rugged| + return + +/obj/item/weapon/gun/energy/locked/frontier/unlocked + desc = "An extraordinarily rugged laser weapon, built to last and requiring effectively no maintenance. Includes a built-in crank charger for recharging away from civilization." + req_access = newlist() //for toggling safety + locked = 0 + lockable = 0 + +//Phaser Carbine - Reskinned phaser +/obj/item/weapon/gun/energy/locked/frontier/carbine + name = "frontier carbine" + desc = "An ergonomically improved version of the venerable frontier phaser, the carbine is a fairly new weapon, and has only been produced in limited numbers so far. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility." + icon = 'icons/obj/gun_vr.dmi' + icon_state = "carbinekill" + item_state = "retro" + item_icons = list(slot_l_hand_str = 'icons/mob/items/lefthand_guns.dmi', slot_r_hand_str = 'icons/mob/items/righthand_guns.dmi') + + modifystate = "carbinekill" + firemodes = list( + list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam, modifystate="carbinekill", charge_cost = 300), + list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, modifystate="carbinestun", charge_cost = 60), + ) + +/obj/item/weapon/gun/energy/locked/frontier/carbine/update_icon() + if(recharging) + icon_state = "[modifystate]_pump" + update_held_icon() + return + ..() + +/obj/item/weapon/gun/energy/locked/frontier/carbine/unlocked + desc = "An ergonomically improved version of the venerable frontier phaser, the carbine is a fairly new weapon, and has only been produced in limited numbers so far." + req_access = newlist() //for toggling safety + locked = 0 + lockable = 0 + +//Expeditionary Holdout Phaser Pistol +/obj/item/weapon/gun/energy/locked/frontier/holdout + name = "holdout frontier phaser" + desc = "An minaturized weapon designed for the purpose of expeditionary support to defend themselves on the field. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility." + icon = 'icons/obj/gun_vr.dmi' + icon_state = "holdoutkill" + item_state = null + phase_power = 100 + + w_class = ITEMSIZE_SMALL + charge_cost = 600 + modifystate = "holdoutkill" + firemodes = list( + list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam, modifystate="holdoutkill", charge_cost = 600), + list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, modifystate="holdoutstun", charge_cost = 120), + list(mode_name="stun", fire_delay=12, projectile_type=/obj/item/projectile/beam/stun/med, modifystate="holdoutshock", charge_cost = 300), + ) + +/obj/item/weapon/gun/energy/locked/frontier/holdout/unlocked + desc = "An minaturized weapon designed for the purpose of expeditionary support to defend themselves on the field. Includes a built-in crank charger for recharging away from civilization." + req_access = newlist() //for toggling safety + locked = 0 + lockable = 0 diff --git a/code/modules/projectiles/guns/energy/netgun_vr.dm b/code/modules/projectiles/guns/energy/netgun_vr.dm index 329b9fcdca0..7352a22aba1 100644 --- a/code/modules/projectiles/guns/energy/netgun_vr.dm +++ b/code/modules/projectiles/guns/energy/netgun_vr.dm @@ -1,35 +1,13 @@ /obj/item/weapon/gun/energy/netgun name = "energy net gun" - desc = "A Kitsuhana-designed, usually dubbed 'Hunter' or 'non-lethal capture device' stunner and energy net launcher, \ - for when you want criminals to stop acting like they're on a 20th century British comedy sketch show." - catalogue_data = list(/datum/category_item/catalogue/information/organization/khi) + desc = "Specially made-to-order by Xenonomix, the XX-1 \"Varmint Catcher\" is designed to trap even the most unruly of creatures for safe transport." icon = 'icons/obj/gun_vr.dmi' - icon_state = "hunter" + icon_state = "netgun" item_state = "gun" // Placeholder - mode_name = "stun" + charge_meter = 0 fire_sound = 'sound/weapons/eluger.ogg' origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 5, TECH_MAGNET = 3) - projectile_type = /obj/item/projectile/beam/stun/blue - charge_cost = 240 - fire_delay = 5 - - firemodes = list( - list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun/blue, fire_sound='sound/weapons/Taser.ogg', charge_cost=240, fire_delay=5), - list(mode_name="capture", projectile_type=/obj/item/projectile/beam/energy_net, fire_sound = 'sound/weapons/eluger.ogg', charge_cost=1200, fire_delay=50) - ) - -/obj/item/weapon/gun/energy/netgun/update_icon() - overlays.Cut() - - if(power_supply) - var/ratio = power_supply.charge / power_supply.maxcharge - - if(power_supply.charge < charge_cost) - ratio = 0 - else - ratio = max(round(ratio, 0.25) * 100, 25) - - overlays += "[initial(icon_state)]_cell" - overlays += "[initial(icon_state)]_[ratio]" - overlays += "[initial(icon_state)]_[mode_name]" + projectile_type = /obj/item/projectile/beam/energy_net + charge_cost = 800 + fire_delay = 50 diff --git a/code/modules/vore/fluffstuff/guns/protector.dm b/code/modules/projectiles/guns/energy/protector_vr.dm similarity index 63% rename from code/modules/vore/fluffstuff/guns/protector.dm rename to code/modules/projectiles/guns/energy/protector_vr.dm index b090e963d68..e3e90ff5ebf 100644 --- a/code/modules/vore/fluffstuff/guns/protector.dm +++ b/code/modules/projectiles/guns/energy/protector_vr.dm @@ -1,12 +1,10 @@ // -------------- Protector ------------- -/obj/item/weapon/gun/energy/protector - name = "small energy gun" - desc = "The KHI-98a 'Protector' is the first firearm custom-designed for Nanotrasen by KHI. It features a powerful stun mode, and \ - an alert-level-locked lethal mode, only usable on code blue and higher. It also features an integrated flashlight!" - catalogue_data = list(/datum/category_item/catalogue/information/organization/khi) +/obj/item/weapon/gun/energy/gun/protector + name = "secure small energy gun" + desc = "The LAEP95 'Protector' is another firearm from Lawson Arms and "+TSC_HEPH+", unlike the Perun this is designed for issue to non-security staff. It contains a detachable cell, and an alert-level-locked lethal mode, only usable on code blue and higher. It also features an integrated flashlight!" description_info = "This gun can only be fired in lethal mode while on higher security alert levels. It is legal for sec to carry for this reason, since it cannot be used for lethal force until SOP allows it, in essence." - description_fluff = "The first 'commission' from a Kitsuhana citizen for NanoTrasen, this gun has a wireless connection to the computer's datacore to ensure it can't be used without authorization from heads of staff who have raised the alert level. Until then, *click*!" + description_fluff = "A lighter weapon designed for non-security staff, this gun has a wireless connection to the computer's datacore to ensure it can't be used without authorization from heads of staff who have raised the alert level. Until then, *click*!" description_antag = "The gun can be emagged to remove the lethal security level restriction, allowing it to be fired on lethal mode at all times." icon = 'icons/vore/custom_guns_vr.dmi' @@ -30,14 +28,16 @@ flight_x_offset = 0 flight_y_offset = 0 + w_class = ITEMSIZE_SMALL + firemodes = list( - list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun/protector, modifystate="stun", fire_sound='sound/weapons/Taser.ogg'), - list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="kill", fire_sound='sound/weapons/gauss_shoot.ogg'), - ) + list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun/med, modifystate="stun", charge_cost = 400), + list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="kill", charge_cost = 800), + ) var/emagged = FALSE -/obj/item/weapon/gun/energy/protector/special_check(mob/user) +/obj/item/weapon/gun/energy/gun/protector/special_check(mob/user) if(!emagged && mode_name == "lethal" && get_security_level() == "green") to_chat(user,"The trigger refuses to depress while on the lethal setting under security level green!") return FALSE @@ -45,7 +45,7 @@ return ..() -/obj/item/weapon/gun/energy/protector/emag_act(var/remaining_charges,var/mob/user) +/obj/item/weapon/gun/energy/gun/protector/emag_act(var/remaining_charges,var/mob/user) ..() if(!emagged) emagged = TRUE @@ -54,7 +54,7 @@ return TRUE //Update icons from /tg/, so fancy! Use this more! -/obj/item/weapon/gun/energy/protector/update_icon() +/obj/item/weapon/gun/energy/gun/protector/update_icon() overlays.Cut() var/ratio = 0 @@ -98,13 +98,7 @@ item_state = itemState */ - -// Protector beams -/obj/item/projectile/beam/stun/protector - name = "protector stun beam" - icon_state = "omnilaser" //A little more cyan - light_color = "#00C6FF" - agony = 50 //Normal is 40 when this was set - 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/weapon/gun/energy/gun/protector/unlocked + emagged = TRUE + name = "small energy gun" + desc = "The LAEP95 'Protector' is another firearm from Lawson Arms and "+TSC_HEPH+", unlike the Perun this is designed for issue to non-security staff. It contains a detachable cell. It also features an integrated flashlight!" diff --git a/code/modules/vore/fluffstuff/guns/pummeler.dm b/code/modules/projectiles/guns/energy/pummeler_vr.dm similarity index 100% rename from code/modules/vore/fluffstuff/guns/pummeler.dm rename to code/modules/projectiles/guns/energy/pummeler_vr.dm diff --git a/code/modules/vore/fluffstuff/guns/sickshot.dm b/code/modules/projectiles/guns/energy/sickshot_vr.dm similarity index 100% rename from code/modules/vore/fluffstuff/guns/sickshot.dm rename to code/modules/projectiles/guns/energy/sickshot_vr.dm diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index fd2e9ca1914..c48bc499aa8 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -83,7 +83,7 @@ allowed_magazines = list(/obj/item/ammo_magazine/m545) projectile_type = /obj/item/projectile/bullet/rifle/a545 -// one_handed_penalty = 30 + one_handed_penalty = 30 firemodes = list( list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), @@ -140,7 +140,7 @@ auto_eject = 1 auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' -// one_handed_penalty = 60 + one_handed_penalty = 60 burst_delay = 4 firemodes = list( @@ -197,6 +197,7 @@ desc = "A rather traditionally made L6 SAW with a pleasantly lacquered wooden pistol grip. 'Aussec Armoury-2531' is engraved on the reciever. Uses 5.45mm rounds. It's also compatible with magazines from STS-35 assault rifles." icon_state = "l6closed100" item_state = "l6closed" + wielded_item_state = "genericLMG-wielded" w_class = ITEMSIZE_LARGE force = 10 slot_flags = 0 @@ -209,7 +210,7 @@ allowed_magazines = list(/obj/item/ammo_magazine/m545saw, /obj/item/ammo_magazine/m545) projectile_type = /obj/item/projectile/bullet/rifle/a545 -// one_handed_penalty = 90 + one_handed_penalty = 90 var/cover_open = 0 @@ -278,6 +279,7 @@ desc = "The AS-24 is a rugged looking automatic shotgun produced for the military by Gurov Projectile Weapons LLC. For very obvious reasons, it's illegal to own in many juristictions. Uses 12g rounds." icon_state = "ashot" item_state = null + wielded_item_state = "woodarifle-wielded" //Placeholder w_class = ITEMSIZE_LARGE force = 10 caliber = "12g" @@ -288,7 +290,7 @@ allowed_magazines = list(/obj/item/ammo_magazine/m12gdrum) projectile_type = /obj/item/projectile/bullet/shotgun -// one_handed_penalty = 60 + one_handed_penalty = 60 firemodes = list( list(mode_name="semiauto", burst=1, fire_delay=0), @@ -375,6 +377,7 @@ desc = "The bullpup configured GP3000 is a battle rifle produced by Gurov Projectile Weapons LLC. It is sold almost exclusively to standing armies. Uses 7.62mm rounds." icon_state = "bullpup-small" item_state = "bullpup" + wielded_item_state = "sexyrifle-wielded" //Placeholder, this is a bullpup at least w_class = ITEMSIZE_LARGE force = 10 caliber = "7.62mm" @@ -385,7 +388,7 @@ allowed_magazines = list(/obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762m) projectile_type = /obj/item/projectile/bullet/rifle/a762 -// one_handed_penalty = 45 + one_handed_penalty = 45 firemodes = list( list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), diff --git a/code/modules/projectiles/guns/projectile/automatic_vr.dm b/code/modules/projectiles/guns/projectile/automatic_vr.dm index 79789292eeb..5d4cd08eafc 100644 --- a/code/modules/projectiles/guns/projectile/automatic_vr.dm +++ b/code/modules/projectiles/guns/projectile/automatic_vr.dm @@ -1,2 +1,226 @@ /obj/item/weapon/gun/projectile/automatic/wt550/lethal - magazine_type = /obj/item/ammo_magazine/m9mmt \ No newline at end of file + magazine_type = /obj/item/ammo_magazine/m9mmt + +//////////////////////////////////////////////////////////// +//////////////////// Projectile Weapons //////////////////// +//////////////////////////////////////////////////////////// +// For general use +/obj/item/weapon/gun/projectile/automatic/battlerifle + name = "\improper USDF service rifle" + desc = "You had your chance to be afraid before you joined my beloved Corps! But, to guide you back to the true path, I have brought this motivational device! Uses 9.5x40mm rounds." + icon = 'icons/obj/gun_vr.dmi' + icon_state = "battlerifle" + icon_override = 'icons/obj/gun_vr.dmi' + item_state = "battlerifle_i" + item_icons = null + w_class = ITEMSIZE_LARGE + recoil = 2 // The battlerifle was known for its nasty recoil. + max_shells = 36 + caliber = "9.5x40mm" + origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2) + magazine_type = /obj/item/ammo_magazine/m95 + allowed_magazines = list(/obj/item/ammo_magazine/m95) + fire_sound = 'sound/weapons/battlerifle.ogg' + load_method = MAGAZINE + slot_flags = SLOT_BACK + one_handed_penalty = 60 // The weapon itself is heavy + +// For general use +/obj/item/weapon/gun/projectile/automatic/pdw + name = "personal defense weapon" + desc = "The X-9MM is a select-fire personal defense weapon designed in-house by Xing Private Security. It was made to compete with the WT550 Saber, but never caught on with NanoTrasen. Uses 9mm rounds." + icon = 'icons/obj/gun_vr.dmi' + icon_state = "pdw" + item_state = "c20r" // Placeholder + w_class = ITEMSIZE_NORMAL + caliber = "9mm" + origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2) + slot_flags = SLOT_BELT + load_method = MAGAZINE + magazine_type = /obj/item/ammo_magazine/m9mml + allowed_magazines = list(/obj/item/ammo_magazine/m9mm, /obj/item/ammo_magazine/m9mml) + + 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=6, burst_accuracy=list(0,-15,-30), dispersion=list(0.0, 0.6, 0.6)) + ) + +/obj/item/weapon/gun/projectile/automatic/pdw/update_icon(var/ignore_inhands) + ..() + if(istype(ammo_magazine,/obj/item/ammo_magazine/m9mm)) + icon_state = "pdw-short" + else + icon_state = (ammo_magazine)? "pdw" : "pdw-empty" + if(!ignore_inhands) update_held_icon() + +// For general use +/obj/item/weapon/gun/projectile/automatic/stg + name = "\improper Sturmgewehr" + desc = "An STG-560 built by RauMauser. Experience the terror of the Siegfried line, redone for the 26th century! The Kaiser would be proud. Uses unique 7.92x33mm Kurz rounds." + icon = 'icons/obj/gun_vr.dmi' + icon_state = "stg60" + item_state = "arifle" + w_class = ITEMSIZE_LARGE + max_shells = 30 + caliber = "7.92x33mm" + origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2, TECH_ILLEGAL = 6) + magazine_type = /obj/item/ammo_magazine/mtg + allowed_magazines = list(/obj/item/ammo_magazine/mtg) + load_method = MAGAZINE + +/obj/item/weapon/gun/projectile/automatic/stg/update_icon(var/ignore_inhands) + ..() + icon_state = (ammo_magazine)? "stg60" : "stg60-empty" + item_state = (ammo_magazine)? "arifle" : "arifle-empty" + if(!ignore_inhands) update_held_icon() + +// Removed because gun64_vr.dmi guns don't work. +/* +//-----------------------UF-ARC---------------------------------- +/obj/item/weapon/gun/projectile/automatic/carbine/fluff/ufarc + name = "UF-ARC" + desc = "The UF-ARC is a lightweight assault rifle manufactured by the National Armory of Gaia and sold almost exclusively to the United Federation's standing army, the Military Assault Command Operations Department (MACOs)." + icon = 'icons/obj/gun64_vr.dmi' + icon_state = "ufarc" + icon_override = 'icons/obj/gun_vr.dmi' + item_state = "battlerifle_i" + item_icons = null + pixel_x = -16 + +/obj/item/weapon/gun/projectile/automatic/carbine/fluff/ufarc/update_icon(var/ignore_inhands) + ..() + // TODO - Fix this for spriting different size magazines + icon_state = (ammo_magazine)? "ufarc" : "ufarc-empty" + item_state = (ammo_magazine)? "bullpup" : "bullpup-empty" + if(!ignore_inhands) update_held_icon() + + + +//-----------------------G44---------------------------------- +/obj/item/weapon/gun/projectile/automatic/carbine/fluff/g44 + name = "G44 Rifle" + desc = "The G44 is a lightweight assault rifle manufactured by the National Armory of Gaia and sold almost exclusively to the United Federation's standing army, the Military Assault Command Operations Department (MACOs)." + icon = 'icons/obj/gun64_vr.dmi' + icon_state = "g44" + item_state = "bullpup" + pixel_x = -16 + +/obj/item/weapon/gun/projectile/automatic/carbine/fluff/g44/update_icon(var/ignore_inhands) + ..() + // TODO - Fix this for spriting different size magazines + icon_state = (ammo_magazine)? "g44" : "g44-empty" + item_state = (ammo_magazine)? "bullpup" : "bullpup-empty" + if(!ignore_inhands) update_held_icon() +*/ + +//////////////////// Eris Ported Guns //////////////////// +// No idea what this is for. +/obj/item/weapon/gun/projectile/automatic/sol + name = "\improper \"Sol\" SMG" + desc = "The FS 9x19mm \"Sol\" is a compact and reliable submachine gun. Uses 9mm rounds." + icon = 'icons/obj/gun_vr.dmi' + icon_state = "SMG-IS" + item_state = "wt550" + w_class = ITEMSIZE_LARGE + slot_flags = SLOT_BELT + caliber = "9mm" + magazine_type = /obj/item/ammo_magazine/m9mm + allowed_magazines = list(/obj/item/ammo_magazine/m9mm) + load_method = MAGAZINE + multi_aim = 1 + burst_delay = 2 + origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2) + 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)), + ) + +/obj/item/weapon/gun/projectile/automatic/sol/proc/update_charge() + if(!ammo_magazine) + return + var/ratio = ammo_magazine.stored_ammo.len / ammo_magazine.max_ammo + if(ratio < 0.25 && ratio != 0) + ratio = 0.25 + ratio = round(ratio, 0.25) * 100 + overlays += "smg_[ratio]" + +/obj/item/weapon/gun/projectile/automatic/sol/update_icon() + icon_state = (ammo_magazine)? "SMG-IS" : "SMG-IS-empty" + overlays.Cut() + update_charge() + +//--------------- StG-60 ---------------- +/obj/item/ammo_magazine/m792 + name = "box mag (7.92x33mm Kurz)" + icon = 'icons/obj/ammo_vr.dmi' + icon_state = "stg_30rnd" + caliber = "7.92x33mm" + ammo_type = /obj/item/ammo_casing/a792 + max_ammo = 30 + mag_type = MAGAZINE + +/obj/item/ammo_casing/a792 + desc = "A 7.92x33mm Kurz casing." + icon_state = "rifle-casing" + caliber = "7.92x33mm" + projectile_type = /obj/item/projectile/bullet/rifle/a762 + +/obj/item/ammo_magazine/mtg/empty + initial_ammo = 0 + +//------------- Battlerifle ------------- +/obj/item/ammo_magazine/m95 + name = "box mag (9.5x40mm)" + icon = 'icons/obj/ammo_vr.dmi' + icon_state = "battlerifle" + caliber = "9.5x40mm" + ammo_type = /obj/item/ammo_casing/a95 + max_ammo = 36 + mag_type = MAGAZINE + multiple_sprites = 1 + +/obj/item/ammo_casing/a95 + desc = "A 9.5x40mm bullet casing." + icon_state = "rifle-casing" + caliber = "9.5x40mm" + projectile_type = /obj/item/projectile/bullet/rifle/a95 + +/obj/item/projectile/bullet/rifle/a95 + damage = 40 + +/obj/item/ammo_magazine/m95/empty + initial_ammo = 0 + +//---------------- PDW ------------------ +/obj/item/ammo_magazine/m9mml + name = "\improper SMG magazine (9mm)" + icon = 'icons/obj/ammo_vr.dmi' + icon_state = "smg" + origin_tech = list(TECH_COMBAT = 2) + mag_type = MAGAZINE + matter = list(DEFAULT_WALL_MATERIAL = 1800) + caliber = "9mm" + ammo_type = /obj/item/ammo_casing/a9mm + max_ammo = 30 + multiple_sprites = 1 + +/obj/item/ammo_magazine/m9mml/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/m9mml/ap + name = "\improper SMG magazine (9mm armor-piercing)" + ammo_type = /obj/item/ammo_casing/a9mm/ap + +/* Seems to have been de-coded? +/obj/item/ammo_magazine/m9mml/flash + name = "\improper SMG magazine (9mm flash)" + ammo_type = /obj/item/ammo_casing/a9mmf + +/obj/item/ammo_magazine/m9mml/rubber + name = "\improper SMG magazine (9mm rubber)" + ammo_type = /obj/item/ammo_casing/a9mmr + +/obj/item/ammo_magazine/m9mml/practice + name = "\improper SMG magazine (9mm practice)" + ammo_type = /obj/item/ammo_casing/a9mmp +*/ diff --git a/code/modules/projectiles/guns/projectile/dartgun_vr.dm b/code/modules/projectiles/guns/projectile/dartgun_vr.dm new file mode 100644 index 00000000000..dda197ccc60 --- /dev/null +++ b/code/modules/projectiles/guns/projectile/dartgun_vr.dm @@ -0,0 +1,29 @@ +//-----------------------Tranq Gun---------------------------------- +/obj/item/weapon/gun/projectile/dartgun/tranq + name = "tranquilizer gun" + desc = "A gas-powered dart gun designed by the National Armory of Gaia. This gun is used primarily by United Federation special forces for Tactical Espionage missions. Don't forget your bandana." + icon_state = "tranqgun" + item_state = null + + caliber = "dart" + fire_sound = 'sound/weapons/empty.ogg' + fire_sound_text = "a metallic click" + recoil = 0 + silenced = 1 + load_method = MAGAZINE + magazine_type = /obj/item/ammo_magazine/chemdart + allowed_magazines = list(/obj/item/ammo_magazine/chemdart) + auto_eject = 0 + +/obj/item/weapon/gun/projectile/dartgun/tranq/update_icon() + if(!ammo_magazine) + icon_state = "tranqgun" + return 1 + + if(!ammo_magazine.stored_ammo || ammo_magazine.stored_ammo.len) + icon_state = "tranqgun" + else if(ammo_magazine.stored_ammo.len > 5) + icon_state = "tranqgun" + else + icon_state = "tranqgun" + return 1 diff --git a/code/modules/projectiles/guns/projectile/pistol_vr.dm b/code/modules/projectiles/guns/projectile/pistol_vr.dm index 7a76b125527..66d70ff5be1 100644 --- a/code/modules/projectiles/guns/projectile/pistol_vr.dm +++ b/code/modules/projectiles/guns/projectile/pistol_vr.dm @@ -9,4 +9,66 @@ magazine_type = /obj/item/ammo_magazine/m9mm/large/preban // Spawns with big magazines that are legal. /obj/item/weapon/gun/projectile/p92x/large/preban/hp - magazine_type = /obj/item/ammo_magazine/m9mm/large/preban/hp // Spawns with legal hollow-point mag \ No newline at end of file + magazine_type = /obj/item/ammo_magazine/m9mm/large/preban/hp // Spawns with legal hollow-point mag + +//////////////////// Eris Ported Guns //////////////////// +//HoS Gun +/obj/item/weapon/gun/projectile/lamia + name = "FS HG .44 \"Lamia\"" + desc = "Uses .44 rounds." + icon = 'icons/obj/gun_vr.dmi' + icon_state = "Headdeagle" + item_state = "revolver" + caliber = ".44" + magazine_type = /obj/item/ammo_magazine/m44/rubber + allowed_magazines = list(/obj/item/ammo_magazine/m44,/obj/item/ammo_magazine/m44/rubber) + load_method = MAGAZINE + auto_eject = 1 + auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' + origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 4) + +/obj/item/weapon/gun/projectile/lamia/update_icon() + overlays.Cut() + if(!ammo_magazine) + return + var/ratio = ammo_magazine.stored_ammo.len * 100 / ammo_magazine.max_ammo + ratio = round(ratio, 33) + overlays += "deagle_[ratio]" + +//Civilian gun +/obj/item/weapon/gun/projectile/giskard + name = "\improper \"Giskard\" holdout pistol" + desc = "The FS HG .380 \"Giskard\" can even fit into the pocket! Uses .380 rounds." + icon = 'icons/obj/gun_vr.dmi' + icon_state = "giskardcivil" + caliber = ".380" + magazine_type = /obj/item/ammo_magazine/m380 + allowed_magazines = list(/obj/item/ammo_magazine/m380) + load_method = MAGAZINE + w_class = ITEMSIZE_SMALL + fire_sound = 'sound/weapons/gunshot_pathetic.ogg' + origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 3) + +/obj/item/weapon/gun/projectile/giskard/update_icon() + ..() + if(ammo_magazine && ammo_magazine.stored_ammo.len) + icon_state = "giskardcivil" + else + icon_state = "giskardcivil_empty" + +//Not so civilian gun +/obj/item/weapon/gun/projectile/giskard/olivaw + name = "\improper \"Olivaw\" holdout burst-pistol" + desc = "The FS HG .380 \"Olivaw\" is a more advanced version of the \"Giskard\". This one seems to have a two-round burst-fire mode. Uses .380 rounds." + icon_state = "olivawcivil" + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=1.2, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="2-round bursts", burst=2, fire_delay=0.2, move_delay=4, burst_accuracy=list(0,-15), dispersion=list(1.2, 1.8)), + ) + +/obj/item/weapon/gun/projectile/giskard/olivaw/update_icon() + ..() + if(ammo_magazine && ammo_magazine.stored_ammo.len) + icon_state = "olivawcivil" + else + icon_state = "olivawcivil_empty" diff --git a/code/modules/projectiles/guns/projectile/revolver_vr.dm b/code/modules/projectiles/guns/projectile/revolver_vr.dm new file mode 100644 index 00000000000..3537cc48652 --- /dev/null +++ b/code/modules/projectiles/guns/projectile/revolver_vr.dm @@ -0,0 +1,115 @@ +//////////////////// Eris Ported Guns //////////////////// +//Detective gun +/obj/item/weapon/gun/projectile/revolver/consul + name = "\improper \"Consul\" Revolver" + desc = "Are you feeling lucky, punk? Uses .44 rounds." + icon = 'icons/obj/gun_vr.dmi' + icon_state = "inspector" + item_state = "revolver" + caliber = ".44" + ammo_type = /obj/item/ammo_casing/a44/rubber + handle_casings = CYCLE_CASINGS + origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3) + +/obj/item/weapon/gun/projectile/revolver/consul/proc/update_charge() + if(loaded.len==0) + overlays += "inspector_off" + else + overlays += "inspector_on" + +/obj/item/weapon/gun/projectile/revolver/consul/update_icon() + overlays.Cut() + update_charge() + +//.357 special ammo +/obj/item/ammo_magazine/s357/stun + name = "speedloader (.357 stun)" + desc = "A speedloader for .357 revolvers." + icon = 'icons/obj/ammo_vr.dmi' + icon_state = "s357" + caliber = ".357" + ammo_type = /obj/item/ammo_casing/a357/stun + + +/obj/item/ammo_casing/a357/stun + desc = "A .357 stun bullet casing." + caliber = ".357" + icon = 'icons/obj/ammo_vr.dmi' + icon_state = "stun357" + projectile_type = /obj/item/projectile/energy/electrode/stunshot/strong + +/obj/item/ammo_magazine/s357/rubber + name = "speedloader (.357 rubber)" + desc = "A speedloader for .357 revolvers." + icon = 'icons/obj/ammo_vr.dmi' + icon_state = "r357" + caliber = ".357" + ammo_type = /obj/item/ammo_casing/a357/rubber + + +/obj/item/ammo_casing/a357/rubber + desc = "A .357 rubber bullet casing." + caliber = ".357" + icon = 'icons/obj/ammo_vr.dmi' + icon_state = "rubber357" + projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong + +/obj/item/ammo_magazine/s357/flash + name = "speedloader (.357 flash)" + desc = "A speedloader for .357 revolvers." + icon = 'icons/obj/ammo_vr.dmi' + icon_state = "f357" + caliber = ".357" + ammo_type = /obj/item/ammo_casing/a357/flash + +/obj/item/ammo_casing/a357/flash + desc = "A .357 flash bullet casing." + caliber = ".357" + icon = 'icons/obj/ammo_vr.dmi' + icon_state = "flash357" + projectile_type = /obj/item/projectile/energy/flash/strong + +//.380 +/obj/item/ammo_casing/a380 + desc = "A .380 bullet casing." + caliber = ".380" + projectile_type = /obj/item/projectile/bullet/pistol + +/obj/item/ammo_magazine/m380 + name = "magazine (.380)" + icon_state = "9x19p" + origin_tech = list(TECH_COMBAT = 2) + mag_type = MAGAZINE + matter = list(DEFAULT_WALL_MATERIAL = 480) + caliber = ".380" + ammo_type = /obj/item/ammo_casing/a380 + max_ammo = 8 + multiple_sprites = 1 + +//.44 +/obj/item/ammo_casing/a44/rubber + icon_state = "r-casing" + desc = "A .44 rubber bullet casing." + projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong + +/obj/item/ammo_magazine/m44/rubber + desc = "A magazine for .44 less-than-lethal ammo." + ammo_type = /obj/item/ammo_casing/a44/rubber + +//.44 speedloaders +/obj/item/ammo_magazine/s44 + name = "speedloader (.44)" + desc = "A speedloader for .44 revolvers." + icon = 'icons/obj/ammo_vr.dmi' + icon_state = "s357" + caliber = ".44" + matter = list(DEFAULT_WALL_MATERIAL = 1260) + ammo_type = /obj/item/ammo_casing/a44 + max_ammo = 6 + multiple_sprites = 1 + mag_type = SPEEDLOADER + +/obj/item/ammo_magazine/s44/rubber + name = "speedloader (.44 rubber)" + icon_state = "r357" + ammo_type = /obj/item/ammo_casing/a44/rubber diff --git a/code/modules/projectiles/guns/projectile/shotgun_vr.dm b/code/modules/projectiles/guns/projectile/shotgun_vr.dm new file mode 100644 index 00000000000..09e90d4ffeb --- /dev/null +++ b/code/modules/projectiles/guns/projectile/shotgun_vr.dm @@ -0,0 +1,11 @@ +// For general use +/obj/item/weapon/gun/projectile/shotgun/pump/USDF + name = "\improper USDF tactical shotgun" + desc = "All you greenhorns who wanted to see Xenomorphs up close... this is your lucky day. Uses 12g rounds." + icon = 'icons/obj/gun_vr.dmi' + icon_state = "haloshotgun" + icon_override = 'icons/obj/gun_vr.dmi' + item_state = "haloshotgun_i" + item_icons = null + ammo_type = /obj/item/ammo_casing/a12g + max_shells = 12 diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index 6a4137b2969..343384f2905 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -4,7 +4,7 @@ name = "anti-materiel rifle" desc = "A portable anti-armour rifle fitted with a scope, the HI PTR-7 Rifle was originally designed to used against armoured exosuits. It is capable of punching through windows and non-reinforced walls with ease. Fires armor piercing 14.5mm shells." icon_state = "heavysniper" - item_state_slots = list(slot_r_hand_str = "l6closed-empty", slot_l_hand_str = "l6closed-empty") // placeholder + wielded_item_state = "heavysniper-wielded" w_class = ITEMSIZE_HUGE // So it can't fit in a backpack. force = 10 slot_flags = SLOT_BACK @@ -20,7 +20,7 @@ accuracy = -75 scoped_accuracy = 75 ignore_visor_zoom_restriction = TRUE // Ignore the restriction on vision modifiers when using this gun's scope. -// one_handed_penalty = 90 + one_handed_penalty = 90 var/bolt_open = 0 /obj/item/weapon/gun/projectile/heavysniper/update_icon() @@ -79,6 +79,7 @@ desc = "The SVD, also known as the Dragunov, is mass produced with an Optical Sniper Sight so simple that even Ivan can use it. Too bad for you that the inscriptions are written in Russian. Uses 7.62mm rounds." icon_state = "SVD" item_state = "SVD" + wielded_item_state = "heavysniper-wielded" //Placeholder w_class = ITEMSIZE_HUGE // So it can't fit in a backpack. force = 10 slot_flags = SLOT_BACK // Needs a sprite. @@ -88,8 +89,7 @@ load_method = MAGAZINE accuracy = -45 //shooting at the hip 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. + 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/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/projectile/sniper_vr.dm b/code/modules/projectiles/guns/projectile/sniper_vr.dm deleted file mode 100644 index 649fc4ba3da..00000000000 --- a/code/modules/projectiles/guns/projectile/sniper_vr.dm +++ /dev/null @@ -1,36 +0,0 @@ -////////////// Dragunov Sniper Rifle ////////////// - -/obj/item/weapon/gun/projectile/SVD - name = "\improper Dragunov" - desc = "The SVD, also known as the Dragunov, was mass produced with an Optical Sniper Sight so simple that even Ivan can figure out how it works. Too bad for you that it's written in Russian. Uses 7.62mm rounds." - icon_state = "SVD" - item_state = "SVD" - w_class = ITEMSIZE_HUGE // So it can't fit in a backpack. - force = 10 - slot_flags = SLOT_BACK // Needs a sprite. - origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 2, TECH_ILLEGAL = 8) - recoil = 2 //extra kickback - caliber = "a762" - load_method = MAGAZINE - accuracy = -45 //shooting at the hip - scoped_accuracy = 0 - 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' - magazine_type = /obj/item/ammo_magazine/m762 - allowed_magazines = list(/obj/item/ammo_magazine/m762) - -/obj/item/weapon/gun/projectile/SVD/update_icon() - ..() -// if(istype(ammo_magazine,/obj/item/ammo_magazine/m762) -// icon_state = "SVD-bigmag" //No icon for this exists yet. - if(ammo_magazine) - icon_state = "SVD" - else - icon_state = "SVD-empty" - -/obj/item/weapon/gun/projectile/SVD/verb/scope() - set category = "Object" - set name = "Use Scope" - set popup_menu = 1 - - toggle_scope(2.0) \ No newline at end of file diff --git a/code/modules/projectiles/projectile/arc.dm b/code/modules/projectiles/projectile/arc.dm index 1f19dc0242e..12f135a9bbb 100644 --- a/code/modules/projectiles/projectile/arc.dm +++ b/code/modules/projectiles/projectile/arc.dm @@ -49,7 +49,6 @@ on_impact(loc) return ..() - /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. @@ -168,3 +167,34 @@ /obj/item/projectile/arc/radioactive/on_impact(turf/T) SSradiation.radiate(T, rad_power) + +// Blob mortar +/obj/item/projectile/arc/spore + name = "spore" + icon_state = "declone" + damage = 20 + damage_type = BIOACID + armor_penetration = 30 + fire_sound = 'sound/effects/slime_squish.ogg' + +/obj/item/projectile/arc/spore/on_impact(turf/T) + for(var/mob/living/L in T) + attack_mob(L) + + spawn() + T.visible_message("\The [src] covers \the [T] in a corrosive paste!") + for(var/turf/simulated/floor/F in view(2, T)) + spawn() + var/obj/effect/effect/water/splash = new(T) + splash.create_reagents(15) + splash.reagents.add_reagent("stomacid", 5) + splash.reagents.add_reagent("blood", 10,list("blood_colour" = "#ec4940")) + splash.set_color() + + splash.set_up(F, 2, 3) + + var/obj/effect/decal/cleanable/chemcoating/acid = locate() in T + if(!istype(acid)) + acid = new(T) + acid.reagents.add_reagent("stomacid", 5) + acid.update_icon() diff --git a/code/modules/projectiles/projectile/blob.dm b/code/modules/projectiles/projectile/blob.dm index 7ebc5cdfad7..f73fe9d0088 100644 --- a/code/modules/projectiles/projectile/blob.dm +++ b/code/modules/projectiles/projectile/blob.dm @@ -28,9 +28,9 @@ /obj/item/projectile/energy/blob/on_impact(var/atom/A) if(splatter) var/turf/location = get_turf(src) - var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem + var/datum/effect/effect/system/smoke_spread/chem/blob/S = new /datum/effect/effect/system/smoke_spread/chem/blob S.attach(location) - S.set_up(reagents, splatter_volume, 0, location) + S.set_up(reagents, rand(1, splatter_volume), 0, location) playsound(location, 'sound/effects/slime_squish.ogg', 30, 1, -3) spawn(0) S.start() @@ -70,3 +70,12 @@ /obj/item/projectile/energy/blob/freezing/splattering splatter = TRUE + +/obj/item/projectile/bullet/thorn + name = "spike" + icon_state = "SpearFlight" + damage = 20 + damage_type = BIOACID + armor_penetration = 20 + penetrating = 3 + fire_sound = 'sound/effects/slime_squish.ogg' diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm index 68085f5a99c..80ccc0ced5e 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm @@ -960,7 +960,7 @@ color = "#605048" overdose = REAGENTS_OVERDOSE -/datum/reagent/ethylredoxrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/datum/reagent/ethylredoxrazine/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) if(alien == IS_DIONA) return M.dizziness = 0 @@ -971,6 +971,14 @@ for(var/datum/reagent/R in M.ingested.reagent_list) if(istype(R, /datum/reagent/ethanol)) R.remove_self(removed * 30) + +/datum/reagent/ethylredoxrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + if(alien == IS_DIONA) + return + M.dizziness = 0 + M.drowsyness = 0 + M.stuttering = 0 + M.SetConfused(0) if(M.bloodstr) for(var/datum/reagent/R in M.bloodstr.reagent_list) if(istype(R, /datum/reagent/ethanol)) diff --git a/code/modules/reagents/Chemistry-Recipes_vr.dm b/code/modules/reagents/Chemistry-Recipes_vr.dm index 14b7ff8481a..6044f611fed 100644 --- a/code/modules/reagents/Chemistry-Recipes_vr.dm +++ b/code/modules/reagents/Chemistry-Recipes_vr.dm @@ -205,7 +205,20 @@ O.show_message(text("The slime core fizzles disappointingly."), 1) return - var/blocked = list(/obj/item/stack/material, /obj/item/stack/material/cyborg, /obj/item/stack/material/cyborg/plastic, /obj/item/stack/material/cyborg/plasteel, /obj/item/stack/material/cyborg/glass/reinforced, /obj/item/stack/material/cyborg/wood, /obj/item/stack/material/animalhide/human, /obj/item/stack/material/animalhide/corgi, /obj/item/stack/material/animalhide/cat, /obj/item/stack/material/animalhide/monkey, /obj/item/stack/material/animalhide/lizard , /obj/item/stack/material/animalhide/xeno, /obj/item/stack/material/cyborg, /obj/item/stack/material/cyborg/glass/reinforced) + var/blocked = list( + /obj/item/stack/material, //Technical stacks + /obj/item/stack/material/hairlesshide, //Useless leather production steps + /obj/item/stack/material/wetleather, + /obj/item/stack/material/algae/ten) //Why is this one even a separate thing + blocked += typesof(/obj/item/stack/material/cyborg) //Borg matter synths, should only exist in borgs + blocked += typesof(/obj/item/stack/material/animalhide) //Hides which are only used for leather production anyway + + var/rare_types = list( + /obj/item/stack/material/morphium, //Complex materials requiring Particle Smasher to create + /obj/item/stack/material/morphium/hull, + /obj/item/stack/material/valhollide, + /obj/item/stack/material/supermatter) + var/list/material = typesof(/obj/item/stack/material) - blocked playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) @@ -216,6 +229,8 @@ */ var/spawn_amount = rand(1,50) var/chosen = pick(material) + if(chosen in rare_types) + spawn_amount = rand(1,15) var/obj/item/stack/material/C = new chosen C.amount = spawn_amount C.loc = get_turf(holder.my_atom) @@ -323,10 +338,6 @@ required_reagents = list("phoron" = 20, "sugar" = 50, "lithium" = 50) //In case a xenobiologist is impatient and is willing to drain their dispenser resources, along with plasma! result_amount = 5 - - - -/* //VORESTATION AI TEMPORARY REMOVAL /datum/chemical_reaction/slimevore name = "Slime Vore" // Hostile vore mobs only id = "m_tele" @@ -335,12 +346,44 @@ result_amount = 1 on_reaction(var/datum/reagents/holder) var/mob_path = /mob/living/simple_mob - var/blocked = list( - /mob/living/simple_mob/hostile/mimic, - /mob/living/simple_mob/animal/space/alien/queen, - /mob/living/simple_mob/shadekin + var/blocked = list( //List of things we do NOT want to spawn + /mob/living/simple_mob, //Technical parent mobs + /mob/living/simple_mob/animal, + /mob/living/simple_mob/animal/passive, + /mob/living/simple_mob/animal/space, + /mob/living/simple_mob/blob, + /mob/living/simple_mob/mechanical, + /mob/living/simple_mob/mechanical/mecha, + /mob/living/simple_mob/slime, + /mob/living/simple_mob/vore, + /mob/living/simple_mob/vore/aggressive, + /mob/living/simple_mob/illusion, //Other technical mobs + /mob/living/simple_mob/animal/passive/crab/Coffee, //Unique pets/named mobs + /mob/living/simple_mob/animal/passive/cat/runtime, + /mob/living/simple_mob/animal/passive/cat/bones, + /mob/living/simple_mob/animal/passive/cat/tabiranth, + /mob/living/simple_mob/animal/passive/dog/corgi/puppy/Bockscar, + /mob/living/simple_mob/animal/passive/dog/corgi/Ian, + /mob/living/simple_mob/animal/passive/dog/corgi/Lisa, + /mob/living/simple_mob/animal/passive/dog/tamaskan/Spice, + /mob/living/simple_mob/animal/passive/fox/renault, + /mob/living/simple_mob/animal/passive/bird/azure_tit/tweeter, + /mob/living/simple_mob/animal/passive/bird/parrot/poly, + /mob/living/simple_mob/animal/sif/fluffy, + /mob/living/simple_mob/animal/sif/fluffy/silky, + /mob/living/simple_mob/animal/passive/snake/noodle, + /mob/living/simple_mob/slime/xenobio/rainbow/kendrick, + /mob/living/simple_mob/animal/space/space_worm, //Space Worm parts that aren't proper heads + /mob/living/simple_mob/animal/space/space_worm/head/severed, + /mob/living/simple_mob/animal/borer, //Event/player-control-only mobs + /mob/living/simple_mob/vore/hostile/morph )//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 + blocked += typesof(/mob/living/simple_mob/mechanical/ward) //Wards that should be created with ward items, are mobs mostly on technicalities + blocked += typesof(/mob/living/simple_mob/construct) //Should only exist + blocked += typesof(/mob/living/simple_mob/vore/demon) //as player-controlled + blocked += typesof(/mob/living/simple_mob/shadekin) //and/or event things + blocked += typesof(/mob/living/simple_mob/horror) + var/list/voremobs = typesof(mob_path) - blocked // list of possible hostile mobs playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) /* Removed at some point, unsure what to replace with @@ -351,13 +394,13 @@ var/spawn_count = rand(1,3) for(var/i = 1, i <= spawn_count, i++) var/chosen = pick(voremobs) - var/mob/living/simple_mob/hostile/C = new chosen + var/mob/living/simple_mob/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)) -*/ + /datum/chemical_reaction/food/syntiflesh required_reagents = list("blood" = 5, "clonexadone" = 1) diff --git a/code/modules/research/designs/circuits/circuits.dm b/code/modules/research/designs/circuits/circuits.dm index 4028342577d..4717e14bdcb 100644 --- a/code/modules/research/designs/circuits/circuits.dm +++ b/code/modules/research/designs/circuits/circuits.dm @@ -570,36 +570,6 @@ CIRCUITS BELOW build_path = /obj/item/weapon/circuitboard/telecomms/exonet_node sort_string = "PAAAH" -/datum/design/circuit/shield - req_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3) - materials = list("glass" = 2000, "gold" = 1000) - -/datum/design/circuit/shield/AssembleDesignName() - name = "Shield generator circuit design ([name])" -/datum/design/circuit/shield/AssembleDesignDesc() - if(!desc) - desc = "Allows for the construction of \a [name] shield generator." - -/datum/design/circuit/shield/bubble - name = "bubble" - id = "shield_gen" - build_path = /obj/item/weapon/circuitboard/shield_gen - sort_string = "VAAAZ" // Duplicate string, really need to redo this whole thing - -/datum/design/circuit/shield/hull - name = "hull" - id = "shield_gen_ex" - build_path = /obj/item/weapon/circuitboard/shield_gen_ex - sort_string = "VAAAB" - -/datum/design/circuit/shield/capacitor - name = "capacitor" - desc = "Allows for the construction of a shield capacitor circuit board." - id = "shield_cap" - req_tech = list(TECH_MAGNET = 3, TECH_POWER = 4) - build_path = /obj/item/weapon/circuitboard/shield_cap - sort_string = "VAAAC" - /datum/design/circuit/ntnet_relay name = "NTNet Quantum Relay" id = "ntnet_relay" @@ -621,6 +591,20 @@ CIRCUITS BELOW build_path = /obj/item/weapon/circuitboard/microwave/advanced sort_string = "MAAAC" +/datum/design/circuit/shield_generator + name = "shield generator" + id = "shield_generator" + req_tech = list(TECH_MAGNET = 3, TECH_POWER = 4, TECH_BLUESPACE = 2, TECH_ENGINEERING = 3) + build_path = /obj/item/weapon/circuitboard/shield_generator + sort_string = "OAAAA" + +/datum/design/circuit/shield_diffuser + name = "shield diffuser" + id = "shield_diffuser" + req_tech = list(TECH_MAGNET = 4, TECH_POWER = 2, TECH_ENGINEERING = 5) + build_path = /obj/item/weapon/circuitboard/shield_diffuser + sort_string = "OAAAB" + /datum/design/circuit/pointdefense name = "point defense battery" id = "pointdefense" @@ -634,12 +618,3 @@ CIRCUITS BELOW req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_COMBAT = 2) build_path = /obj/item/weapon/circuitboard/pointdefense_control sort_string = "OAABB" - -/* I have no idea how this was even running before, but it doesn't seem to be necessary. -/////////////////////////////////// -/////////Shield Generators///////// -/////////////////////////////////// -/datum/design/circuit/shield - req_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3) - materials = list("$glass" = 2000, "sacid" = 20, "$phoron" = 10000, "$diamond" = 5000, "$gold" = 10000) -*/ diff --git a/code/modules/research/designs/weapons_vr.dm b/code/modules/research/designs/weapons_vr.dm index 0cde7758c48..e55bbd9eb75 100644 --- a/code/modules/research/designs/weapons_vr.dm +++ b/code/modules/research/designs/weapons_vr.dm @@ -14,7 +14,7 @@ id = "protector" req_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3, TECH_MAGNET = 2) materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 2000, "silver" = 1000) - build_path = /obj/item/weapon/gun/energy/protector + build_path = /obj/item/weapon/gun/energy/gun/protector sort_string = "MAAVA" /datum/design/item/weapon/energy/sickshot diff --git a/code/modules/shieldgen/energy_shield.dm b/code/modules/shieldgen/energy_shield.dm new file mode 100644 index 00000000000..d6218eac8fe --- /dev/null +++ b/code/modules/shieldgen/energy_shield.dm @@ -0,0 +1,357 @@ +// +// This is the shield effect object for the supercool shield gens. +// +/obj/effect/shield + name = "energy shield" + desc = "An impenetrable field of energy, capable of blocking anything as long as it's active." + icon = 'icons/obj/machines/shielding.dmi' + icon_state = "shield" + anchored = 1 + plane = MOB_PLANE + layer = ABOVE_MOB_LAYER + density = 1 + invisibility = 0 + var/obj/machinery/power/shield_generator/gen = null // Owning generator + var/disabled_for = 0 + var/diffused_for = 0 + can_atmos_pass = ATMOS_PASS_YES + var/enabled_icon_state + +/obj/effect/shield/proc/update_visuals() + update_iconstate() + update_color() + update_glow() + update_opacity() + +/obj/effect/shield/proc/update_iconstate() + if(!enabled_icon_state) + enabled_icon_state = icon_state + + if(disabled_for || diffused_for) + icon_state = "shield_broken" + overlays.Cut() //NOT ssoverlays + else + icon_state = enabled_icon_state + flags |= OVERLAY_QUEUED //Trick SSoverlays + SSoverlays.queue += src + +/obj/effect/shield/proc/update_color() + if(disabled_for || diffused_for) + color = "#FFA500" + else if(gen?.check_flag(MODEFLAG_OVERCHARGE)) + color = "#FE6666" + else + color = "#00AAFF" + +/obj/effect/shield/proc/update_glow() + if(density) + set_light(3, 3, "#66FFFF") + else + set_light(0) + +/obj/effect/shield/proc/update_opacity() + if(gen?.check_flag(MODEFLAG_PHOTONIC) && !disabled_for && !diffused_for) + set_opacity(1) + else + set_opacity(0) + +// Prevents singularities and pretty much everything else from moving the field segments away. +// The only thing that is allowed to move us is the Destroy() proc. +/obj/effect/shield/forceMove() + if(QDELING(src)) + return ..() + return 0 + +/obj/effect/shield/Destroy() + if(can_atmos_pass != ATMOS_PASS_YES) + update_nearby_tiles() //Force ZAS update + . = ..() + if(gen) + if(src in gen.field_segments) + gen.field_segments -= src + if(src in gen.damaged_segments) + gen.damaged_segments -= src + gen = null + +// Temporarily collapses this shield segment. +/obj/effect/shield/proc/fail(var/duration) + if(duration <= 0) + return + + if(gen) + gen.damaged_segments |= src + disabled_for += duration + + set_density(0) + update_visuals() + update_nearby_tiles() //Force ZAS update + update_explosion_resistance() + +// Regenerates this shield segment. +/obj/effect/shield/proc/regenerate() + if(!gen) + return + + disabled_for = max(0, disabled_for - 1) + diffused_for = max(0, diffused_for - 1) + + if(!disabled_for && !diffused_for) + set_density(1) + update_visuals() + update_nearby_tiles() //Force ZAS update + update_explosion_resistance() + gen.damaged_segments -= src + +/obj/effect/shield/proc/diffuse(var/duration) + // The shield is trying to counter diffusers. Cause lasting stress on the shield. + if(gen?.check_flag(MODEFLAG_BYPASS) && !disabled_for) + take_damage(duration * rand(8, 12), SHIELD_DAMTYPE_EM) + return + + diffused_for = max(duration, 0) + gen?.damaged_segments |= src + + set_density(0) + update_visuals() + update_nearby_tiles() //Force ZAS update + update_explosion_resistance() + +/obj/effect/shield/attack_generic(var/source, var/damage, var/emote) + take_damage(damage, SHIELD_DAMTYPE_PHYSICAL) + if(gen.check_flag(MODEFLAG_OVERCHARGE) && istype(source, /mob/living/)) + overcharge_shock(source) + ..(source, damage, emote) + + +// Fails shield segments in specific range. Range of 1 affects the shielded turf only. +/obj/effect/shield/proc/fail_adjacent_segments(var/range, var/hitby = null) + if(hitby) + visible_message("\The [src] flashes a bit as \the [hitby] collides with it, eventually fading out in a rain of sparks!") + else + visible_message("\The [src] flashes a bit as it eventually fades out in a rain of sparks!") + fail(range * 2) + + for(var/obj/effect/shield/S in range(range, src)) + // Don't affect shields owned by other shield generators + if(S.gen != src.gen) + continue + // The closer we are to impact site, the longer it takes for shield to come back up. + S.fail(-(-range + get_dist(src, S)) * 2) + +// Small visual effect, makes the shield tiles brighten up by becoming more opaque for a moment, and spreads to nearby shields. +/obj/effect/shield/proc/flash_adjacent_segments(var/range) + range = between(1, range, 10) // Sanity check + for(var/obj/effect/shield/S in range(range, src)) + // Don't affect shields owned by other shield generators + if(S.gen != src.gen || S == src) + continue + // Note: Range is a non-exact aproximation of the spread effect. If it doesn't look good + // we'll need to switch to actually walking along the shields to get exact number of steps away. + addtimer(CALLBACK(S, .proc/impact_flash), get_dist(src, S) * 2) + impact_flash() + +// Small visual effect, makes the shield tiles brighten up by becoming more opaque for a moment +/obj/effect/shield/proc/impact_flash() + alpha = 100 + animate(src, alpha = initial(alpha), time = 1 SECOND) + +// Just for fun +/obj/effect/shield/attack_hand(var/user) + flash_adjacent_segments(3) + +/obj/effect/shield/take_damage(var/damage, var/damtype, var/hitby) + if(!gen) + qdel(src) + return + + if(!damtype) + crash_with("CANARY: shield.take_damage() callled without damtype.") + + if(!damage) + return + + damage = round(damage) + + new /obj/effect/temp_visual/shield_impact_effect(get_turf(src)) + + switch(gen.deal_shield_damage(damage, damtype)) + if(SHIELD_ABSORBED) + flash_adjacent_segments(round(damage/10)) // Nice visual effect only. + return + if(SHIELD_BREACHED_MINOR) + fail_adjacent_segments(rand(1, 3), hitby) + return + if(SHIELD_BREACHED_MAJOR) + fail_adjacent_segments(rand(2, 5), hitby) + return + if(SHIELD_BREACHED_CRITICAL) + fail_adjacent_segments(rand(4, 8), hitby) + return + if(SHIELD_BREACHED_FAILURE) + fail_adjacent_segments(rand(8, 16), hitby) + return + + +// As we have various shield modes, this handles whether specific things can pass or not. +/obj/effect/shield/CanPass(var/atom/movable/mover, var/turf/target) + // Somehow we don't have a generator. This shouldn't happen. Delete the shield. + if(!gen) + qdel(src) + return 1 + + if(disabled_for || diffused_for) + return 1 + + if(mover) + return mover.can_pass_shield(gen) + return 1 + +/obj/effect/shield/proc/set_can_atmos_pass(var/new_value) + if(new_value == can_atmos_pass) + return + can_atmos_pass = new_value + update_nearby_tiles() //Force ZAS update + + +// EMP. It may seem weak but keep in mind that multiple shield segments are likely to be affected. +/obj/effect/shield/emp_act(var/severity) + if(!disabled_for) + take_damage(rand(30,60) / severity, SHIELD_DAMTYPE_EM) + + +// Explosions +/obj/effect/shield/ex_act(var/severity) + if(!disabled_for) + take_damage(rand(10,15) / severity, SHIELD_DAMTYPE_PHYSICAL) + + +// Fire +/obj/effect/shield/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(!disabled_for) + take_damage(rand(5,10), SHIELD_DAMTYPE_HEAT) + + +// Projectiles +/obj/effect/shield/bullet_act(var/obj/item/projectile/proj) + if(proj.damage_type == BURN) + take_damage(proj.get_structure_damage(), SHIELD_DAMTYPE_HEAT) + else if (proj.damage_type == BRUTE) + take_damage(proj.get_structure_damage(), SHIELD_DAMTYPE_PHYSICAL) + else //TODO - This will never happen because of get_structure_damage() only returning values for BRUTE and BURN damage types + take_damage(proj.get_structure_damage(), SHIELD_DAMTYPE_EM) + + +// Attacks with hand tools. Blocked by Hyperkinetic flag. +/obj/effect/shield/attackby(var/obj/item/weapon/I as obj, var/mob/user as mob) + user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) + user.do_attack_animation(src) + + if(gen.check_flag(MODEFLAG_HYPERKINETIC)) + user.visible_message("\The [user] hits \the [src] with \the [I]!") + if(I.damtype == BURN) + take_damage(I.force, SHIELD_DAMTYPE_HEAT) + else if (I.damtype == BRUTE) + take_damage(I.force, SHIELD_DAMTYPE_PHYSICAL) + else + take_damage(I.force, SHIELD_DAMTYPE_EM) + else + user.visible_message("\The [user] tries to attack \the [src] with \the [I], but it passes through!") + + +// Special treatment for meteors because they would otherwise penetrate right through the shield. +/obj/effect/shield/Bumped(var/atom/movable/mover) + if(!gen) + qdel(src) + return 0 + mover.shield_impact(src) + return ..() + +// Meteors call this instad of Bumped for some reason +/obj/effect/shield/handle_meteor_impact(var/obj/effect/meteor/meteor) + meteor.shield_impact(src) + return !QDELETED(meteor) // If it was stopped it will have been deleted + +/obj/effect/shield/proc/overcharge_shock(var/mob/living/M) + M.adjustFireLoss(rand(20, 40)) + M.Weaken(5) + to_chat(M, "As you come into contact with \the [src] a surge of energy paralyses you!") + take_damage(10, SHIELD_DAMTYPE_EM) + +// Called when a flag is toggled. Can be used to add on-toggle behavior, such as visual changes. +/obj/effect/shield/proc/flags_updated() + if(!gen) + qdel(src) + return + + // Update airflow - If atmospheric we block air as long as we're enabled (density works for this) + set_can_atmos_pass(gen.check_flag(MODEFLAG_ATMOSPHERIC) ? ATMOS_PASS_DENSITY : ATMOS_PASS_YES) + update_visuals() + update_explosion_resistance() + +/obj/effect/shield/proc/update_explosion_resistance() + if(gen && gen.check_flag(MODEFLAG_HYPERKINETIC)) + explosion_resistance = INFINITY + else + explosion_resistance = 0 + +// +// Visual effect of shield taking impact +// +/obj/effect/temp_visual/shield_impact_effect + name = "shield impact" + icon = 'icons/obj/machines/shielding.dmi' + icon_state = "shield_impact" + plane = MOB_PLANE + layer = ABOVE_MOB_LAYER + duration = 2 SECONDS + randomdir = FALSE + +// +// Shield collision checks below +// + +// Called only if shield is active/not destroyed etc. +/atom/movable/proc/can_pass_shield(var/obj/machinery/power/shield_generator/gen) + return 1 + + +// Other mobs +/mob/living/can_pass_shield(var/obj/machinery/power/shield_generator/gen) + return !gen.check_flag(MODEFLAG_NONHUMANS) + +// Human mobs +/mob/living/carbon/human/can_pass_shield(var/obj/machinery/power/shield_generator/gen) + if(isSynthetic()) + return !gen.check_flag(MODEFLAG_ANORGANIC) + return !gen.check_flag(MODEFLAG_HUMANOIDS) + +// Silicon mobs +/mob/living/silicon/can_pass_shield(var/obj/machinery/power/shield_generator/gen) + return !gen.check_flag(MODEFLAG_ANORGANIC) + + +// Generic objects. Also applies to bullets and meteors. +/obj/can_pass_shield(var/obj/machinery/power/shield_generator/gen) + return !gen.check_flag(MODEFLAG_HYPERKINETIC) + +// Beams +/obj/item/projectile/beam/can_pass_shield(var/obj/machinery/power/shield_generator/gen) + return !gen.check_flag(MODEFLAG_PHOTONIC) + + +// Shield on-impact logic here. This is called only if the object is actually blocked by the field (can_pass_shield applies first) +/atom/movable/proc/shield_impact(var/obj/effect/shield/S) + return + +/mob/living/shield_impact(var/obj/effect/shield/S) + if(!S.gen.check_flag(MODEFLAG_OVERCHARGE)) + return + S.overcharge_shock(src) + +/obj/effect/meteor/shield_impact(var/obj/effect/shield/S) + if(!S.gen.check_flag(MODEFLAG_HYPERKINETIC)) + return + S.take_damage(get_shield_damage(), SHIELD_DAMTYPE_PHYSICAL, src) + visible_message("\The [src] breaks into dust!") + make_debris() + qdel(src) diff --git a/code/modules/shieldgen/handheld_defuser.dm b/code/modules/shieldgen/handheld_defuser.dm index 7b4fdd786bc..21eca0587fe 100644 --- a/code/modules/shieldgen/handheld_defuser.dm +++ b/code/modules/shieldgen/handheld_defuser.dm @@ -1,20 +1,20 @@ /obj/item/weapon/shield_diffuser name = "portable shield diffuser" - desc = "A small handheld device designed to disrupt energy barriers" + desc = "A small handheld device designed to disrupt energy barriers." description_info = "This device disrupts shields on directly adjacent tiles (in a + shaped pattern), in a similar way the floor mounted variant does. It is, however, portable and run by an internal battery. Can be recharged with a regular recharger." icon = 'icons/obj/machines/shielding.dmi' icon_state = "hdiffuser_off" + origin_tech = list(TECH_MAGNET = 5, TECH_POWER = 5, TECH_ILLEGAL = 2) var/obj/item/weapon/cell/device/cell var/enabled = 0 -/obj/item/weapon/shield_diffuser/New() +/obj/item/weapon/shield_diffuser/Initialize() + . = ..() cell = new(src) - ..() /obj/item/weapon/shield_diffuser/Destroy() - qdel(cell) - cell = null + QDEL_NULL(cell) if(enabled) STOP_PROCESSING(SSobj, src) . = ..() @@ -24,10 +24,15 @@ /obj/item/weapon/shield_diffuser/process() if(!enabled) - return + return PROCESS_KILL for(var/direction in cardinal) var/turf/simulated/shielded_tile = get_step(get_turf(src), direction) + for(var/obj/effect/shield/S in shielded_tile) + // 10kJ per pulse, but gap in the shield lasts for longer than regular diffusers. + if(istype(S) && !S.diffused_for && !S.disabled_for && cell.checked_use(10 KILOWATTS * CELLRATE)) + S.diffuse(20) + // Legacy shield support for(var/obj/effect/energy_field/S in shielded_tile) if(istype(S) && cell.checked_use(10 KILOWATTS * CELLRATE)) qdel(S) @@ -38,16 +43,16 @@ else icon_state = "hdiffuser_off" -/obj/item/weapon/shield_diffuser/attack_self() +/obj/item/weapon/shield_diffuser/attack_self(mob/user) enabled = !enabled update_icon() if(enabled) START_PROCESSING(SSobj, src) else STOP_PROCESSING(SSobj, src) - to_chat(usr, "You turn \the [src] [enabled ? "on" : "off"].") + to_chat(user, "You turn \the [src] [enabled ? "on" : "off"].") -/obj/item/weapon/shield_diffuser/examine() +/obj/item/weapon/shield_diffuser/examine(mob/user) . = ..() - to_chat(usr, "The charge meter reads [cell ? cell.percent() : 0]%") - to_chat(usr, "It is [enabled ? "enabled" : "disabled"].") \ No newline at end of file + to_chat(user, "The charge meter reads [cell ? cell.percent() : 0]%") + to_chat(user, "It is [enabled ? "enabled" : "disabled"].") \ No newline at end of file diff --git a/code/modules/shieldgen/shield_diffuser.dm b/code/modules/shieldgen/shield_diffuser.dm index 9c42e22b573..52c57db0202 100644 --- a/code/modules/shieldgen/shield_diffuser.dm +++ b/code/modules/shieldgen/shield_diffuser.dm @@ -4,6 +4,7 @@ description_info = "This device disrupts shields on directly adjacent tiles (in a + shaped pattern). They are commonly installed around exterior airlocks to prevent shields from blocking EVA access." icon = 'icons/obj/machines/shielding.dmi' icon_state = "fdiffuser_on" + circuit = /obj/item/weapon/circuitboard/shield_diffuser use_power = USE_POWER_ACTIVE idle_power_usage = 25 // Previously 100. active_power_usage = 500 // Previously 2000 @@ -13,12 +14,17 @@ var/alarm = 0 var/enabled = 1 -/obj/machinery/shield_diffuser/New() - ..() +/obj/machinery/shield_diffuser/Initialize() + . = ..() + // TODO - Remove this bit once machines are converted to Initialize + if(ispath(circuit)) + circuit = new circuit(src) + default_apply_parts() + var/turf/T = get_turf(src) hide(!T.is_plating()) -//If underfloor, hide the cable +//If underfloor, hide the cable^H^H diffuser /obj/machinery/shield_diffuser/hide(var/i) if(istype(loc, /turf)) invisibility = i ? 101 : 0 @@ -38,6 +44,9 @@ return for(var/direction in cardinal) var/turf/simulated/shielded_tile = get_step(get_turf(src), direction) + for(var/obj/effect/shield/S in shielded_tile) + S.diffuse(5) + // Legacy shield support for(var/obj/effect/energy_field/S in shielded_tile) qdel(S) @@ -50,16 +59,27 @@ else icon_state = "fdiffuser_on" -/obj/machinery/shield_diffuser/attack_hand() +/obj/machinery/shield_diffuser/attack_hand(mob/user as mob) + if((. = ..())) + return if(alarm) - to_chat(usr, "You press an override button on \the [src], re-enabling it.") + to_chat(user, "You press an override button on \the [src], re-enabling it.") alarm = 0 update_icon() return enabled = !enabled update_use_power(enabled ? USE_POWER_ACTIVE : USE_POWER_IDLE) update_icon() - to_chat(usr, "You turn \the [src] [enabled ? "on" : "off"].") + to_chat(user, "You turn \the [src] [enabled ? "on" : "off"].") + +/obj/machinery/shield_diffuser/attackby(var/obj/item/W, var/mob/user) + if(default_deconstruction_screwdriver(user, W)) + return + if(default_deconstruction_crowbar(user, W)) + return + if(default_part_replacement(user, W)) + return + return ..() /obj/machinery/shield_diffuser/proc/meteor_alarm(var/duration) if(!duration) @@ -71,4 +91,4 @@ . = ..() to_chat(user, "It is [enabled ? "enabled" : "disabled"].") if(alarm) - to_chat(user, "A red LED labeled \"Proximity Alarm\" is blinking on the control panel.") \ No newline at end of file + to_chat(user, "A red LED labeled \"Proximity Alarm\" is blinking on the control panel.") diff --git a/code/modules/shieldgen/shield_generator.dm b/code/modules/shieldgen/shield_generator.dm new file mode 100644 index 00000000000..824eb86f66f --- /dev/null +++ b/code/modules/shieldgen/shield_generator.dm @@ -0,0 +1,721 @@ +// +// This generator is for the supercool big shields intended for ships that do nice stuff with overmaps. +// +/obj/machinery/power/shield_generator + name = "advanced shield generator" + desc = "A heavy-duty shield generator and capacitor, capable of generating energy shields at large distances." + icon = 'icons/obj/machines/shielding.dmi' + icon_state = "generator0" + circuit = /obj/item/weapon/circuitboard/shield_generator + density = 1 + var/datum/wires/shield_generator/wires = null + var/list/field_segments = list() // List of all shield segments owned by this generator. + var/list/damaged_segments = list() // List of shield segments that have failed and are currently regenerating. + var/shield_modes = 0 // Enabled shield mode flags + var/mitigation_em = 0 // Current EM mitigation + var/mitigation_physical = 0 // Current Physical mitigation + var/mitigation_heat = 0 // Current Burn mitigation + var/mitigation_max = 0 // Maximal mitigation reachable with this generator. Set by RefreshParts() + var/max_energy = 0 // Maximal stored energy. In joules. Depends on the type of used SMES coil when constructing this generator. + var/current_energy = 0 // Current stored energy. + var/field_radius = 1 // Current field radius. + var/target_radius = 1 // Desired field radius. + var/running = SHIELD_OFF // Whether the generator is enabled or not. + var/input_cap = 1 MEGAWATTS // Currently set input limit. Set to 0 to disable limits altogether. The shield will try to input this value per tick at most + var/upkeep_power_usage = 0 // Upkeep power usage last tick. + var/upkeep_multiplier = 1 // Multiplier of upkeep values. + var/power_coefficient = 1 // Multiplier of overall power usage (for mappers, subtypes, etc) + var/power_usage = 0 // Total power usage last tick. + var/overloaded = 0 // Whether the field has overloaded and shut down to regenerate. + var/hacked = 0 // Whether the generator has been hacked by cutting the safety wire. + var/offline_for = 0 // The generator will be inoperable for this duration in ticks. + var/input_cut = 0 // Whether the input wire is cut. + var/mode_changes_locked = 0 // Whether the control wire is cut, locking out changes. + var/ai_control_disabled = 0 // Whether the AI control is disabled. + var/list/mode_list = null // A list of shield_mode datums. + var/full_shield_strength = 0 // The amount of power shields need to be at full operating strength. + var/initial_shield_modes = MODEFLAG_HYPERKINETIC|MODEFLAG_EM|MODEFLAG_ATMOSPHERIC|MODEFLAG_HUMANOIDS + + var/idle_multiplier = 1 // Trades off cost vs. spin-up time from idle to running + var/idle_valid_values = list(1, 2, 5, 10) + var/spinup_delay = 20 + var/spinup_counter = 0 + +/obj/machinery/power/shield_generator/update_icon() + if(running) + icon_state = "generator1" + set_light(1, 2, "#66FFFF") + else + icon_state = "generator0" + set_light(0) + + +/obj/machinery/power/shield_generator/Initialize() + . = ..() + if(!wires) + wires = new(src) + // TODO - Remove this bit once machines are converted to Initialize + if(ispath(circuit)) + circuit = new circuit(src) + default_apply_parts() + connect_to_network() + + mode_list = list() + for(var/st in subtypesof(/datum/shield_mode)) + var/datum/shield_mode/SM = new st() + mode_list.Add(SM) + toggle_flag(initial_shield_modes) + +/obj/machinery/power/shield_generator/Destroy() + shutdown_field() + field_segments = null + damaged_segments = null + mode_list = null + . = ..() + + +/obj/machinery/power/shield_generator/RefreshParts() + max_energy = 0 + full_shield_strength = 0 + for(var/obj/item/weapon/smes_coil/S in component_parts) + full_shield_strength += (S.ChargeCapacity * 5) + max_energy = full_shield_strength * 20 + current_energy = between(0, current_energy, max_energy) + + mitigation_max = MAX_MITIGATION_BASE + MAX_MITIGATION_RESEARCH * total_component_rating_of_type(/obj/item/weapon/stock_parts/capacitor) + mitigation_em = between(0, mitigation_em, mitigation_max) + mitigation_physical = between(0, mitigation_physical, mitigation_max) + mitigation_heat = between(0, mitigation_heat, mitigation_max) + ..() + + +// Shuts down the shield, removing all shield segments and unlocking generator settings. +/obj/machinery/power/shield_generator/proc/shutdown_field() + for(var/obj/effect/shield/S in field_segments) + qdel(S) + + running = SHIELD_OFF + current_energy = 0 + mitigation_em = 0 + mitigation_physical = 0 + mitigation_heat = 0 + update_icon() + + +// Generates the field objects. Deletes existing field, if applicable. +/obj/machinery/power/shield_generator/proc/regenerate_field() + for(var/obj/effect/shield/S in field_segments) + qdel(S) + var/list/shielded_turfs + + if(check_flag(MODEFLAG_HULL)) + shielded_turfs = fieldtype_hull() + else + shielded_turfs = fieldtype_square() + + for(var/turf/T in shielded_turfs) + var/obj/effect/shield/S = new(T) + S.gen = src + S.flags_updated() + field_segments |= S + + //Hull shield chaos icon generation + if(check_flag(MODEFLAG_HULL)) + var/list/midsections = list() + var/list/startends = list() + var/list/corners = list() + var/list/horror = list() + + for(var/obj/effect/shield/SE in field_segments) + var/adjacent_fields = 0 + for(var/direction in cardinal) + var/turf/T = get_step(SE, direction) + var/obj/effect/shield/S = locate() in T + if(S) + adjacent_fields |= direction + + //What? + if(!adjacent_fields) + horror += SE + testing("Solo shield turf at [SE.x], [SE.y], [SE.z]") + continue + + //Middle section or corner (multiple bits set) + if((adjacent_fields & (adjacent_fields - 1)) != 0) + //'Impossible' directions + if(adjacent_fields == (NORTH|SOUTH) || adjacent_fields == (EAST|WEST)) + midsections[SE] = adjacent_fields + //It's a simple corner + else //if (adjacent_fields in cornerdirs) + corners[SE] = adjacent_fields + + //Not 0, not multiple bits, it's a start or an end + else + startends[SE] = adjacent_fields + + //Midsections go first + for(var/obj/effect/shield/SE in midsections) + var/adjacent = midsections[SE] + var/turf/L = get_step(SE, ~adjacent & (SOUTH|WEST)) + var/turf/R = get_step(SE, ~adjacent & (NORTH|EAST)) + if(!isspace(L) && !isspace(R)) // Squished in a single tile gap of space! + switch(adjacent) + if(NORTH|SOUTH) //Middle vertical section + if(SE.x < src.x) //Left of generator goes north + SE.set_dir(NORTH) + else + SE.set_dir(SOUTH) + if(EAST|WEST) //Middle horizontal section + if(SE.y < src.y) //South of generator goes left + SE.set_dir(WEST) + else + SE.set_dir(EAST) + else if(isspace(L)) + SE.set_dir(turn(~adjacent & (SOUTH|WEST), -90)) + else + SE.set_dir(turn(~adjacent & (NORTH|EAST), -90)) + + midsections -= SE + + //Some unhandled error state + for(var/obj/effect/shield/SE in midsections) + SE.enabled_icon_state = "arrow" //Error state/unhandled + + //Corners + for(var/obj/effect/shield/S in corners) + var/adjacent = corners[S] + if(adjacent in cornerdirs) + do_corner_shield(S, adjacent) //Dir is adjacent fields direction + else + // Okay first a quick hack. If only one nonshield... + var/nonshield = adjacent ^ (NORTH|SOUTH|EAST|WEST) + if((nonshield & (nonshield - 1)) == 0) + if(!isspace(get_step(S, nonshield))) + S.set_dir(turn(nonshield, 90)) // We're basically a normal midsection just with another touching. Ignore it. + //What's this mysterious 3rd shield touching us? + var/dir_to_them = turn(nonshield, 180) + var/turf/T = get_step(S, dir_to_them) + var/obj/effect/shield/SO = locate() in T + //They are a corner + if((SO.dir & (SO.dir - 1)) != 0) + continue + else if(dir_to_them & SO.dir) //They're facing away from us, so we're their start + S.add_overlay(image(icon, icon_state = "shield_start" , dir = SO.dir)) + else if(SO.dir & nonshield) //They're facing us (and the wall) + S.add_overlay(image(icon, icon_state = "shield_end" , dir = SO.dir)) + + else + var/list/touchnonshield = list() + for(var/direction in cornerdirs) + var/turf/T = get_step(S, direction) + if(!isspace(T)) + touchnonshield += T + if(touchnonshield.len == 1) + do_corner_shield(S, get_dir(S, touchnonshield[1])) + else + S.enabled_icon_state = "capacitor" + else + // Not actually a corner... It has MULTIPLE! + S.enabled_icon_state = "arrow" //Error state/unhandled + + for(var/obj/effect/shield/S in startends) + var/adjacent = startends[S] + log_debug("Processing startend [S] at [S?.x],[S?.y] adjacent=[adjacent]") + var/turf/T = get_step(S, adjacent) + var/obj/effect/shield/SO = locate() in T + S.set_dir(SO.dir) + if(S.dir == adjacent) //Flowing into them + S.enabled_icon_state = "shield_start" + else + S.enabled_icon_state = "shield_end" + else + var/turf/gen_turf = get_turf(src) + for(var/obj/effect/shield/SE in field_segments) + var/new_dir = 0 + if(SE.x == gen_turf.x - field_radius) + new_dir |= NORTH + else if(SE.x == gen_turf.x + field_radius) + new_dir |= SOUTH + if(SE.y == gen_turf.y + field_radius) + new_dir |= EAST + else if(SE.y == gen_turf.y - field_radius) + new_dir |= WEST + if((new_dir & (new_dir - 1)) == 0) + SE.set_dir(new_dir) // Only one bit set means we are an edge not corner. + else + do_corner_shield(SE, turn(new_dir, -90), TRUE) // All our corners are outside, don't check turf type. + + for(var/obj/effect/shield/SE in field_segments) + SE.update_visuals() + + //Phew, update our own icon + update_icon() + +/obj/machinery/power/shield_generator/proc/do_corner_shield(var/obj/effect/shield/S, var/new_dir, var/force_outside) + S.enabled_icon_state = "blank" + S.set_dir(new_dir) + var/inside = force_outside ? FALSE : isspace(get_step(S, new_dir)) + // TODO - Obviously this can be more elegant + if(inside) + switch(new_dir) + if(NORTHEAST) + S.add_overlay(image(S.icon, icon_state = "shield_end", dir = SOUTH)) + S.add_overlay(image(S.icon, icon_state = "shield_start", dir = EAST)) + if(NORTHWEST) + S.add_overlay(image(S.icon, icon_state = "shield_end", dir = EAST)) + S.add_overlay(image(S.icon, icon_state = "shield_start", dir = NORTH)) + if(SOUTHEAST) + S.add_overlay(image(S.icon, icon_state = "shield_end", dir = WEST)) + S.add_overlay(image(S.icon, icon_state = "shield_start", dir = SOUTH)) + if(SOUTHWEST) + S.add_overlay(image(S.icon, icon_state = "shield_end", dir = NORTH)) + S.add_overlay(image(S.icon, icon_state = "shield_start", dir = WEST)) + else + switch(new_dir) + if(NORTHEAST) + S.add_overlay(image(S.icon, icon_state = "shield_end", dir = WEST)) + S.add_overlay(image(S.icon, icon_state = "shield_start", dir = NORTH)) + if(NORTHWEST) + S.add_overlay(image(S.icon, icon_state = "shield_end", dir = SOUTH)) + S.add_overlay(image(S.icon, icon_state = "shield_start", dir = WEST)) + if(SOUTHEAST) + S.add_overlay(image(S.icon, icon_state = "shield_end", dir = NORTH)) + S.add_overlay(image(S.icon, icon_state = "shield_start", dir = EAST)) + if(SOUTHWEST) + S.add_overlay(image(S.icon, icon_state = "shield_end", dir = EAST)) + S.add_overlay(image(S.icon, icon_state = "shield_start", dir = SOUTH)) + + +// Recalculates and updates the upkeep multiplier +/obj/machinery/power/shield_generator/proc/update_upkeep_multiplier() + var/new_upkeep = 1.0 + for(var/datum/shield_mode/SM in mode_list) + if(check_flag(SM.mode_flag)) + new_upkeep *= SM.multiplier + + upkeep_multiplier = new_upkeep * power_coefficient + + +/obj/machinery/power/shield_generator/process() + upkeep_power_usage = 0 + power_usage = 0 + + if(offline_for) + offline_for = max(0, offline_for - 1) + // We're turned off. + if(running == SHIELD_OFF) + return + + if(target_radius != field_radius && running != SHIELD_RUNNING) // Do not recalculate the field while it's running; that's extremely laggy. + field_radius += (target_radius > field_radius) ? 1 : -1 + + // We are shutting down, therefore our stored energy disperses faster than usual. + else if(running == SHIELD_DISCHARGING) + current_energy -= SHIELD_SHUTDOWN_DISPERSION_RATE + else if(running == SHIELD_SPINNING_UP) + spinup_counter-- + if(spinup_counter <= 0) + running = SHIELD_RUNNING + regenerate_field() + + mitigation_em = between(0, mitigation_em - MITIGATION_LOSS_PASSIVE, mitigation_max) + mitigation_heat = between(0, mitigation_heat - MITIGATION_LOSS_PASSIVE, mitigation_max) + mitigation_physical = between(0, mitigation_physical - MITIGATION_LOSS_PASSIVE, mitigation_max) + + if(running == SHIELD_RUNNING) + upkeep_power_usage = round((field_segments.len - damaged_segments.len) * ENERGY_UPKEEP_PER_TILE * upkeep_multiplier) + else if(running > SHIELD_RUNNING) + upkeep_power_usage = round(ENERGY_UPKEEP_IDLE * idle_multiplier * (field_radius * 8) * upkeep_multiplier) // Approximates number of turfs. + + if(powernet && (running >= SHIELD_RUNNING) && !input_cut) + var/energy_buffer = 0 + energy_buffer = draw_power(min(upkeep_power_usage, input_cap)) + power_usage += round(energy_buffer) + + if(energy_buffer < upkeep_power_usage) + current_energy -= round(upkeep_power_usage - energy_buffer) // If we don't have enough energy from the grid, take it from the internal battery instead. + + // Now try to recharge our internal energy. + var/energy_to_demand + if(input_cap) + energy_to_demand = between(0, max_energy - current_energy, input_cap - energy_buffer) + else + energy_to_demand = max(0, max_energy - current_energy) + energy_buffer = draw_power(energy_to_demand) + power_usage += energy_buffer + current_energy += round(energy_buffer) + else + current_energy -= round(upkeep_power_usage) // We are shutting down, or we lack external power connection. Use energy from internal source instead. + + if(current_energy <= 0) + energy_failure() + + if(!overloaded) + for(var/obj/effect/shield/S in damaged_segments) + S.regenerate() + else if (field_integrity() > 25) + overloaded = 0 + +/obj/machinery/power/shield_generator/attackby(obj/item/O as obj, mob/user as mob) + if(panel_open && (O?.is_multitool() || O?.is_wirecutter())) + wires.Interact(user) + return TRUE + if(default_deconstruction_screwdriver(user, O)) + return + if(O?.is_crowbar() || O?.is_wrench() || istype(O, /obj/item/weapon/storage/part_replacer)) + if(offline_for) + to_chat(user, "Wait until \the [src] cools down from emergency shutdown first!") + return + if(running) + to_chat(user, "Turn off \the [src] first!") + return + if(default_deconstruction_crowbar(user, O)) + return + if(default_part_replacement(user, O)) + return + if(default_unfasten_wrench(user, O, 40)) + return + return ..() + +/obj/machinery/power/shield_generator/proc/energy_failure() + if(running == SHIELD_DISCHARGING) + shutdown_field() + else + current_energy = 0 + overloaded = 1 + for(var/obj/effect/shield/S in field_segments) + S.fail(1) + +/obj/machinery/power/shield_generator/proc/set_idle(var/new_state) + if(new_state) + if(running == SHIELD_IDLE) + return + running = SHIELD_IDLE + for(var/obj/effect/shield/S in field_segments) + qdel(S) + else + if(running != SHIELD_IDLE) + return + running = SHIELD_SPINNING_UP + spinup_counter = round(spinup_delay / idle_multiplier) + update_icon() + +/obj/machinery/power/shield_generator/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + var/data[0] + + data["running"] = running + data["modes"] = get_flag_descriptions() + data["overloaded"] = overloaded + data["mitigation_max"] = mitigation_max + data["mitigation_physical"] = round(mitigation_physical, 0.1) + data["mitigation_em"] = round(mitigation_em, 0.1) + data["mitigation_heat"] = round(mitigation_heat, 0.1) + data["field_integrity"] = field_integrity() + data["max_energy"] = round(max_energy / 1000000, 0.1) + data["current_energy"] = round(current_energy / 1000000, 0.1) + data["percentage_energy"] = round(data["current_energy"] / data["max_energy"] * 100) + data["total_segments"] = field_segments ? field_segments.len : 0 + data["functional_segments"] = damaged_segments ? data["total_segments"] - damaged_segments.len : data["total_segments"] + data["field_radius"] = field_radius + data["target_radius"] = target_radius + data["input_cap_kw"] = round(input_cap / 1000) + data["upkeep_power_usage"] = round(upkeep_power_usage / 1000, 0.1) + data["power_usage"] = round(power_usage / 1000) + data["hacked"] = hacked + data["offline_for"] = offline_for * 2 + data["idle_multiplier"] = idle_multiplier + data["idle_valid_values"] = idle_valid_values + data["spinup_counter"] = spinup_counter + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "shield_generator.tmpl", src.name, 500, 800) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/obj/machinery/power/shield_generator/attack_hand(mob/user) + if((. = ..())) + return + if(panel_open && Adjacent(user)) + wires.Interact(user) + return + if(CanUseTopic(user, global.default_state) > STATUS_CLOSE) + ui_interact(user) + return TRUE + +/obj/machinery/power/shield_generator/CanUseTopic(var/mob/user) + if(issilicon(user) && !Adjacent(user) && ai_control_disabled) + return STATUS_UPDATE + if(panel_open) + return min(..(), STATUS_DISABLED) + return ..() + +/obj/machinery/power/shield_generator/Topic(href, href_list, datum/topic_state/state = default_state) + if((. = ..())) + return + + if(href_list["begin_shutdown"]) + if(running < SHIELD_RUNNING) // Discharging or off + return + var/alert = alert(usr, "Are you sure you wish to do this? It will drain the power inside the internal storage rapidly.", "Are you sure?", "Yes", "No") + if(!CanInteract(usr, state)) + return + if(running < SHIELD_RUNNING) + return + if(alert == "Yes") + set_idle(TRUE) // do this first to clear the field + running = SHIELD_DISCHARGING + return TOPIC_REFRESH + + if(href_list["start_generator"]) + if(offline_for) + return + set_idle(TRUE) + return TOPIC_REFRESH + + if(href_list["toggle_idle"]) + if(running < SHIELD_RUNNING) + return TOPIC_HANDLED + set_idle(text2num(href_list["toggle_idle"])) + return TOPIC_REFRESH + + // Instantly drops the shield, but causes a cooldown before it may be started again. Also carries a risk of EMP at high charge. + if(href_list["emergency_shutdown"]) + if(!running) + return TOPIC_HANDLED + + var/choice = input(usr, "Are you sure that you want to initiate an emergency shield shutdown? This will instantly drop the shield, and may result in unstable release of stored electromagnetic energy. Proceed at your own risk.") in list("Yes", "No") + if((choice != "Yes") || !running) + return TOPIC_HANDLED + + // If the shield would take 5 minutes to disperse and shut down using regular methods, it will take x1.5 (7 minutes and 30 seconds) of this time to cool down after emergency shutdown + offline_for = round(current_energy / (SHIELD_SHUTDOWN_DISPERSION_RATE / 1.5)) + var/old_energy = current_energy + shutdown_field() + log_and_message_admins("has triggered \the [src]'s emergency shutdown!", usr) + spawn() + empulse(src, old_energy / 60000000, old_energy / 32000000, 1) // If shields are charged at 450 MJ, the EMP will be 7.5, 14.0625. 90 MJ, 1.5, 2.8125 + old_energy = 0 + + return TOPIC_REFRESH + + if(mode_changes_locked) + return TOPIC_REFRESH + + if(href_list["set_range"]) + var/new_range = input(usr, "Enter new field range (1-[world.maxx]). Leave blank to cancel.", "Field Radius Control", field_radius) as num + if(!new_range) + return TOPIC_HANDLED + target_radius = between(1, new_range, world.maxx) + return TOPIC_REFRESH + + if(href_list["set_input_cap"]) + var/new_cap = round(input(usr, "Enter new input cap (in kW). Enter 0 or nothing to disable input cap.", "Generator Power Control", round(input_cap / 1000)) as num) + if(!new_cap) + input_cap = 0 + return + input_cap = max(0, new_cap) * 1000 + return TOPIC_REFRESH + + if(href_list["toggle_mode"]) + // Toggling hacked-only modes requires the hacked var to be set to 1 + if((text2num(href_list["toggle_mode"]) & (MODEFLAG_BYPASS | MODEFLAG_OVERCHARGE)) && !hacked) + return TOPIC_HANDLED + + toggle_flag(text2num(href_list["toggle_mode"])) + return TOPIC_REFRESH + + if(href_list["switch_idle"]) + if(running == SHIELD_SPINNING_UP) + return TOPIC_REFRESH + var/new_idle = text2num(href_list["switch_idle"]) + if(new_idle in idle_valid_values) + idle_multiplier = new_idle + return TOPIC_REFRESH + +/obj/machinery/power/shield_generator/proc/field_integrity() + if(full_shield_strength) + return round(CLAMP01(current_energy / full_shield_strength) * 100) + return 0 + + +// Takes specific amount of damage +/obj/machinery/power/shield_generator/proc/deal_shield_damage(var/damage, var/shield_damtype) + var/energy_to_use = damage * ENERGY_PER_HP + if(check_flag(MODEFLAG_MODULATE)) + mitigation_em -= MITIGATION_HIT_LOSS + mitigation_heat -= MITIGATION_HIT_LOSS + mitigation_physical -= MITIGATION_HIT_LOSS + + switch(shield_damtype) + if(SHIELD_DAMTYPE_PHYSICAL) + mitigation_physical += MITIGATION_HIT_LOSS + MITIGATION_HIT_GAIN + energy_to_use *= 1 - (mitigation_physical / 100) + if(SHIELD_DAMTYPE_EM) + mitigation_em += MITIGATION_HIT_LOSS + MITIGATION_HIT_GAIN + energy_to_use *= 1 - (mitigation_em / 100) + if(SHIELD_DAMTYPE_HEAT) + mitigation_heat += MITIGATION_HIT_LOSS + MITIGATION_HIT_GAIN + energy_to_use *= 1 - (mitigation_heat / 100) + + mitigation_em = between(0, mitigation_em, mitigation_max) + mitigation_heat = between(0, mitigation_heat, mitigation_max) + mitigation_physical = between(0, mitigation_physical, mitigation_max) + + current_energy -= energy_to_use + + // Overload the shield, which will shut it down until we recharge above 25% again + if(current_energy < 0) + energy_failure() + return SHIELD_BREACHED_FAILURE + + if(prob(10 - field_integrity())) + return SHIELD_BREACHED_CRITICAL + if(prob(20 - field_integrity())) + return SHIELD_BREACHED_MAJOR + if(prob(35 - field_integrity())) + return SHIELD_BREACHED_MINOR + return SHIELD_ABSORBED + + +// Checks whether specific flags are enabled +/obj/machinery/power/shield_generator/proc/check_flag(var/flag) + return (shield_modes & flag) + + +/obj/machinery/power/shield_generator/proc/toggle_flag(var/flag) + shield_modes ^= flag + update_upkeep_multiplier() + for(var/obj/effect/shield/S in field_segments) + S.flags_updated() + + if((flag & (MODEFLAG_HULL|MODEFLAG_MULTIZ)) && (running == SHIELD_RUNNING)) + regenerate_field() + + if(flag & MODEFLAG_MODULATE) + mitigation_em = 0 + mitigation_physical = 0 + mitigation_heat = 0 + + +/obj/machinery/power/shield_generator/proc/get_flag_descriptions() + var/list/all_flags = list() + for(var/datum/shield_mode/SM in mode_list) + if(SM.hacked_only && !hacked) + continue + all_flags.Add(list(list( + "name" = SM.mode_name, + "desc" = SM.mode_desc, + "flag" = SM.mode_flag, + "status" = check_flag(SM.mode_flag), + "hacked" = SM.hacked_only, + "multiplier" = SM.multiplier + ))) + return all_flags + + +// These two procs determine tiles that should be shielded given the field range. They are quite CPU intensive and may trigger BYOND infinite loop checks, therefore they are set +// as background procs to prevent locking up the server. They are only called when the field is generated, or when hull mode is toggled on/off. +/obj/machinery/power/shield_generator/proc/fieldtype_square() + set background = 1 + var/list/out = list() + var/list/base_turfs = get_base_turfs() + + for(var/turf/gen_turf in base_turfs) + var/turf/T + for (var/x_offset = -field_radius; x_offset <= field_radius; x_offset++) + T = locate(gen_turf.x + x_offset, gen_turf.y - field_radius, gen_turf.z) + if(T) + out += T + T = locate(gen_turf.x + x_offset, gen_turf.y + field_radius, gen_turf.z) + if(T) + out += T + + for (var/y_offset = -field_radius+1; y_offset < field_radius; y_offset++) + T = locate(gen_turf.x - field_radius, gen_turf.y + y_offset, gen_turf.z) + if(T) + out += T + T = locate(gen_turf.x + field_radius, gen_turf.y + y_offset, gen_turf.z) + if(T) + out += T + return out + + +/obj/machinery/power/shield_generator/proc/fieldtype_hull() + set background = 1 + . = list() + var/list/base_turfs = get_base_turfs() + + // Old code found all space turfs and added them if it had a non-space neighbor. + // This one finds all non-space turfs and adds all its non-space neighbors. + for(var/turf/gen_turf in base_turfs) + var/area/TA = null // Variable for area checking. Defining it here so memory does not have to be allocated repeatedly. + for(var/turf/T in trange(field_radius, gen_turf)) + // Don't expand to space or on shuttle areas. + if(istype(T, /turf/space) || istype(T, /turf/simulated/open)) + continue + + // Find adjacent space/shuttle tiles and cover them. Shuttles won't be blocked if shield diffuser is mapped in and turned on. + for(var/turf/TN in orange(1, T)) + TA = get_area(TN) + //if ((istype(TN, /turf/space) || (istype(TN, /turf/simulated/open) && (istype(TA, /area/space) || TA.area_flags & AREA_FLAG_EXTERNAL)))) + if((istype(TN, /turf/space) || (istype(TN, /turf/simulated/open) && (istype(TA, /area/space))))) + . |= TN + continue + +// Returns a list of turfs from which a field will propagate. If multi-Z mode is enabled, this will return a "column" of turfs above and below the generator. +/obj/machinery/power/shield_generator/proc/get_base_turfs() + var/list/turfs = list() + var/turf/T = get_turf(src) + + if(!istype(T)) + return + + turfs.Add(T) + + // Multi-Z mode is disabled + if(!check_flag(MODEFLAG_MULTIZ)) + return turfs + + while(HasAbove(T.z)) + T = GetAbove(T) + if(istype(T)) + turfs.Add(T) + + T = get_turf(src) + + while(HasBelow(T.z)) + T = GetBelow(T) + if(istype(T)) + turfs.Add(T) + + return turfs + + +// Starts fully charged +/obj/machinery/power/shield_generator/charged/Initialize() + . = ..() + current_energy = max_energy + +// Starts with the best SMES coil and capacitor (and fully charged) +/obj/machinery/power/shield_generator/upgraded/Initialize() + . = ..() + for(var/obj/item/weapon/smes_coil/sc in component_parts) + component_parts -= sc + qdel(sc) + + for(var/obj/item/weapon/stock_parts/capacitor/cap in component_parts) + component_parts -= cap + qdel(cap) + + component_parts += new /obj/item/weapon/stock_parts/capacitor/omni(src) + component_parts += new /obj/item/weapon/smes_coil/super_capacity(src) + RefreshParts() + current_energy = max_energy + +// Only uses 20% as much power (and starts upgraded and charged and hacked) +/obj/machinery/power/shield_generator/upgraded/admin + name = "experimental shield generator" + power_coefficient = 0.2 + hacked = TRUE diff --git a/code/modules/shieldgen/shield_modes.dm b/code/modules/shieldgen/shield_modes.dm new file mode 100644 index 00000000000..5a889b4c080 --- /dev/null +++ b/code/modules/shieldgen/shield_modes.dm @@ -0,0 +1,83 @@ +// Definitions for shield modes. Names, descriptions and power usage multipliers can be changed here. +// Do not change the mode_flag variables without a good reason! + +/datum/shield_mode + var/mode_name // User-friendly name of this mode. + var/mode_desc // A short description of what the mode does. + var/mode_flag // Mode bitflag. See defines file. + var/multiplier // Energy usage multiplier. Each enabled mode multiplies upkeep power usage by this number. Values between 1-2 are good balance-wise. Hacked modes can go up to 3-4 + var/hacked_only = 0 // Set to 1 to allow usage of this shield mode only on hacked generators. + +/datum/shield_mode/hyperkinetic + mode_name = "Hyperkinetic Projectiles" + mode_desc = "This mode blocks various fast moving physical objects, such as bullets, blunt weapons, meteors and other." + mode_flag = MODEFLAG_HYPERKINETIC + multiplier = 1.2 + +/datum/shield_mode/photonic + mode_name = "Photonic Dispersion" + mode_desc = "This mode blocks majority of light. This includes beam weaponry and most of the visible light spectrum." + mode_flag = MODEFLAG_PHOTONIC + multiplier = 1.3 + +/datum/shield_mode/em + mode_name = "Electro-Magnetic Shielding" + mode_desc = "This mode blocks various high-power emissions like electrical storms." + mode_flag = MODEFLAG_EM + multiplier = 1.3 + +/datum/shield_mode/humanoids + mode_name = "Humanoid Lifeforms" + mode_desc = "This mode blocks various humanoid lifeforms. Does not affect fully synthetic humanoids." + mode_flag = MODEFLAG_HUMANOIDS + multiplier = 1.5 + +/datum/shield_mode/silicon + mode_name = "Silicon Lifeforms" + mode_desc = "This mode blocks various silicon based lifeforms." + mode_flag = MODEFLAG_ANORGANIC + multiplier = 1.5 + +/datum/shield_mode/mobs + mode_name = "Unknown Lifeforms" + mode_desc = "This mode blocks various other non-humanoid and non-silicon lifeforms. Typical uses include blocking carps." + mode_flag = MODEFLAG_NONHUMANS + multiplier = 1.5 + +/datum/shield_mode/atmosphere + mode_name = "Atmospheric Containment" + mode_desc = "This mode blocks air flow and acts as atmosphere containment." + mode_flag = MODEFLAG_ATMOSPHERIC + multiplier = 1.3 + +/datum/shield_mode/hull + mode_name = "Hull Shielding" + mode_desc = "This mode recalibrates the field to cover surface of the installation instead of projecting a bubble shaped field." + mode_flag = MODEFLAG_HULL + multiplier = 1 + +/datum/shield_mode/adaptive + mode_name = "Adaptive Field Harmonics" + mode_desc = "This mode modulates the shield harmonic frequencies, allowing the field to adapt to various damage types." + mode_flag = MODEFLAG_MODULATE + multiplier = 2 + +/datum/shield_mode/bypass + mode_name = "Diffuser Bypass" + mode_desc = "This mode disables the built-in safeties which allows the generator to counter effect of various shield diffusers. This tends to create a very large strain on the generator. Does not work with enabled safety protocols." + mode_flag = MODEFLAG_BYPASS + multiplier = 3 + hacked_only = 1 + +/datum/shield_mode/overcharge + mode_name = "Field Overcharge" + mode_desc = "This mode polarises the field, causing damage on contact. Does not work with enabled safety protocols." + mode_flag = MODEFLAG_OVERCHARGE + multiplier = 3 + hacked_only = 1 + +/datum/shield_mode/multiz + mode_name = "Multi-Dimensional Field Warp" + mode_desc = "Recalibrates the field projection array to increase the vertical height of the field, allowing it's usage on multi-deck stations or ships." + mode_flag = MODEFLAG_MULTIZ + multiplier = 1 diff --git a/code/modules/shuttles/landmarks.dm b/code/modules/shuttles/landmarks.dm index 99761dfe258..38f2d41f25c 100644 --- a/code/modules/shuttles/landmarks.dm +++ b/code/modules/shuttles/landmarks.dm @@ -55,14 +55,14 @@ if(!istype(docking_controller)) log_error("Could not find docking controller for shuttle waypoint '[name]', docking tag was '[docking_tag]'.") if(using_map.use_overmap) - var/obj/effect/overmap/visitable/location = map_sectors["[z]"] + var/obj/effect/overmap/visitable/location = get_overmap_sector(z) if(location && location.docking_codes) docking_controller.docking_codes = location.docking_codes /obj/effect/shuttle_landmark/forceMove() - var/obj/effect/overmap/visitable/map_origin = map_sectors["[z]"] + var/obj/effect/overmap/visitable/map_origin = get_overmap_sector(z) . = ..() - var/obj/effect/overmap/visitable/map_destination = map_sectors["[z]"] + var/obj/effect/overmap/visitable/map_destination = get_overmap_sector(z) if(map_origin != map_destination) if(map_origin) map_origin.remove_landmark(src, shuttle_restricted) diff --git a/code/modules/shuttles/shuttle.dm b/code/modules/shuttles/shuttle.dm index ff16e33c86c..808a1f55e7d 100644 --- a/code/modules/shuttles/shuttle.dm +++ b/code/modules/shuttles/shuttle.dm @@ -74,6 +74,16 @@ SSsupply.shuttle = null . = ..() +// This is called after all shuttles have been initialized by SSshuttles, but before sectors have been initialized. +// Importantly for subtypes, all shuttles will have been initialized and mothershuttles hooked up by the time this is called. +/datum/shuttle/proc/populate_shuttle_objects() + // Scan for shuttle consoles on them needing auto-config. + for(var/area/A in find_childfree_areas()) // Let sub-shuttles handle their areas, only do our own. + for(var/obj/machinery/computer/shuttle_control/SC in A) + if(!SC.shuttle_tag) + SC.set_shuttle_tag(src.name) + return + // This creates a graphical warning to where the shuttle is about to land, in approximately five seconds. /datum/shuttle/proc/create_warning_effect(var/obj/effect/shuttle_landmark/destination) destination.create_warning_effect(src) @@ -348,6 +358,15 @@ qdel(P) SSmachines.setup_powernets_for_cables(cables) + // Adjust areas of mothershuttle so it doesn't try and bring us with it if it jumps while we aren't on it. + if(mothershuttle) + var/datum/shuttle/MS = SSshuttles.shuttles[mothershuttle] + if(MS) + if(current_location.landmark_tag == motherdock) + MS.shuttle_area |= shuttle_area // We are now on mothershuttle! Bring us along! + else + MS.shuttle_area -= shuttle_area // We have left mothershuttle! Don't bring us along! + return //returns 1 if the shuttle has a valid arrive time diff --git a/code/modules/shuttles/shuttle_autodock.dm b/code/modules/shuttles/shuttle_autodock.dm index b9b1801205b..4181af5b15d 100644 --- a/code/modules/shuttles/shuttle_autodock.dm +++ b/code/modules/shuttles/shuttle_autodock.dm @@ -30,7 +30,7 @@ if(active_docking_controller) set_docking_codes(active_docking_controller.docking_codes) else if(global.using_map.use_overmap) - var/obj/effect/overmap/visitable/location = map_sectors["[current_location.z]"] + var/obj/effect/overmap/visitable/location = get_overmap_sector(get_z(current_location)) if(location && location.docking_codes) set_docking_codes(location.docking_codes) dock() diff --git a/code/modules/shuttles/shuttle_console.dm b/code/modules/shuttles/shuttle_console.dm index f8c2a8210d1..6d277edec13 100644 --- a/code/modules/shuttles/shuttle_console.dm +++ b/code/modules/shuttles/shuttle_console.dm @@ -126,6 +126,13 @@ ui.open() ui.set_auto_update(1) +// Call to set the linked shuttle tag; override to add behaviour to shuttle tag changes +/obj/machinery/computer/shuttle_control/proc/set_shuttle_tag(var/new_shuttle_tag) + if(shuttle_tag == new_shuttle_tag) + return FALSE + shuttle_tag = new_shuttle_tag + return TRUE + /obj/machinery/computer/shuttle_control/emag_act(var/remaining_charges, var/mob/user) if (!hacked) req_access = list() @@ -159,7 +166,7 @@ GLOBAL_LIST_BOILERPLATE(papers_dockingcode, /obj/item/weapon/paper/dockingcodes) var/dockingcodes = null var/z_to_check = codes_from_z ? codes_from_z : z if(using_map.use_overmap) - var/obj/effect/overmap/visitable/location = map_sectors["[z_to_check]"] + var/obj/effect/overmap/visitable/location = get_overmap_sector(z_to_check) if(location && location.docking_codes) dockingcodes = location.docking_codes diff --git a/code/modules/shuttles/shuttle_console_multi.dm b/code/modules/shuttles/shuttle_console_multi.dm index 9d6dccad56c..9a724a9ab75 100644 --- a/code/modules/shuttles/shuttle_console_multi.dm +++ b/code/modules/shuttles/shuttle_console_multi.dm @@ -1,4 +1,5 @@ /obj/machinery/computer/shuttle_control/multi + circuit = /obj/item/weapon/circuitboard/shuttle_console/multi ui_template = "shuttle_control_console_multi.tmpl" /obj/machinery/computer/shuttle_control/multi/get_ui_data(var/datum/shuttle/autodock/multi/shuttle) diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index 11fae65b5bc..db5459404d2 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -106,18 +106,8 @@ if(telepad.panel_open) data["tempMsg"] = "Telepad undergoing physical maintenance operations." - data["sectorOptions"] = list() - //We'll base our options on overmap range - if(using_map.use_overmap) - data["sectorOptions"] += z //Definitely at least our own even if we're not in an overmap sector. - var/obj/effect/overmap/visitable/my_sector = map_sectors["[z]"] - if(my_sector) - for(var/obj/effect/overmap/visitable/S in range(get_turf(my_sector), overmap_range)) - data["sectorOptions"] |= S.map_z - //We'll base our options on player_levels - else - for(var/z in using_map.player_levels) - data["sectorOptions"] += z + //We'll base our options on connected z's or overmap + data["sectorOptions"] = using_map.get_map_levels(z, TRUE, overmap_range) if(last_tele_data) data["lastTeleData"] = list() diff --git a/code/modules/vchat/vchat_client.dm b/code/modules/vchat/vchat_client.dm index 0e8f0051361..6e0ac509b02 100644 --- a/code/modules/vchat/vchat_client.dm +++ b/code/modules/vchat/vchat_client.dm @@ -77,6 +77,10 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic become_broken() return FALSE + if(!owner.is_preference_enabled(/datum/client_preference/vchat_enable)) + become_broken() + return FALSE + //Could be loaded from a previous round, are you still there? if(winget(owner,"outputwindow.htmloutput","is-visible") == "true") //Winget returns strings send_event(event = list("evttype" = "availability")) @@ -101,7 +105,7 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic return owner << browse(file2text("code/modules/vchat/html/vchat.html"), "window=htmloutput") - + //Check back later spawn(15 SECONDS) if(!src) @@ -118,12 +122,12 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic loaded = TRUE broken = FALSE owner.chatOutputLoadedAt = world.time - + //update_vis() //It does it's own winsets ping_cycle() send_playerinfo() load_database() - + //Perform DB shenanigans /datum/chatOutput/proc/load_database() set waitfor = FALSE @@ -144,12 +148,12 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic if(!owner) qdel(src) return - + update_vis() - + spawn() alert(owner,"VChat didn't load after some time. Switching to use oldchat as a fallback. Try using 'Reload VChat' verb in OOC verbs, or reconnecting to try again.") - + //Provide the JS with who we are /datum/chatOutput/proc/send_playerinfo() if(!owner) @@ -342,7 +346,7 @@ var/to_chat_src if(C.chatOutput.broken) DIRECT_OUTPUT(C, original_message) return - + // // Client still loading, put their messages in a queue - Actually don't, logged already in database. // if(!C.chatOutput.loaded && C.chatOutput.message_queue && islist(C.chatOutput.message_queue)) // C.chatOutput.message_queue[++C.chatOutput.message_queue.len] = list("time" = time, "message" = message) diff --git a/code/modules/vore/appearance/sprite_accessories_vr.dm b/code/modules/vore/appearance/sprite_accessories_vr.dm index dbb27090888..97e96fab86f 100644 --- a/code/modules/vore/appearance/sprite_accessories_vr.dm +++ b/code/modules/vore/appearance/sprite_accessories_vr.dm @@ -504,8 +504,46 @@ desc = "" icon_state = "pipears" ckeys_allowed = list("phoaly") - - + +/datum/sprite_accessory/ears/elf_caprine_colorable + name = "Caprine horns with pointy ears, colorable" + desc = "" + icon_state = "elfs" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "caprahorns" + +/datum/sprite_accessory/ears/elf_oni_colorable + name = "oni horns with pointy ears, colorable" + desc = "" + icon_state = "elfs" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "oni-h1_c" + +/datum/sprite_accessory/ears/elf_demon_colorable + name = "Demon horns with pointy ears, colorable" + desc = "" + icon_state = "elfs" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "demon-horns1_c" + +/datum/sprite_accessory/ears/elf_demon_outwards_colorable + name = "Demon horns with pointy ears, outwards, colourable" + desc = "" + icon_state = "elfs" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "demon-horns2" + +/datum/sprite_accessory/ears/elf_dragon_colorable + name = "Dragon horns with pointy ears, colourable" + desc = "" + icon_state = "elfs" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "dragon-horns" /* //////////////////////////// / =--------------------= / diff --git a/code/modules/vore/eating/leave_remains_vr.dm b/code/modules/vore/eating/leave_remains_vr.dm index a95adb094b7..f7e9f6d9526 100644 --- a/code/modules/vore/eating/leave_remains_vr.dm +++ b/code/modules/vore/eating/leave_remains_vr.dm @@ -70,12 +70,13 @@ var/pred_ckey var/pred_name -/obj/item/weapon/digestion_remains/New(newloc, mob/living/pred) - ..(newloc) - pred_ckey = pred.ckey - pred_name = pred.name +/obj/item/weapon/digestion_remains/Initialize(var/mapload, var/mob/living/pred) + . = ..() + if(!mapload) + pred_ckey = pred?.ckey + pred_name = pred?.name -/obj/item/weapon/digestion_remains/attack_self(mob/user) +/obj/item/weapon/digestion_remains/attack_self(var/mob/user) if(user.a_intent == I_HURT) to_chat(user,"As you squeeze the [name], it crumbles into dust and falls apart into nothing!") qdel(src) diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 6ec6814275d..535768fea3b 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -29,6 +29,7 @@ var/can_be_drop_pred = TRUE // Mobs are pred by default. var/next_preyloop // For Fancy sound internal loop var/adminbus_trash = FALSE // For abusing trash eater for event shenanigans. + var/adminbus_eat_ore = FALSE // This creature subsists on a diet of pure adminium. var/vis_height = 32 // Sprite height used for resize features. // @@ -696,24 +697,35 @@ handle_eat_ore() -/mob/living/proc/handle_eat_ore(obj/item/snack) +/mob/living/proc/handle_eat_ore(obj/item/snack, mob/living/user) + var/mob/living/feeder = user ? user : src //Whoever's doing the feeding - us or someone else. + var/mob/living/carbon/human/H = src + if(!(adminbus_eat_ore || (istype(H) && H.species.eat_ore))) //Am I awesome enough to eat a shiny rock? + return + if(!vore_selected) to_chat(src, "You either don't have a belly selected, or don't have a belly!") return - var/obj/item/I = (snack ? snack : get_active_hand()) + var/obj/item/I = (snack ? snack : feeder.get_active_hand()) if(!I) - to_chat(src, "You are not holding anything.") + to_chat(feeder, "Why is the ore gone?") return var/obj/item/weapon/ore/O = I - if(istype(O)) + if(!istype(O)) + to_chat(src, "You pause for a moment to examine [I] and realize it's not even worth the energy to chew.") + return + else //Eat the ore using the vorebelly for the sound then get rid of the ore to prevent infinite nutrition. - drop_item() + feeder.drop_item() O.forceMove(vore_selected) qdel(O) - - log_admin("VORE: [src] used Eat Ore to swallow [O].") + if(feeder != src) + to_chat(feeder, "You feed [O] to [src].") + log_admin("VORE: [feeder] fed [src] [O].") + else + log_admin("VORE: [src] used Eat Ore to swallow [O].") //List in list, define by material property of ore in code/mining/modules/ore.dm. //50 nutrition = 5 ore to get 250 nutrition. 250 is the beginning of the 'well fed' range. @@ -742,9 +754,8 @@ nutrition += 15 else //Random rock. to_chat(src, "You taste stony, gravelly goodness - but you crave something with actual nutritional value.") - return - to_chat(src, "You pause for a moment to examine [I] and realize it's not even worth the energy to chew.") - return + + return TRUE //Good eats, cheers mate. /mob/living/proc/switch_scaling() set name = "Switch scaling mode" diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index 5caf70d6022..fad62eff35b 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -46,7 +46,7 @@ . = ..() /datum/vore_look/Topic(href,href_list[]) - if(vp_interact(href, href_list)) + if(vp_interact(href, href_list) && popup) popup.set_content(gen_ui(usr)) usr << output(popup.get_content(), "insidePanel.browser") diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm index ece0457efa1..39d4a36d500 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm @@ -1939,7 +1939,7 @@ Departamental Swimsuits, for general use /obj/item/clothing/accessory/poncho/roles/cloak/hop/fluff/pip/equipped() //Because otherwise it gets reset every time ..() icon_override = 'icons/vore/custom_clothes_vr.dmi' - + //CappyCat:Cappy Fuzzlyfeathers /obj/item/clothing/accessory/watch name = "silver pocket watch" @@ -1948,8 +1948,18 @@ Departamental Swimsuits, for general use icon_state = "deadringer" w_class = ITEMSIZE_SMALL slot_flags = SLOT_ID | SLOT_BELT | SLOT_TIE - + //Pimientopyro:Zaku Fyodorovna /obj/item/clothing/suit/varsity/green/sweater_vest name = "green sweater vest" desc = "A green argyle sweater vest with a white undershirt, a must for long winter nights and looking like a dork." + +//Azura Chitin: Azura Chitin +/obj/item/clothing/accessory/collar/azura + name = "Azura's collar" + desc = "A black collar with green patterns, reminiscent of tribal tattoos. Regardless of what the front of the tag says, the back of it reads \"Azura Chitin\"." + icon = 'icons/vore/custom_items_vr.dmi' + icon_state = "azuracollar" + + icon_override = 'icons/vore/custom_onmob_vr.dmi' + icon_state = "azuracollar" diff --git a/code/modules/vore/fluffstuff/custom_guns_vr.dm b/code/modules/vore/fluffstuff/custom_guns_vr.dm deleted file mode 100644 index 5f633e30fb7..00000000000 --- a/code/modules/vore/fluffstuff/custom_guns_vr.dm +++ /dev/null @@ -1,855 +0,0 @@ -/* TUTORIAL - "icon" is the file with the HUD/ground icon for the item - "icon_state" is the iconstate in this file for the item - "icon_override" is the file with the on-mob icons, can be the same file - "item_state" is the iconstate for the on-mob icons: - item_state_s is used for worn uniforms on mobs - item_state_r and item_state_l are for being held in each hand - - "item_state_slots" can replace "item_state", it is a list: - item_state_slots["slotname1"] = "item state for that slot" - item_state_slots["slotname2"] = "item state for that slot" - - on guns, in particular: - item_state being null makes it look for exactly the icon_state in the on-mob file, - including any 0,75,etc appended from the energy bar setting - item_state being present prevents different mode sprites, sadly, but you may - be able to override this on the gun itself with a proc -*/ - -/* TEMPLATE -//ckey:Character Name -/obj/item/weapon/gun/type/fluff/charactername - name = "" - desc = "" - - icon = 'icons/vore/custom_guns_vr.dmi' - icon_state = "myicon" - - icon_override = 'icons/vore/custom_guns_vr.dmi' - item_state = "myicon" - -*/ - - -//////////////////////////////////////////////////////////// -//////////////////// Projectile Weapons //////////////////// -//////////////////////////////////////////////////////////// -// For general use -/obj/item/weapon/gun/projectile/automatic/battlerifle - name = "\improper USDF service rifle" - desc = "You had your chance to be afraid before you joined my beloved Corps! But, to guide you back to the true path, I have brought this motivational device! Uses 9.5x40mm rounds." - icon = 'icons/obj/gun_vr.dmi' - icon_state = "battlerifle" - icon_override = 'icons/obj/gun_vr.dmi' - item_state = "battlerifle_i" - item_icons = null - w_class = ITEMSIZE_LARGE - recoil = 2 // The battlerifle was known for its nasty recoil. - max_shells = 36 - caliber = "9.5x40mm" - origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2) - magazine_type = /obj/item/ammo_magazine/m95 - allowed_magazines = list(/obj/item/ammo_magazine/m95) - fire_sound = 'sound/weapons/battlerifle.ogg' - load_method = MAGAZINE - slot_flags = SLOT_BACK - one_handed_penalty = 60 // The weapon itself is heavy - -// For general use -/obj/item/weapon/gun/projectile/shotgun/pump/USDF - name = "\improper USDF tactical shotgun" - desc = "All you greenhorns who wanted to see Xenomorphs up close... this is your lucky day. Uses 12g rounds." - icon = 'icons/obj/gun_vr.dmi' - icon_state = "haloshotgun" - icon_override = 'icons/obj/gun_vr.dmi' - item_state = "haloshotgun_i" - item_icons = null - ammo_type = /obj/item/ammo_casing/a12g - max_shells = 12 - -// For general use -/obj/item/weapon/gun/projectile/automatic/pdw - name = "personal defense weapon" - desc = "The X-9MM is a select-fire personal defense weapon designed in-house by Xing Private Security. It was made to compete with the WT550 Saber, but never caught on with NanoTrasen. Uses 9mm rounds." - icon = 'icons/obj/gun_vr.dmi' - icon_state = "pdw" - item_state = "c20r" // Placeholder - w_class = ITEMSIZE_NORMAL - caliber = "9mm" - origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2) - slot_flags = SLOT_BELT - load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m9mml - allowed_magazines = list(/obj/item/ammo_magazine/m9mm, /obj/item/ammo_magazine/m9mml) - - 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=6, burst_accuracy=list(0,-15,-30), dispersion=list(0.0, 0.6, 0.6)) - ) - -/obj/item/weapon/gun/projectile/automatic/pdw/update_icon(var/ignore_inhands) - ..() - if(istype(ammo_magazine,/obj/item/ammo_magazine/m9mm)) - icon_state = "pdw-short" - else - icon_state = (ammo_magazine)? "pdw" : "pdw-empty" - if(!ignore_inhands) update_held_icon() - -// For general use -/obj/item/weapon/gun/energy/imperial - name = "imperial energy pistol" - desc = "An elegant weapon developed by the Imperium Auream. Their weaponsmiths have cleverly found a way to make a gun that is only about the size of an average energy pistol, yet with the fire power of a laser carbine." - icon_state = "ge_pistol" - item_state = "ge_pistol" - fire_sound = 'sound/weapons/mandalorian.ogg' - icon = 'icons/obj/gun_vr.dmi' - item_icons = list(slot_r_hand_str = 'icons/obj/gun_vr.dmi', slot_l_hand_str = 'icons/obj/gun_vr.dmi') // WORK YOU FUCKING CUNT PIECE OF SHIT BASTARD STUPID BITCH ITEM ICON AAAAHHHH - item_state_slots = list(slot_r_hand_str = "ge_pistol_r", slot_l_hand_str = "ge_pistol_l") - slot_flags = SLOT_BELT - w_class = ITEMSIZE_NORMAL - force = 10 - origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2) - matter = list(DEFAULT_WALL_MATERIAL = 2000) - projectile_type = /obj/item/projectile/beam/imperial - -// jertheace : Jeremiah 'Ace' Acacius -/obj/item/weapon/gun/projectile/shotgun/pump/USDF/fluff/ace - name = "Ace's tactical shotgun" // D-model holds half as many shells as the normal version so as not OP as shit. Better than normal shotgun, worse than combat shotgun. - desc = "Owned by the respected (or feared?) veteran Captain of the original NSS Adephagia. Inscribed on the barrel are the words \"Speak softly, and carry a big stick.\"" - ammo_type = /obj/item/ammo_casing/a12g/stunshell - max_shells = 6 - -/* // jertheace : Jeremiah 'Ace' Acacius -/obj/item/ammo_magazine/m9mm/large/preban/hp // Not yet implemented. Waiting on a PR to Polaris. -Ace - ammo_type = /obj/item/ammo_casing/a9mm/hp -*/ - -// bwoincognito:Tasald Corlethian -/obj/item/weapon/gun/projectile/revolver/mateba/fluff/tasald_corlethian //Now that it is actually Single-Action and not hacky broken SA, I see no reason to nerf this down to .38. --Joan Risu - name = "\improper \"Big Iron\" revolver" - desc = "A .357 revolver for veteran rangers on the planet Orta. The right side of the handle has a logo for Quarion industries, and the left is the Rangers. The primary ammo for this gun is .357 rubber. According to the CentCom Chief of Security, this revolver was more controversial than it needed to be." - icon = 'icons/vore/custom_guns_vr.dmi' - icon_state = "tasaldrevolver" - item_state = "revolver" - fire_sound = 'sound/weapons/pistol.ogg' - ammo_type = /obj/item/ammo_casing/a357/rubber //Like I said, no reason to nerf. --Joan Risu - var/recentpump = 0 - var/cocksound = 'sound/weapons/revolvercock.ogg' - consume_next_projectile() - if(chambered) - return chambered.BB - to_chat(usr, "It's a single action revolver, pull the hammer back!") - return null - attack_self(mob/living/user as mob) - if(world.time >= recentpump + 10) - pump(user) - recentpump = world.time - proc/pump(mob/M as mob) - playsound(M, cocksound, 60, 1) - if(chambered)//We have a shell in the chamber - chambered.loc = get_turf(src)//Eject casing - chambered = null - if(loaded.len) - var/obj/item/ammo_casing/AC = loaded[1] //load next casing. - loaded -= AC //Remove casing from loaded list. - chambered = AC - update_icon() - -/obj/item/weapon/gun/projectile/revolver/mateba/fluff/tasald_corlethian/attack_hand(mob/user as mob) - if(user.get_inactive_hand() == src) - unload_ammo(user, allow_dump = 1) - else - ..() - -// wankersonofjerkin : Glenn Pink -/obj/item/weapon/gun/projectile/revolver/fluff/admiral_pink_revolver - name = "Admiral Pink's 'Devilgun'" - desc = "You notice the serial number on the revolver is 666. The word 'Sin' is engraved on the blood-red rosewood grip. Uses .357 rounds." //Edgy, but based on real guns the player owns. - icon = 'icons/vore/custom_guns_vr.dmi' - icon_state = "ryan_winz" - item_state = "revolver" - -/obj/item/weapon/gun/projectile/revolver/fluff/admiral_pink_revolver/redemption - name = "Admiral Pink's 'Redeemer'" - desc = "You notice the serial number on the revolver is 667. The word 'Redemption' is engraved on dark rosewood grip. Uses .357 rounds." //Edgy, but based on real guns the player owns. - -// sasoperative : Joseph Skinner -/obj/item/weapon/gun/projectile/revolver/judge/fluff/sasoperative - name = "\"The Jury\"" - desc = "A customized variant of the \"The Judge\" revolver sold by Cybersun Industries, built specifically for Joseph Skinner. Uses 12g shells." - icon = 'icons/vore/custom_guns_vr.dmi' - icon_state = "jury" - item_state = "gun" - ammo_type = /obj/item/ammo_casing/a12g/beanbag - -// Dhaeleena : Dhaeleena M'iar -/obj/item/weapon/gun/projectile/revolver/mateba/fluff/dhael - name = "Dhaeleena's engraved mateba" - desc = "This unique looking handgun is engraved with roses along the barrel and the cylinder as well as the initials DM under the grip. Along the middle of the barrel an engraving shows the words 'Mateba Unica 6'. Uses .357 rounds." - icon_state = "mateba" - origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) - ammo_type = /obj/item/ammo_casing/a357/stun - -// SilencedMP5A5 : Serdykov Antoz -/obj/item/weapon/gun/projectile/colt/fluff/serdy - name = "Raikov PPS/45" - desc = "An expertly crafted and reliable .45 sidearm with a 7 round single-stack magazine, originally built and in 2369 for frontier men and peacekeepers. The frame and slide are nickel plated, and it has a synthetic black ivory grip. The words 'Krasnaya Raketa' are engraved on the slide near the muzzle. It's relatively thin, but heavy. It also has an ambidextrous mag release and safety lever, making it grippable in either hand comfortably." - icon = 'icons/vore/custom_guns_vr.dmi' - item_state = "raikov" - icon_state = "raikov" - fire_sound = 'sound/weapons/45pistol_vr.ogg' - magazine_type = /obj/item/ammo_magazine/m45/rubber - -/* //Commented out due to weapon change. -/obj/item/weapon/gun/projectile/revolver/detective/fluff/serdy //This forces it to be .38 bullets only - name = "Vintage S&W Model 10" - desc = "It's a classic S&W Model 10 revolver. This one in particular is beautifully restored with a chromed black frame and cylinder, and a nice redwood grip. The name 'Serdykov A.' is engraved into the base of the grip." - icon = 'icons/vore/custom_guns_vr.dmi' - item_state = "model10" - icon_state = "model10" - fire_sound = 'sound/weapons/deagle.ogg' - origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) - ammo_type = /obj/item/ammo_casing/a38r //Rubber rounds. -*/ - -// LuminescentRing : Briana Moore -/obj/item/weapon/gun/projectile/derringer/fluff/briana - name = "second-hand derringer" - desc = "It's a palm sized gun. One of the few things that won't break an angel's wrists. Uses 10mm rounds." - caliber = "10mm" - ammo_type = /obj/item/ammo_casing/a10mm - -// For general use -/obj/item/weapon/gun/projectile/automatic/stg - name = "\improper Sturmgewehr" - desc = "An STG-560 built by RauMauser. Experience the terror of the Siegfried line, redone for the 26th century! The Kaiser would be proud. Uses unique 7.92x33mm Kurz rounds." - icon = 'icons/obj/gun_vr.dmi' - icon_state = "stg60" - item_state = "arifle" - w_class = ITEMSIZE_LARGE - max_shells = 30 - caliber = "7.92x33mm" - origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2, TECH_ILLEGAL = 6) - magazine_type = /obj/item/ammo_magazine/mtg - allowed_magazines = list(/obj/item/ammo_magazine/mtg) - load_method = MAGAZINE - -/obj/item/weapon/gun/projectile/automatic/stg/update_icon(var/ignore_inhands) - ..() - icon_state = (ammo_magazine)? "stg60" : "stg60-empty" - item_state = (ammo_magazine)? "arifle" : "arifle-empty" - if(!ignore_inhands) update_held_icon() - -//-----------------------Tranq Gun---------------------------------- -/obj/item/weapon/gun/projectile/dartgun/tranq - name = "tranquilizer gun" - desc = "A gas-powered dart gun designed by the National Armory of Gaia. This gun is used primarily by United Federation special forces for Tactical Espionage missions. Don't forget your bandana." - icon_state = "tranqgun" - item_state = null - - caliber = "dart" - fire_sound = 'sound/weapons/empty.ogg' - fire_sound_text = "a metallic click" - recoil = 0 - silenced = 1 - load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/chemdart - allowed_magazines = list(/obj/item/ammo_magazine/chemdart) - auto_eject = 0 - -/obj/item/weapon/gun/projectile/dartgun/tranq/update_icon() - if(!ammo_magazine) - icon_state = "tranqgun" - return 1 - - if(!ammo_magazine.stored_ammo || ammo_magazine.stored_ammo.len) - icon_state = "tranqgun" - else if(ammo_magazine.stored_ammo.len > 5) - icon_state = "tranqgun" - else - icon_state = "tranqgun" - return 1 - -// Removed because gun64_vr.dmi guns don't work. -/*//-----------------------UF-ARC---------------------------------- -/obj/item/weapon/gun/projectile/automatic/carbine/fluff/ufarc - name = "UF-ARC" - desc = "The UF-ARC is a lightweight assault rifle manufactured by the National Armory of Gaia and sold almost exclusively to the United Federation's standing army, the Military Assault Command Operations Department (MACOs)." - icon = 'icons/obj/gun64_vr.dmi' - icon_state = "ufarc" - icon_override = 'icons/obj/gun_vr.dmi' - item_state = "battlerifle_i" - item_icons = null - pixel_x = -16 - -/obj/item/weapon/gun/projectile/automatic/carbine/fluff/ufarc/update_icon(var/ignore_inhands) - ..() - // TODO - Fix this for spriting different size magazines - icon_state = (ammo_magazine)? "ufarc" : "ufarc-empty" - item_state = (ammo_magazine)? "bullpup" : "bullpup-empty" - if(!ignore_inhands) update_held_icon() - - - -//-----------------------G44---------------------------------- -/obj/item/weapon/gun/projectile/automatic/carbine/fluff/g44 - name = "G44 Rifle" - desc = "The G44 is a lightweight assault rifle manufactured by the National Armory of Gaia and sold almost exclusively to the United Federation's standing army, the Military Assault Command Operations Department (MACOs)." - icon = 'icons/obj/gun64_vr.dmi' - icon_state = "g44" - item_state = "bullpup" - pixel_x = -16 - -/obj/item/weapon/gun/projectile/automatic/carbine/fluff/g44/update_icon(var/ignore_inhands) - ..() - // TODO - Fix this for spriting different size magazines - icon_state = (ammo_magazine)? "g44" : "g44-empty" - item_state = (ammo_magazine)? "bullpup" : "bullpup-empty" - if(!ignore_inhands) update_held_icon() - -//-----------------------G44 Energy Variant-------------------- -/obj/item/weapon/gun/energy/gun/burst/g44e - name = "G44 Energy Rifle" - desc = "The G44 Energy is a laser variant of the G44 lightweight assault rifle manufactured by the National Armory of Gaia. Though almost exclusively to the United Federation's Military Assault Command Operations Department (MACOs) and Starfleet, it is occassionally sold to security departments for their stun capabilities." - icon = 'icons/obj/gun64_vr.dmi' - icon_state = "g44estun100" - item_state = "energystun100" //This is temporary. - fire_sound = 'sound/weapons/Taser.ogg' - charge_cost = 100 - force = 8 - w_class = ITEMSIZE_LARGE - fire_delay = 6 - pixel_x = -16 - - projectile_type = /obj/item/projectile/beam/stun/weak - origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_ILLEGAL = 3) - modifystate = "g44estun" - - one_handed_penalty = 60 - - firemodes = list( - list(mode_name="stun", burst=1, projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="g44estun", fire_sound='sound/weapons/Taser.ogg', charge_cost = 100), - list(mode_name="stun burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="g44estun", fire_sound='sound/weapons/Taser.ogg'), - list(mode_name="lethal", burst=1, projectile_type=/obj/item/projectile/beam/burstlaser, modifystate="g44ekill", fire_sound='sound/weapons/Laser.ogg', charge_cost = 200), - list(mode_name="lethal burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/burstlaser, modifystate="g44ekill", fire_sound='sound/weapons/Laser.ogg'), - )*/ - - -// molenar:Kari Akiren -/obj/item/weapon/gun/projectile/shotgun/pump/rifle/fluff/kari_akiren - name = "clockwork rifle" - desc = "Brass, copper, and lots of gears. Well lubricated for fluid movement as each round is loaded, locked, and fired. Just like clockwork." - icon = 'icons/vore/custom_guns_vr.dmi' - icon_state = "clockworkrifle_icon" - icon_override = 'icons/vore/custom_guns_vr.dmi' - item_state = "clockworkrifle" - item_icons = null - -/* Permit Expired -//Razerwing:Archer Maximus -/obj/item/weapon/gun/projectile/colt/fluff/archercolt - name = "\improper MEUSOC .45" - desc = "Some serious drywall work, coming up!" -*/ -//hzdonut:Jesse Soemmer -/obj/item/weapon/gun/projectile/revolver/fluff/jesselemat - name = "Modified LeMat" - desc = "The LeMat Revolver is a 9 shot revolver with a secondary firing barrel for loading shotgun shells. Uses .38-Special and 12g rounds depending on the barrel. This one appears to have had it's secondary barrel sealed off and looks to be in pristine condition. Either it's brand new, or its owner takes very good care of it." - icon_state = "lemat" - max_shells = 9 - caliber = ".38" - ammo_type = /obj/item/ammo_casing/a38 - preserve_item = FALSE - -//////////////////// Energy Weapons //////////////////// - -// ------------ Energy Luger ------------ -/obj/item/weapon/gun/energy/gun/eluger - name = "energy Luger" - desc = "The finest sidearm produced by RauMauser. Although its battery cannot be removed, its ergonomic design makes it easy to shoot, allowing for rapid follow-up shots. It also has the ability to toggle between stun and kill." - icon = 'icons/obj/gun_vr.dmi' - icon_state = "elugerstun100" - item_state = "gun" - fire_delay = null // Lugers are quite comfortable to shoot, thus allowing for more controlled follow-up shots. Rate of fire similar to a laser carbine. - battery_lock = 1 // In exchange for balance, you cannot remove the battery. Also there's no sprite for that and I fucking suck at sprites. -Ace - origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2, TECH_ILLEGAL = 2) // Illegal tech cuz Space Nazis - modifystate = "elugerstun" - fire_sound = 'sound/weapons/Taser.ogg' - firemodes = list( - list(mode_name="stun", charge_cost=120,projectile_type=/obj/item/projectile/beam/stun, modifystate="elugerstun", fire_sound='sound/weapons/Taser.ogg'), - list(mode_name="lethal", charge_cost=240,projectile_type=/obj/item/projectile/beam/eluger, modifystate="elugerkill", fire_sound='sound/weapons/eluger.ogg'), - ) - -//////////////////// Eris Ported Guns //////////////////// -//HoS Gun -/*/obj/item/weapon/gun/projectile/lamia - name = "FS HG .44 \"Lamia\"" - desc = "Uses .44 rounds." - icon = 'icons/obj/gun_vr.dmi' - icon_state = "Headdeagle" - item_state = "revolver" - fire_sound = 'sound/weapons/Gunshot.ogg' - caliber = ".44" - magazine_type = /obj/item/ammo_magazine/m44/rubber - allowed_magazines = list(/obj/item/ammo_magazine/m44,/obj/item/ammo_magazine/m44/rubber) - load_method = MAGAZINE - auto_eject = 1 - auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' - origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 4) - -/obj/item/weapon/gun/projectile/lamia/update_icon() - overlays.Cut() - if(!ammo_magazine) - return - var/ratio = ammo_magazine.stored_ammo.len * 100 / ammo_magazine.max_ammo - ratio = round(ratio, 33) - overlays += "deagle_[ratio]"*/ // Fugly. - - -//Civilian gun -/obj/item/weapon/gun/projectile/giskard - name = "\improper \"Giskard\" holdout pistol" - desc = "The FS HG .380 \"Giskard\" can even fit into the pocket! Uses .380 rounds." - icon = 'icons/obj/gun_vr.dmi' - icon_state = "giskardcivil" - caliber = ".380" - magazine_type = /obj/item/ammo_magazine/m380 - allowed_magazines = list(/obj/item/ammo_magazine/m380) - load_method = MAGAZINE - w_class = ITEMSIZE_SMALL - fire_sound = 'sound/weapons/gunshot_pathetic.ogg' - origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 3) - -/obj/item/weapon/gun/projectile/giskard/update_icon() - ..() - if(ammo_magazine && ammo_magazine.stored_ammo.len) - icon_state = "giskardcivil" - else - icon_state = "giskardcivil_empty" - -//Not so civilian gun -/obj/item/weapon/gun/projectile/giskard/olivaw - name = "\improper \"Olivaw\" holdout burst-pistol" - desc = "The FS HG .380 \"Olivaw\" is a more advanced version of the \"Giskard\". This one seems to have a two-round burst-fire mode. Uses .380 rounds." - icon_state = "olivawcivil" - firemodes = list( - list(mode_name="semiauto", burst=1, fire_delay=1.2, move_delay=null, burst_accuracy=null, dispersion=null), - list(mode_name="2-round bursts", burst=2, fire_delay=0.2, move_delay=4, burst_accuracy=list(0,-15), dispersion=list(1.2, 1.8)), - ) - -/obj/item/weapon/gun/projectile/giskard/olivaw/update_icon() - ..() - if(ammo_magazine && ammo_magazine.stored_ammo.len) - icon_state = "olivawcivil" - else - icon_state = "olivawcivil_empty" - -//Detective gun -/obj/item/weapon/gun/projectile/revolver/consul - name = "\improper \"Consul\" Revolver" - desc = "Are you feeling lucky, punk? Uses .44 rounds." - icon = 'icons/obj/gun_vr.dmi' - icon_state = "inspector" - item_state = "revolver" - caliber = ".44" - ammo_type = /obj/item/ammo_casing/a44/rubber - handle_casings = CYCLE_CASINGS - origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3) - -/obj/item/weapon/gun/projectile/revolver/consul/proc/update_charge() - if(loaded.len==0) - overlays += "inspector_off" - else - overlays += "inspector_on" - -/obj/item/weapon/gun/projectile/revolver/consul/update_icon() - overlays.Cut() - update_charge() - -// No idea what this is for. -/obj/item/weapon/gun/projectile/automatic/sol - name = "\improper \"Sol\" SMG" - desc = "The FS 9x19mm \"Sol\" is a compact and reliable submachine gun. Uses 9mm rounds." - icon = 'icons/obj/gun_vr.dmi' - icon_state = "SMG-IS" - item_state = "wt550" - w_class = ITEMSIZE_LARGE - slot_flags = SLOT_BELT - caliber = "9mm" - magazine_type = /obj/item/ammo_magazine/m9mm - allowed_magazines = list(/obj/item/ammo_magazine/m9mm) - load_method = MAGAZINE - multi_aim = 1 - burst_delay = 2 - origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2) - 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)), - ) - -/obj/item/weapon/gun/projectile/automatic/sol/proc/update_charge() - if(!ammo_magazine) - return - var/ratio = ammo_magazine.stored_ammo.len / ammo_magazine.max_ammo - if(ratio < 0.25 && ratio != 0) - ratio = 0.25 - ratio = round(ratio, 0.25) * 100 - overlays += "smg_[ratio]" - -/obj/item/weapon/gun/projectile/automatic/sol/update_icon() - icon_state = (ammo_magazine)? "SMG-IS" : "SMG-IS-empty" - overlays.Cut() - update_charge() - -//HoP gun -/obj/item/weapon/gun/energy/gun/martin - name = "holdout energy gun" - desc = "The FS PDW E \"Martin\" is small holdout e-gun. Don't miss!" - icon = 'icons/obj/gun_vr.dmi' - icon_state = "PDW" - item_state = "gun" - w_class = ITEMSIZE_SMALL - projectile_type = /obj/item/projectile/beam/stun - charge_cost = 1200 - charge_meter = 0 - modifystate = null - battery_lock = 1 - fire_sound = 'sound/weapons/Taser.ogg' - origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2) - firemodes = list( - list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, fire_sound='sound/weapons/Taser.ogg', charge_cost = 600), - list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, fire_sound='sound/weapons/Laser.ogg', charge_cost = 1200), - ) - -/obj/item/weapon/gun/energy/gun/martin/proc/update_mode() - var/datum/firemode/current_mode = firemodes[sel_mode] - switch(current_mode.name) - if("stun") add_overlay("taser_pdw") - if("lethal") add_overlay("lazer_pdw") - -/obj/item/weapon/gun/energy/gun/martin/update_icon() - cut_overlays() - update_mode() - -///////////////////////////////////////////////////// -//////////////////// Custom Ammo //////////////////// -///////////////////////////////////////////////////// -//---------------- Beams ---------------- -/obj/item/projectile/beam/eluger - name = "laser beam" - icon_state = "xray" - light_color = "#00FF00" - 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/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/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 - name = "box mag (7.92x33mm Kurz)" - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "stg_30rnd" - caliber = "7.92x33mm" - ammo_type = /obj/item/ammo_casing/a792 - max_ammo = 30 - mag_type = MAGAZINE - -/obj/item/ammo_casing/a792 - desc = "A 7.92x33mm Kurz casing." - icon_state = "rifle-casing" - caliber = "7.92x33mm" - projectile_type = /obj/item/projectile/bullet/rifle/a762 - -/obj/item/ammo_magazine/mtg/empty - initial_ammo = 0 - -//------------- Battlerifle ------------- -/obj/item/ammo_magazine/m95 - name = "box mag (9.5x40mm)" - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "battlerifle" - caliber = "9.5x40mm" - ammo_type = /obj/item/ammo_casing/a95 - max_ammo = 36 - mag_type = MAGAZINE - multiple_sprites = 1 - -/obj/item/ammo_casing/a95 - desc = "A 9.5x40mm bullet casing." - icon_state = "rifle-casing" - caliber = "9.5x40mm" - projectile_type = /obj/item/projectile/bullet/rifle/a95 - -/obj/item/projectile/bullet/rifle/a95 - damage = 40 - -/obj/item/ammo_magazine/m95/empty - initial_ammo = 0 - -//---------------- PDW ------------------ -/obj/item/ammo_magazine/m9mml - name = "\improper SMG magazine (9mm)" - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "smg" - origin_tech = list(TECH_COMBAT = 2) - mag_type = MAGAZINE - matter = list(DEFAULT_WALL_MATERIAL = 1800) - caliber = "9mm" - ammo_type = /obj/item/ammo_casing/a9mm - max_ammo = 30 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m9mml/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m9mml/ap - name = "\improper SMG magazine (9mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/a9mm/ap - -/* Seems to have been de-coded? -/obj/item/ammo_magazine/m9mml/flash - name = "\improper SMG magazine (9mm flash)" - ammo_type = /obj/item/ammo_casing/a9mmf - -/obj/item/ammo_magazine/m9mml/rubber - name = "\improper SMG magazine (9mm rubber)" - ammo_type = /obj/item/ammo_casing/a9mmr - -/obj/item/ammo_magazine/m9mml/practice - name = "\improper SMG magazine (9mm practice)" - ammo_type = /obj/item/ammo_casing/a9mmp -*/ - -//.357 special ammo -/obj/item/ammo_magazine/s357/stun - name = "speedloader (.357 stun)" - desc = "A speedloader for .357 revolvers." - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "s357" - caliber = ".357" - ammo_type = /obj/item/ammo_casing/a357/stun - - -/obj/item/ammo_casing/a357/stun - desc = "A .357 stun bullet casing." - caliber = ".357" - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "stun357" - projectile_type = /obj/item/projectile/energy/electrode/stunshot/strong - -/obj/item/ammo_magazine/s357/rubber - name = "speedloader (.357 rubber)" - desc = "A speedloader for .357 revolvers." - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "r357" - caliber = ".357" - ammo_type = /obj/item/ammo_casing/a357/rubber - - -/obj/item/ammo_casing/a357/rubber - desc = "A .357 rubber bullet casing." - caliber = ".357" - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "rubber357" - projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong - -/obj/item/ammo_magazine/s357/flash - name = "speedloader (.357 flash)" - desc = "A speedloader for .357 revolvers." - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "f357" - caliber = ".357" - ammo_type = /obj/item/ammo_casing/a357/flash - -/obj/item/ammo_casing/a357/flash - desc = "A .357 flash bullet casing." - caliber = ".357" - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "flash357" - projectile_type = /obj/item/projectile/energy/flash/strong - -//.380 -/obj/item/ammo_casing/a380 - desc = "A .380 bullet casing." - caliber = ".380" - projectile_type = /obj/item/projectile/bullet/pistol - -/obj/item/ammo_magazine/m380 - name = "magazine (.380)" - icon_state = "9x19p" - origin_tech = list(TECH_COMBAT = 2) - mag_type = MAGAZINE - matter = list(DEFAULT_WALL_MATERIAL = 480) - caliber = ".380" - ammo_type = /obj/item/ammo_casing/a380 - max_ammo = 8 - multiple_sprites = 1 - -//.44 -/obj/item/ammo_casing/a44/rubber - icon_state = "r-casing" - desc = "A .44 rubber bullet casing." - projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong - -/obj/item/ammo_magazine/m44/rubber - desc = "A magazine for .44 less-than-lethal ammo." - ammo_type = /obj/item/ammo_casing/a44/rubber - -//.44 speedloaders -/obj/item/ammo_magazine/s44 - name = "speedloader (.44)" - desc = "A speedloader for .44 revolvers." - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "s357" - caliber = ".44" - matter = list(DEFAULT_WALL_MATERIAL = 1260) - ammo_type = /obj/item/ammo_casing/a44 - max_ammo = 6 - multiple_sprites = 1 - mag_type = SPEEDLOADER - -/obj/item/ammo_magazine/s44/rubber - name = "speedloader (.44 rubber)" - icon_state = "r357" - ammo_type = /obj/item/ammo_casing/a44/rubber - -//Expedition Frontier Phaser -/obj/item/weapon/gun/energy/frontier - name = "frontier phaser" - desc = "An extraordinarily rugged laser weapon, built to last and requiring effectively no maintenance. Includes a built-in crank charger for recharging away from civilization." - icon = 'icons/obj/gun_vr.dmi' - icon_state = "phaser" - item_state = "phaser" - item_icons = list(slot_l_hand_str = 'icons/mob/items/lefthand_guns_vr.dmi', slot_r_hand_str = 'icons/mob/items/righthand_guns_vr.dmi', "slot_belt" = 'icons/mob/belt_vr.dmi') - fire_sound = 'sound/weapons/laser2.ogg' - origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_POWER = 4) - charge_cost = 300 - - battery_lock = 1 - unacidable = 1 - - var/recharging = 0 - var/phase_power = 75 - - projectile_type = /obj/item/projectile/beam - firemodes = list( - list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam, charge_cost = 300), - list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 60), - ) - -/obj/item/weapon/gun/energy/frontier/unload_ammo(var/mob/user) - if(recharging) - return - recharging = 1 - update_icon() - user.visible_message("[user] opens \the [src] and starts pumping the handle.", \ - "You open \the [src] and start pumping the handle.") - while(recharging) - if(!do_after(user, 10, src)) - break - playsound(get_turf(src),'sound/items/change_drill.ogg',25,1) - if(power_supply.give(phase_power) < phase_power) - break - - recharging = 0 - update_icon() - -/obj/item/weapon/gun/energy/frontier/update_icon() - if(recharging) - icon_state = "[initial(icon_state)]_pump" - update_held_icon() - return - ..() - -/obj/item/weapon/gun/energy/frontier/emp_act(severity) - return ..(severity+2) - -/obj/item/weapon/gun/energy/frontier/ex_act() //|rugged| - return - -/obj/item/weapon/gun/energy/frontier/locked - desc = "An extraordinarily rugged laser weapon, built to last and requiring effectively no maintenance. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility." - req_access = list(access_armory) //for toggling safety - var/locked = 1 - -/obj/item/weapon/gun/energy/frontier/locked/attackby(obj/item/I, mob/user) - var/obj/item/weapon/card/id/id = I.GetID() - if(istype(id)) - if(check_access(id)) - locked = !locked - to_chat(user, "You [locked ? "enable" : "disable"] the safety lock on \the [src].") - else - to_chat(user, "Access denied.") - user.visible_message("[user] swipes \the [I] against \the [src].") - else - return ..() - -/obj/item/weapon/gun/energy/frontier/locked/emag_act(var/remaining_charges,var/mob/user) - ..() - locked = !locked - to_chat(user, "You [locked ? "enable" : "disable"] the safety lock on \the [src]!") - -/obj/item/weapon/gun/energy/frontier/locked/special_check(mob/user) - if(locked) - var/turf/T = get_turf(src) - if(T.z in using_map.map_levels) - to_chat(user, "The safety device prevents the gun from firing this close to the facility.") - return 0 - return ..() - -//Phaser Carbine - Reskinned phaser -/obj/item/weapon/gun/energy/frontier/locked/carbine - name = "frontier carbine" - desc = "An ergonomically improved version of the venerable frontier phaser, the carbine is a fairly new weapon, and has only been produced in limited numbers so far. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility." - icon = 'icons/obj/gun_vr.dmi' - icon_state = "carbinekill" - item_state = "retro" - item_icons = list(slot_l_hand_str = 'icons/mob/items/lefthand_guns.dmi', slot_r_hand_str = 'icons/mob/items/righthand_guns.dmi') - - modifystate = "carbinekill" - firemodes = list( - list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam, modifystate="carbinekill", charge_cost = 300), - list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, modifystate="carbinestun", charge_cost = 60), - ) - -/obj/item/weapon/gun/energy/frontier/locked/carbine/update_icon() - if(recharging) - icon_state = "[modifystate]_pump" - update_held_icon() - return - ..() - -//Expeditionary Holdout Phaser Pistol -/obj/item/weapon/gun/energy/frontier/locked/holdout - name = "holdout frontier phaser" - desc = "An minaturized weapon designed for the purpose of expeditionary support to defend themselves on the field. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility." - icon = 'icons/obj/gun_vr.dmi' - icon_state = "holdoutkill" - item_state = null - phase_power = 100 - - w_class = ITEMSIZE_SMALL - charge_cost = 600 - modifystate = "holdoutkill" - firemodes = list( - list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam, modifystate="holdoutkill", charge_cost = 600), - list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, modifystate="holdoutstun", charge_cost = 120), - list(mode_name="stun", fire_delay=12, projectile_type=/obj/item/projectile/beam/stun/med, modifystate="holdoutshock", charge_cost = 300), - ) diff --git a/code/modules/vore/resizing/resize_vr.dm b/code/modules/vore/resizing/resize_vr.dm index f30ba72251f..af87fc7dfd6 100644 --- a/code/modules/vore/resizing/resize_vr.dm +++ b/code/modules/vore/resizing/resize_vr.dm @@ -141,7 +141,7 @@ var/const/RESIZE_A_SMALLTINY = (RESIZE_SMALL + RESIZE_TINY) / 2 if(buckled) to_chat(usr,"You have to unbuckle \the [M] before you pick them up.") return 0 - if(size_diff >= 0.50) + if(size_diff >= 0.50 || mob_size < MOB_SMALL) holder_type = /obj/item/weapon/holder/micro var/obj/item/weapon/holder/m_holder = get_scooped(M, G) holder_type = holder_default diff --git a/code/unit_tests/map_tests.dm b/code/unit_tests/map_tests.dm index 5950743cf6a..8edf36fd4d9 100644 --- a/code/unit_tests/map_tests.dm +++ b/code/unit_tests/map_tests.dm @@ -41,7 +41,7 @@ var/list/zs_to_test = using_map.unit_test_z_levels || list(1) //Either you set it, or you just get z1 - for(var/area/A in all_areas) + for(var/area/A in world) if((A.z in zs_to_test) && !(A.type in exempt_areas)) area_test_count++ var/area_good = 1 diff --git a/html/changelog.html b/html/changelog.html index 23f72b48005..e345663e706 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -53,6 +53,23 @@ -->
    +

    05 April 2020

    +

    Atermonera updated:

    +
      +
    • Headphones (and other two-ear clothing items) don't break the off-ear slot when click-dragged to unequip.
    • +
    +

    Neerti updated:

    +
      +
    • The eject button on both the Chemical Dispenser and Chem Master will place the ejected beaker into your hands, instead of on top of the machine, if possible. (Requested by Nalarac.)
    • +
    • Suit sensor consoles now display a friendly textual indicator of what z-level someone is on, instead of a number. They will also now avoid spoiling the names of Points of Interest.
    • +
    • The beakers containing Cryoxadone near cryogenics are now labeled. (Requested by Nalarac.)
    • +
    • The sleeper consoles now finally face towards the sleepers, at last. It only took a year for someone to fix it.
    • +
    +

    novacat updated:

    +
      +
    • Adds action buttons for scoping all sniper weapons.
    • +
    +

    27 March 2020

    Arokha updated:

      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 4c1602a2a39..5f691beb231 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -5065,3 +5065,20 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - rscadd: Adds emergency backup cells to most light fixtures - tweak: AIs can turn emergency lighting on and off by clicking light fixtures. Flickering the lights has been moved to alt-click. +2020-04-05: + Atermonera: + - bugfix: Headphones (and other two-ear clothing items) don't break the off-ear + slot when click-dragged to unequip. + Neerti: + - tweak: The eject button on both the Chemical Dispenser and Chem Master will place + the ejected beaker into your hands, instead of on top of the machine, if possible. + (Requested by Nalarac.) + - tweak: Suit sensor consoles now display a friendly textual indicator of what z-level + someone is on, instead of a number. They will also now avoid spoiling the names + of Points of Interest. + - tweak: The beakers containing Cryoxadone near cryogenics are now labeled. (Requested + by Nalarac.) + - bugfix: The sleeper consoles now finally face towards the sleepers, at last. It + only took a year for someone to fix it. + novacat: + - rscadd: Adds action buttons for scoping all sniper weapons. diff --git a/html/changelogs/atermonera_circuitpants_holstered.yml b/html/changelogs/atermonera_circuitpants_holstered.yml new file mode 100644 index 00000000000..059a2669333 --- /dev/null +++ b/html/changelogs/atermonera_circuitpants_holstered.yml @@ -0,0 +1,5 @@ +author: Atermonera +delete-after: True +changes: + - bugfix: "Circuit clothes can have accessories attached." + - tweak: "Control-shift-click on circuit clothes to use items on the circuit." diff --git a/html/changelogs/atermonera_employment_comments.yml b/html/changelogs/atermonera_employment_comments.yml new file mode 100644 index 00000000000..9070a680541 --- /dev/null +++ b/html/changelogs/atermonera_employment_comments.yml @@ -0,0 +1,4 @@ +author: Atermonera +delete-after: True +changes: + - tweak: "Employment records can have comments similar to medical records." diff --git a/html/changelogs/atermonera_examine_pref.yml b/html/changelogs/atermonera_examine_pref.yml new file mode 100644 index 00000000000..5551bec2bb0 --- /dev/null +++ b/html/changelogs/atermonera_examine_pref.yml @@ -0,0 +1,4 @@ +author: Atermonera +delete-after: True +changes: + - rscadd: "Added a preference to switch between a few extra modes of examining things. Verb in the preferences tab." diff --git a/html/changelogs/atermonera_headphone_fix.yml b/html/changelogs/atermonera_headphone_fix.yml deleted file mode 100644 index f84ca574340..00000000000 --- a/html/changelogs/atermonera_headphone_fix.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Atermonera -delete-after: True -changes: - - bugfix: "Headphones (and other two-ear clothing items) don't break the off-ear slot when click-dragged to unequip." diff --git a/html/changelogs/ateromnera_vchat_pref.yml b/html/changelogs/ateromnera_vchat_pref.yml new file mode 100644 index 00000000000..903399b4183 --- /dev/null +++ b/html/changelogs/ateromnera_vchat_pref.yml @@ -0,0 +1,4 @@ +author: Atermonera +delete-after: True +changes: + - rscadd:"Adds a preference to forcibly disable (or enable) VChat. Useful mostly for people on linux, to skip the 60s waiting period where it tries to work and keeps you from seeing chat. Reloading VChat or reconnecting to the server are required for any changes to the preference to take effect. Support for issues that arise as a result of this preference is not guaranteed." diff --git a/html/changelogs/neerti-medical_qol_1.yml b/html/changelogs/neerti-medical_qol_1.yml deleted file mode 100644 index 346c3042c50..00000000000 --- a/html/changelogs/neerti-medical_qol_1.yml +++ /dev/null @@ -1,39 +0,0 @@ -################################ -# 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: "The eject button on both the Chemical Dispenser and Chem Master will place the ejected beaker into your hands, instead of on top of the machine, if possible. (Requested by Nalarac.)" - - tweak: "Suit sensor consoles now display a friendly textual indicator of what z-level someone is on, instead of a number. They will also now avoid spoiling the names of Points of Interest." - - tweak: "The beakers containing Cryoxadone near cryogenics are now labeled. (Requested by Nalarac.)" - - bugfix: "The sleeper consoles now finally face towards the sleepers, at last. It only took a year for someone to fix it." diff --git a/html/changelogs/novacat - sniperqol.yml b/html/changelogs/neerti-qol_medical_2.yml similarity index 75% rename from html/changelogs/novacat - sniperqol.yml rename to html/changelogs/neerti-qol_medical_2.yml index bc7ce5fe9b4..f8491b98038 100644 --- a/html/changelogs/novacat - sniperqol.yml +++ b/html/changelogs/neerti-qol_medical_2.yml @@ -1,36 +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 action buttons for all sniper weapons." +################################ +# 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: + - rscadd: "All sources of stasis (sleepers, stasis bags) will prolong the amount of time that lets someone be revived by a defib, proportional to how powerful the stasis effect is." + - tweak: "Opening a stasis bag that's being used now gives a prompt to confirm if you want to open it and make the bag expire. No more misclicks making doctors want to murder you." diff --git a/html/images/trader.png b/html/images/trader.png new file mode 100644 index 00000000000..d093e604cb3 Binary files /dev/null and b/html/images/trader.png differ diff --git a/icons/atmos/connector.dmi b/icons/atmos/connector.dmi index cf4ea7a3c84..bb7c007d8ee 100644 Binary files a/icons/atmos/connector.dmi and b/icons/atmos/connector.dmi differ diff --git a/icons/atmos/manifold.dmi b/icons/atmos/manifold.dmi index b7c5d0a2f14..7d94adb2468 100644 Binary files a/icons/atmos/manifold.dmi and b/icons/atmos/manifold.dmi differ diff --git a/icons/atmos/pipe_underlays.dmi b/icons/atmos/pipe_underlays.dmi index f6f38a9a7d7..170851e5b32 100644 Binary files a/icons/atmos/pipe_underlays.dmi and b/icons/atmos/pipe_underlays.dmi differ diff --git a/icons/atmos/pipes.dmi b/icons/atmos/pipes.dmi index 916002bac8c..94bad67c9d5 100644 Binary files a/icons/atmos/pipes.dmi and b/icons/atmos/pipes.dmi differ diff --git a/icons/atmos/pump.dmi b/icons/atmos/pump.dmi index a1e2d43ca2d..06194547ab8 100644 Binary files a/icons/atmos/pump.dmi and b/icons/atmos/pump.dmi differ diff --git a/icons/atmos/vent_pump.dmi b/icons/atmos/vent_pump.dmi index 10a1ab0dfb8..2031e751326 100644 Binary files a/icons/atmos/vent_pump.dmi and b/icons/atmos/vent_pump.dmi differ diff --git a/icons/goonstation/featherzone.dmi b/icons/goonstation/featherzone.dmi index 65fed09ccc8..433d34ccd19 100644 Binary files a/icons/goonstation/featherzone.dmi and b/icons/goonstation/featherzone.dmi differ diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index f3e7e10b85e..99f3f4fd4c9 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ diff --git a/icons/mob/back_vr.dmi b/icons/mob/back_vr.dmi index 7c20e2aa166..dad66ba3c3e 100644 Binary files a/icons/mob/back_vr.dmi and b/icons/mob/back_vr.dmi differ diff --git a/icons/mob/blob.dmi b/icons/mob/blob.dmi index 86d961c4c8e..073a2b03eeb 100644 Binary files a/icons/mob/blob.dmi and b/icons/mob/blob.dmi differ diff --git a/icons/mob/items/lefthand_guns.dmi b/icons/mob/items/lefthand_guns.dmi index afa3224de1b..1330c280b43 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 48b6cc67634..bb75b51054a 100644 Binary files a/icons/mob/items/righthand_guns.dmi and b/icons/mob/items/righthand_guns.dmi differ diff --git a/icons/mob/species/vulpkanin/helmet.dmi b/icons/mob/species/vulpkanin/helmet.dmi index 4f1e66f8d52..52cefb40a25 100644 Binary files a/icons/mob/species/vulpkanin/helmet.dmi and b/icons/mob/species/vulpkanin/helmet.dmi differ diff --git a/icons/mob/species/vulpkanin/suit.dmi b/icons/mob/species/vulpkanin/suit.dmi index 42a0b87b1fc..4b6de502f35 100644 Binary files a/icons/mob/species/vulpkanin/suit.dmi and b/icons/mob/species/vulpkanin/suit.dmi differ diff --git a/icons/mob/ties_vr.dmi b/icons/mob/ties_vr.dmi new file mode 100644 index 00000000000..e9651101126 Binary files /dev/null and b/icons/mob/ties_vr.dmi differ diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index 5348b4091f5..65efbfdd4c9 100644 Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ diff --git a/icons/obj/bureaucracy_vr.dmi b/icons/obj/bureaucracy_vr.dmi deleted file mode 100644 index c94ec99d34d..00000000000 Binary files a/icons/obj/bureaucracy_vr.dmi and /dev/null differ diff --git a/icons/obj/clothing/backpack_vr.dmi b/icons/obj/clothing/backpack_vr.dmi new file mode 100644 index 00000000000..ecab5d00db3 Binary files /dev/null and b/icons/obj/clothing/backpack_vr.dmi differ diff --git a/icons/obj/clothing/collars_vr.dmi b/icons/obj/clothing/collars_vr.dmi deleted file mode 100644 index 6c93ced8668..00000000000 Binary files a/icons/obj/clothing/collars_vr.dmi and /dev/null differ diff --git a/icons/obj/clothing/species/vulpkanin/suits.dmi b/icons/obj/clothing/species/vulpkanin/suits.dmi index bb8ec740d6a..75edd6202d8 100644 Binary files a/icons/obj/clothing/species/vulpkanin/suits.dmi and b/icons/obj/clothing/species/vulpkanin/suits.dmi differ diff --git a/icons/obj/clothing/ties_vr.dmi b/icons/obj/clothing/ties_vr.dmi new file mode 100644 index 00000000000..fc13c4f683f Binary files /dev/null and b/icons/obj/clothing/ties_vr.dmi differ diff --git a/icons/obj/fitness_vr.dmi b/icons/obj/fitness_vr.dmi new file mode 100644 index 00000000000..f5b0f1a74ed Binary files /dev/null and b/icons/obj/fitness_vr.dmi differ diff --git a/icons/obj/gun2.dmi b/icons/obj/gun2.dmi new file mode 100644 index 00000000000..56014ea32e1 Binary files /dev/null and b/icons/obj/gun2.dmi differ diff --git a/icons/obj/gun_vr.dmi b/icons/obj/gun_vr.dmi index ecb1e88d4bf..34c2a2dc6d5 100644 Binary files a/icons/obj/gun_vr.dmi and b/icons/obj/gun_vr.dmi differ diff --git a/icons/obj/machines/shielding.dmi b/icons/obj/machines/shielding.dmi index 42087073d3b..195192b1c87 100644 Binary files a/icons/obj/machines/shielding.dmi and b/icons/obj/machines/shielding.dmi differ diff --git a/icons/obj/modular_console.dmi b/icons/obj/modular_console.dmi index 125711410dc..544f7341d1a 100644 Binary files a/icons/obj/modular_console.dmi and b/icons/obj/modular_console.dmi differ diff --git a/icons/obj/modular_console_vr.dmi b/icons/obj/modular_console_vr.dmi deleted file mode 100644 index 125711410dc..00000000000 Binary files a/icons/obj/modular_console_vr.dmi and /dev/null differ diff --git a/icons/obj/modular_laptop.dmi b/icons/obj/modular_laptop.dmi index 4294fa43701..d4d750630df 100644 Binary files a/icons/obj/modular_laptop.dmi and b/icons/obj/modular_laptop.dmi differ diff --git a/icons/obj/modular_laptop_vr.dmi b/icons/obj/modular_laptop_vr.dmi deleted file mode 100644 index 4294fa43701..00000000000 Binary files a/icons/obj/modular_laptop_vr.dmi and /dev/null differ diff --git a/icons/obj/modular_tablet.dmi b/icons/obj/modular_tablet.dmi index 33ca98c9408..d15ebc0cdc3 100644 Binary files a/icons/obj/modular_tablet.dmi and b/icons/obj/modular_tablet.dmi differ diff --git a/icons/obj/modular_tablet_vr.dmi b/icons/obj/modular_tablet_vr.dmi deleted file mode 100644 index 33ca98c9408..00000000000 Binary files a/icons/obj/modular_tablet_vr.dmi and /dev/null differ diff --git a/icons/obj/overmap_vr.dmi b/icons/obj/overmap_vr.dmi index 4b910514830..7c951dac344 100644 Binary files a/icons/obj/overmap_vr.dmi and b/icons/obj/overmap_vr.dmi differ diff --git a/icons/obj/pipe-item.dmi b/icons/obj/pipe-item.dmi index cf381df9afe..66ab7e26460 100644 Binary files a/icons/obj/pipe-item.dmi and b/icons/obj/pipe-item.dmi differ diff --git a/icons/obj/pipes.dmi b/icons/obj/pipes.dmi index ec6d28a613b..c664f7a1a51 100644 Binary files a/icons/obj/pipes.dmi and b/icons/obj/pipes.dmi differ diff --git a/icons/obj/pointdefense.dmi b/icons/obj/pointdefense.dmi index 8b852e69fec..c0d0e09ffc1 100644 Binary files a/icons/obj/pointdefense.dmi and b/icons/obj/pointdefense.dmi differ diff --git a/icons/obj/power.dmi b/icons/obj/power.dmi index e5db3aeb3ec..33fc5e8dcc1 100644 Binary files a/icons/obj/power.dmi and b/icons/obj/power.dmi differ diff --git a/icons/obj/radio.dmi b/icons/obj/radio.dmi index 98871c1a029..c5654835991 100644 Binary files a/icons/obj/radio.dmi and b/icons/obj/radio.dmi differ diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index 89a5e9071dd..6b8a1f3b4de 100644 Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ diff --git a/icons/skybox/skybox_vr.dmi b/icons/skybox/skybox_vr.dmi index 0b84fd8ae1d..12e52a6391f 100644 Binary files a/icons/skybox/skybox_vr.dmi and b/icons/skybox/skybox_vr.dmi differ diff --git a/icons/turf/flooring/decals_vr.dmi b/icons/turf/flooring/decals_vr.dmi index 0a851ff0537..6f6a210ea75 100644 Binary files a/icons/turf/flooring/decals_vr.dmi and b/icons/turf/flooring/decals_vr.dmi differ diff --git a/icons/turf/floors_vr.dmi b/icons/turf/floors_vr.dmi index e3d15e20514..fe547e274f9 100644 Binary files a/icons/turf/floors_vr.dmi and b/icons/turf/floors_vr.dmi differ diff --git a/icons/turf/wall_masks.dmi b/icons/turf/wall_masks.dmi index c8564ac407f..03c7ca6b9bf 100644 Binary files a/icons/turf/wall_masks.dmi and b/icons/turf/wall_masks.dmi differ diff --git a/icons/vore/custom_items_vr.dmi b/icons/vore/custom_items_vr.dmi index daf6b0895af..c1ededb9697 100644 Binary files a/icons/vore/custom_items_vr.dmi and b/icons/vore/custom_items_vr.dmi differ diff --git a/icons/vore/custom_onmob_vr.dmi b/icons/vore/custom_onmob_vr.dmi index d94c0da70de..1dbfb6d011b 100644 Binary files a/icons/vore/custom_onmob_vr.dmi and b/icons/vore/custom_onmob_vr.dmi differ diff --git a/maps/southern_cross/items/encryptionkey_vr.dm b/maps/southern_cross/items/encryptionkey_vr.dm index 94b12bdd2c6..fe1032c09b6 100644 --- a/maps/southern_cross/items/encryptionkey_vr.dm +++ b/maps/southern_cross/items/encryptionkey_vr.dm @@ -4,3 +4,6 @@ /obj/item/device/encryptionkey/explorer channels = list("Science" = 1, "Explorer" = 1) + +/obj/item/device/encryptionkey/talon + channels = list("Talon" = 1) diff --git a/maps/southern_cross/items/headset_vr.dm b/maps/southern_cross/items/headset_vr.dm index ac737845b5a..8b6f7b1e97d 100644 --- a/maps/southern_cross/items/headset_vr.dm +++ b/maps/southern_cross/items/headset_vr.dm @@ -24,3 +24,10 @@ icon_state = "pilot_headset" adhoc_fallback = TRUE ks2type = /obj/item/device/encryptionkey/pilot + +/obj/item/device/radio/headset/talon + name = "talon headset" + desc = "A headset for communication between the crew of the ITV Talon." + adhoc_fallback = TRUE + icon_state = "pilot_headset" + ks2type = /obj/item/device/encryptionkey/talon diff --git a/maps/southern_cross/southern_cross.dm b/maps/southern_cross/southern_cross.dm index 29c4f295f23..741d64d58e3 100644 --- a/maps/southern_cross/southern_cross.dm +++ b/maps/southern_cross/southern_cross.dm @@ -6,6 +6,7 @@ #include "southern_cross_defines.dm" #include "southern_cross_jobs.dm" #include "southern_cross_elevator.dm" + #include "southern_cross_events.dm" #include "southern_cross_presets.dm" #include "southern_cross_shuttles.dm" diff --git a/maps/southern_cross/southern_cross_events.dm b/maps/southern_cross/southern_cross_events.dm new file mode 100644 index 00000000000..ab7ac253f6f --- /dev/null +++ b/maps/southern_cross/southern_cross_events.dm @@ -0,0 +1,7 @@ +// The Station Director's office is specific to the Southern Cross, so this needs to go here. +/datum/event2/event/prison_break/bridge + area_types_to_break = list( + /area/bridge, + /area/bridge_hallway, + /area/crew_quarters/heads/sc/sd + ) \ No newline at end of file diff --git a/maps/southern_cross/structures/closets/misc_vr.dm b/maps/southern_cross/structures/closets/misc_vr.dm index 033a5384ef1..11ebc922d41 100644 --- a/maps/southern_cross/structures/closets/misc_vr.dm +++ b/maps/southern_cross/structures/closets/misc_vr.dm @@ -39,7 +39,7 @@ /obj/item/weapon/reagent_containers/glass/bottle/antitoxin, /obj/item/weapon/storage/belt/medical/emt, /obj/item/weapon/material/knife/tacknife/survival, - /obj/item/weapon/gun/energy/frontier/locked/holdout, + /obj/item/weapon/gun/energy/locked/frontier/holdout, /obj/item/clothing/mask/gas/explorer, /obj/item/clothing/suit/storage/hooded/explorer/medic, /obj/item/clothing/suit/storage/hooded/wintercoat/medical/sar, @@ -68,7 +68,7 @@ starts_with = list( /obj/item/weapon/storage/backpack/parachute, /obj/item/weapon/material/knife/tacknife/survival, - /obj/item/weapon/gun/energy/frontier/locked/holdout, + /obj/item/weapon/gun/energy/locked/frontier/holdout, /obj/item/clothing/head/pilot, /obj/item/clothing/under/rank/pilot1, /obj/item/clothing/suit/storage/toggle/bomber/pilot, @@ -112,11 +112,11 @@ /obj/item/device/geiger, /obj/item/weapon/cell/device, /obj/item/device/radio, - /obj/item/device/subspaceradio, + /obj/item/device/bluespaceradio/tether_prelinked, /obj/item/stack/marker_beacon/thirty, /obj/item/weapon/material/knife/tacknife/survival, /obj/item/weapon/material/knife/machete/deluxe, - /obj/item/weapon/gun/energy/frontier/locked/carbine, + /obj/item/weapon/gun/energy/locked/frontier/carbine, /obj/item/clothing/accessory/holster/machete, /obj/item/weapon/reagent_containers/food/snacks/liquidfood, /obj/item/weapon/reagent_containers/food/snacks/liquidprotein, diff --git a/maps/submaps/shelters/shelter_4.dmm b/maps/submaps/shelters/shelter_4.dmm index bed3b074cd8..63100ce2861 100644 --- a/maps/submaps/shelters/shelter_4.dmm +++ b/maps/submaps/shelters/shelter_4.dmm @@ -64,9 +64,9 @@ /obj/item/weapon/storage/box/survival/space, /obj/item/weapon/storage/box/survival/space, /obj/item/weapon/storage/box/survival/space, -/obj/item/weapon/gun/energy/frontier/locked/holdout, -/obj/item/weapon/gun/energy/frontier/locked/holdout, -/obj/item/device/subspaceradio, +/obj/item/weapon/gun/energy/locked/frontier/holdout/unlocked, +/obj/item/weapon/gun/energy/locked/frontier/holdout/unlocked, +/obj/item/device/bluespaceradio, /obj/item/weapon/storage/box/survival/comp, /obj/item/weapon/storage/box/survival/comp, /obj/item/device/binoculars, diff --git a/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm b/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm index abda041a728..185ddd433f9 100644 --- a/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm +++ b/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm @@ -4,6 +4,7 @@ flags = RAD_SHIELDED ambience = AMBIENCE_RUINS secret_name = TRUE + forbid_events = TRUE /area/submap/event //To be used for Events not for regular PoIs name = "Unknown" @@ -136,4 +137,4 @@ /area/submap/ChemSpill2 name = "POI - Acrid Lake" - ambience = AMBIENCE_FOREBODING \ No newline at end of file + ambience = AMBIENCE_FOREBODING diff --git a/maps/tether/submaps/_tether_submaps.dm b/maps/tether/submaps/_tether_submaps.dm index cc989fbda04..d9fcdcfd03f 100644 --- a/maps/tether/submaps/_tether_submaps.dm +++ b/maps/tether/submaps/_tether_submaps.dm @@ -149,6 +149,7 @@ #include "aerostat/aerostat.dmm" #include "aerostat/surface.dmm" #include "space/debrisfield.dmm" +#include "space/fueldepot.dmm" #endif #include "beach/_beach.dm" @@ -225,6 +226,7 @@ #include "space/_debrisfield.dm" +#include "space/_fueldepot.dm" #include "space/pois/_templates.dm" #include "space/pois/debrisfield_things.dm" /datum/map_template/tether_lateload/away_debrisfield @@ -242,6 +244,17 @@ name = "Away Mission - Debris Field" z = Z_LEVEL_DEBRISFIELD +/datum/map_template/tether_lateload/away_fueldepot + name = "Fuel Depot - Z1 Space" + desc = "An unmanned fuel depot floating in space." + mappath = 'space/fueldepot.dmm' + associated_map_datum = /datum/map_z_level/tether_lateload/away_fueldepot + +/datum/map_z_level/tether_lateload/away_fueldepot + name = "Away Mission - Fuel Depot" + z = Z_LEVEL_FUELDEPOT + + ////////////////////////////////////////////////////////////////////////////////////// // Gateway submaps go here @@ -485,3 +498,41 @@ #include "om_ships/aro.dm" #include "om_ships/cruiser.dm" #include "om_ships/vespa.dm" +#include "om_ships/generic_shuttle.dm" +#include "om_ships/mercenarybase.dm" +#include "om_ships/mercship.dm" + +////////////////////////////////////////////////////////////////////////////// +//Offmap Spawn Locations +#include "offmap/talon.dm" +#include "offmap/talon_areas.dm" + +#if MAP_TEST +#include "offmap/talon1.dmm" +#include "offmap/talon2.dmm" +#endif + +// Talon offmap spawn +/datum/map_template/tether_lateload/offmap/talon1 + name = "Offmap Ship - Talon Z1" + desc = "Offmap spawn ship, the Talon." + mappath = 'offmap/talon1.dmm' + associated_map_datum = /datum/map_z_level/tether_lateload/talon1 + +/datum/map_template/tether_lateload/offmap/talon2 + name = "Offmap Ship - Talon Z2" + desc = "Offmap spawn ship, the Talon." + mappath = 'offmap/talon2.dmm' + associated_map_datum = /datum/map_z_level/tether_lateload/talon2 + +/datum/map_z_level/tether_lateload/talon1 + name = "Talon Deck One" + flags = MAP_LEVEL_PLAYER + base_turf = /turf/space + z = Z_LEVEL_OFFMAP1 + +/datum/map_z_level/tether_lateload/talon2 + name = "Talon Deck Two" + flags = MAP_LEVEL_PLAYER + base_turf = /turf/simulated/open + z = Z_LEVEL_OFFMAP2 diff --git a/maps/tether/submaps/admin_use/ert.dmm b/maps/tether/submaps/admin_use/ert.dmm index 866115bb8c7..1d59c6754cb 100644 --- a/maps/tether/submaps/admin_use/ert.dmm +++ b/maps/tether/submaps/admin_use/ert.dmm @@ -457,11 +457,25 @@ "aW" = ( /obj/structure/table/rack/steel, /obj/item/weapon/gun/energy/netgun, -/obj/item/weapon/gun/energy/sniperrifle, -/obj/item/weapon/gun/energy/gun/martin, -/obj/item/weapon/gun/energy/gun/martin, -/obj/item/weapon/gun/energy/gun/martin, -/obj/item/weapon/gun/energy/gun/martin, +/obj/item/weapon/gun/energy/sniperrifle{ + battery_lock = 0 + }, +/obj/item/weapon/gun/energy/gun/martin{ + battery_lock = 0 + }, +/obj/item/weapon/gun/energy/gun/martin{ + battery_lock = 0 + }, +/obj/item/weapon/gun/energy/gun/martin{ + battery_lock = 0 + }, +/obj/item/weapon/gun/energy/gun/martin{ + battery_lock = 0 + }, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, /turf/simulated/shuttle/floor/black, /area/shuttle/specops/centcom) "aX" = ( @@ -479,6 +493,18 @@ /obj/item/weapon/gun/energy/gun, /obj/item/weapon/gun/energy/gun, /obj/item/weapon/gun/energy/gun, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, /turf/simulated/shuttle/floor/black, /area/shuttle/specops/centcom) "aZ" = ( @@ -578,6 +604,18 @@ /obj/item/weapon/gun/energy/laser, /obj/item/weapon/gun/energy/laser, /obj/item/weapon/gun/energy/laser, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, /turf/simulated/shuttle/floor/black, /area/shuttle/specops/centcom) "bk" = ( @@ -672,6 +710,10 @@ /obj/item/weapon/gun/energy/ionrifle, /obj/item/weapon/gun/energy/ionrifle/pistol, /obj/item/weapon/gun/energy/ionrifle/pistol, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, /turf/simulated/shuttle/floor/black, /area/shuttle/specops/centcom) "bv" = ( diff --git a/maps/tether/submaps/admin_use/tradeship.dmm b/maps/tether/submaps/admin_use/tradeship.dmm index daaa523ff86..96167f720fc 100644 --- a/maps/tether/submaps/admin_use/tradeship.dmm +++ b/maps/tether/submaps/admin_use/tradeship.dmm @@ -236,6 +236,7 @@ name = "shuttle bay controller"; pixel_x = 25; pixel_y = 0; + req_one_access = list(160); tag_door = "trade_shuttle_bay_door" }, /turf/unsimulated/floor{ @@ -409,7 +410,7 @@ id_tag = "trade_shuttle"; pixel_x = -25; pixel_y = 0; - req_one_access = list(101); + req_one_access = list(160); tag_door = "trade_shuttle_hatch" }, /turf/simulated/shuttle/floor/black, @@ -490,7 +491,9 @@ /turf/simulated/shuttle/floor/black, /area/shuttle/trade) "bi" = ( -/obj/machinery/suit_cycler/syndicate, +/obj/machinery/suit_cycler/syndicate{ + req_access = list(160) + }, /turf/simulated/shuttle/floor/black, /area/shuttle/trade) "bj" = ( @@ -765,8 +768,10 @@ "bO" = ( /obj/machinery/vending/medical{ density = 0; + dir = 1; pixel_y = -32; - req_access = null + req_access = list(160); + req_log_access = 160 }, /turf/simulated/shuttle/floor/black, /area/shuttle/trade) @@ -903,7 +908,9 @@ /turf/simulated/shuttle/plating, /area/shuttle/trade) "ca" = ( -/obj/machinery/vending/coffee, +/obj/machinery/vending/coffee{ + dir = 4 + }, /turf/simulated/shuttle/floor/black, /area/shuttle/trade) "cb" = ( @@ -973,6 +980,7 @@ /area/shuttle/trade) "ck" = ( /obj/machinery/vending/snack{ + dir = 4; name = "hacked Getmore Chocolate Corp"; prices = list() }, @@ -1055,6 +1063,7 @@ /area/shuttle/trade) "ct" = ( /obj/machinery/vending/cigarette{ + dir = 4; name = "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) @@ -1257,7 +1266,7 @@ id = "tradebridgeshutters"; name = "remote shutter control"; pixel_x = 30; - req_access = list(150) + req_access = list(160) }, /obj/structure/flora/pottedplant{ icon_state = "plant-09"; @@ -1305,7 +1314,7 @@ "cX" = ( /obj/machinery/door/airlock/multi_tile/glass{ dir = 2; - req_access = list(160) + req_access = newlist() }, /turf/simulated/shuttle/floor/black, /area/shuttle/trade) @@ -1321,7 +1330,8 @@ id = "trade"; name = "Shop Shutters"; pixel_x = 0; - pixel_y = -26 + pixel_y = -26; + req_access = list(160) }, /turf/simulated/shuttle/floor/darkred, /area/shuttle/trade) @@ -1866,7 +1876,9 @@ /turf/simulated/shuttle/floor/black, /area/shuttle/trade) "dX" = ( -/obj/structure/filingcabinet/filingcabinet, +/obj/structure/filingcabinet/filingcabinet{ + dir = 4 + }, /turf/simulated/shuttle/floor/black, /area/shuttle/trade) "dY" = ( @@ -1908,11 +1920,19 @@ /turf/simulated/shuttle/floor/black, /area/shuttle/trade) "ed" = ( -/obj/machinery/vending/engivend, +/obj/machinery/vending/engivend{ + dir = 1; + req_access = list(160); + req_log_access = 160 + }, /turf/simulated/shuttle/floor/black, /area/shuttle/trade) "ee" = ( -/obj/machinery/vending/tool, +/obj/machinery/vending/tool{ + dir = 1; + req_access = list(160); + req_log_access = 160 + }, /turf/simulated/shuttle/floor/black, /area/shuttle/trade) "ef" = ( @@ -1925,7 +1945,7 @@ frequency = 1331; id_tag = "trade2_control"; pixel_x = -24; - req_access = list(150); + req_access = list(160); tag_airpump = "trade2_vent"; tag_chamber_sensor = "trade2_sensor"; tag_exterior_door = "trade2_shuttle_outer"; @@ -1941,7 +1961,8 @@ /obj/machinery/airlock_sensor{ frequency = 1331; id_tag = "trade2_sensor"; - pixel_x = 25 + pixel_x = 25; + req_access = list(160) }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 1; @@ -1966,7 +1987,7 @@ frequency = 1331; master_tag = "trade2_control"; pixel_x = 24; - req_one_access = list(150) + req_one_access = list(160) }, /obj/machinery/door/airlock/glass_external{ frequency = 1331; @@ -1977,6 +1998,13 @@ }, /turf/simulated/shuttle/floor/black, /area/shuttle/trade) +"jo" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 4; + req_access = newlist() + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/trade) (1,1,1) = {" aa @@ -2638,7 +2666,7 @@ bA bA bc bc -bP +jo bc be dJ diff --git a/maps/tether/submaps/aerostat/_aerostat.dm b/maps/tether/submaps/aerostat/_aerostat.dm index 02898e6765f..1ceb13fa9f0 100644 --- a/maps/tether/submaps/aerostat/_aerostat.dm +++ b/maps/tether/submaps/aerostat/_aerostat.dm @@ -6,7 +6,8 @@ icon_state = "globe" color = "#dfff3f" //Bright yellow initial_generic_waypoints = list("aerostat_west","aerostat_east","aerostat_south","aerostat_northwest","aerostat_northeast") - + extra_z_levels = list(Z_LEVEL_AEROSTAT_SURFACE) + // -- Datums -- // /datum/shuttle/autodock/ferry/aerostat diff --git a/maps/tether/submaps/beach/_beach.dm b/maps/tether/submaps/beach/_beach.dm index 37dcf2966c9..36e04f92f14 100644 --- a/maps/tether/submaps/beach/_beach.dm +++ b/maps/tether/submaps/beach/_beach.dm @@ -6,6 +6,7 @@ icon_state = "globe" color = "#ffd300" //Sandy initial_generic_waypoints = list("beach_e", "beach_c", "beach_nw") + extra_z_levels = list(Z_LEVEL_BEACH_CAVE) //This is a special subtype of the thing that generates ores on a map //It will generate more rich ores because of the lower numbers than the normal one diff --git a/maps/tether/submaps/beach/beach.dmm b/maps/tether/submaps/beach/beach.dmm index e46fb81c166..2416bafdc8c 100644 --- a/maps/tether/submaps/beach/beach.dmm +++ b/maps/tether/submaps/beach/beach.dmm @@ -35,7 +35,7 @@ /turf/simulated/floor/beach/sand, /area/tether_away/beach) "aj" = ( -/turf/simulated/floor/water/ocean, +/turf/simulated/floor/water/beach, /area/tether_away/beach) "ak" = ( /turf/simulated/floor/water/ocean, @@ -56,7 +56,10 @@ /area/tether_away/beach) "ap" = ( /obj/effect/overlay/palmtree_r, -/turf/simulated/floor/beach/sand, +/turf/simulated/floor/water/beach/corner{ + icon_state = "beachcorner"; + dir = 8 + }, /area/tether_away/beach/jungle) "aq" = ( /turf/simulated/wall/wood, @@ -260,6 +263,7 @@ /area/tether_away/beach) "aY" = ( /obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/greendouble, /turf/simulated/floor/wood, /area/tether_away/beach) "aZ" = ( @@ -271,19 +275,19 @@ /area/tether_away/beach) "bb" = ( /obj/structure/bed/chair, -/turf/simulated/floor/beach/sand, +/turf/simulated/floor/beach/sand/desert, /area/tether_away/beach) "bc" = ( /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle, -/turf/simulated/floor/beach/sand, +/turf/simulated/floor/beach/sand/desert, /area/tether_away/beach) "bd" = ( /obj/item/weapon/beach_ball, -/turf/simulated/floor/beach/sand, +/turf/simulated/floor/beach/sand/desert, /area/tether_away/beach) "be" = ( /obj/item/clothing/head/collectable/paper, -/turf/simulated/floor/beach/sand, +/turf/simulated/floor/beach/sand/desert, /area/tether_away/beach) "bf" = ( /turf/simulated/floor/water/ocean, @@ -302,7 +306,10 @@ /turf/simulated/floor/water/ocean, /area/tether_away/beach/jungle) "bk" = ( -/turf/simulated/floor/beach/sand, +/turf/simulated/floor/water/beach{ + icon_state = "beach"; + dir = 1 + }, /area/tether_away/beach/water) "bl" = ( /turf/unsimulated/wall/planetary/normal, @@ -334,10 +341,70 @@ /obj/effect/step_trigger/zlevel_fall/beach, /turf/simulated/floor/beach/sand/desert, /area/tether_away/beach/jungle) +"cA" = ( +/turf/simulated/floor/water/beach{ + icon_state = "beach"; + dir = 10 + }, +/area/tether_away/beach/water) +"cS" = ( +/turf/simulated/floor/water/beach/corner, +/area/tether_away/beach/water) +"dY" = ( +/turf/simulated/floor/water/beach/corner{ + icon_state = "beachcorner"; + dir = 8 + }, +/area/tether_away/beach) +"fQ" = ( +/turf/simulated/floor/water/beach, +/area/tether_away/beach/water) +"gA" = ( +/turf/simulated/floor/water/beach{ + icon_state = "beach"; + dir = 6 + }, +/area/tether_away/beach/water) "hx" = ( /obj/effect/overmap/visitable/sector/virgo4, /turf/simulated/floor/water/deep/ocean, /area/tether_away/beach/water) +"hN" = ( +/turf/simulated/floor/holofloor/beach/sand, +/area/tether_away/beach/jungle) +"le" = ( +/turf/simulated/floor/water/beach{ + icon_state = "beach"; + dir = 5 + }, +/area/tether_away/beach/jungle) +"mC" = ( +/turf/simulated/floor/beach/sand/desert, +/area/tether_away/beach/water) +"oC" = ( +/turf/simulated/floor/water/beach{ + icon_state = "beach"; + dir = 4 + }, +/area/tether_away/beach/jungle) +"pq" = ( +/turf/simulated/floor/water/beach/corner, +/area/tether_away/beach/jungle) +"pS" = ( +/turf/simulated/floor/water/beach{ + icon_state = "beach"; + dir = 1 + }, +/area/tether_away/beach/jungle) +"tj" = ( +/turf/simulated/floor/water/beach{ + icon_state = "beach"; + dir = 5 + }, +/area/tether_away/beach/water) +"tr" = ( +/turf/simulated/floor/beach/sand/desert, +/area/tether_away/beach) "xW" = ( /obj/tether_away_spawner/beach_outside_friendly, /turf/simulated/floor/beach/sand/desert, @@ -351,6 +418,18 @@ }, /turf/simulated/floor/beach/sand/desert, /area/tether_away/beach/jungle) +"BG" = ( +/turf/simulated/floor/water/beach/corner{ + icon_state = "beachcorner"; + dir = 8 + }, +/area/tether_away/beach/jungle) +"CP" = ( +/turf/simulated/floor/water/beach{ + icon_state = "beach"; + dir = 10 + }, +/area/tether_away/beach/jungle) "Dr" = ( /obj/effect/shuttle_landmark{ base_area = /area/tether_away/beach/jungle; @@ -360,6 +439,48 @@ }, /turf/simulated/floor/beach/sand/desert, /area/tether_away/beach/jungle) +"DL" = ( +/turf/simulated/floor/water/beach/corner{ + icon_state = "beachcorner"; + dir = 8 + }, +/area/tether_away/beach/water) +"Ee" = ( +/turf/simulated/floor/water/beach/corner{ + icon_state = "beachcorner"; + dir = 4 + }, +/area/tether_away/beach/jungle) +"Ey" = ( +/turf/simulated/floor/water/beach{ + icon_state = "beach"; + dir = 6 + }, +/area/tether_away/beach/jungle) +"Ij" = ( +/turf/simulated/floor/water/beach/corner{ + icon_state = "beachcorner"; + dir = 4 + }, +/area/tether_away/beach/water) +"Kw" = ( +/turf/simulated/floor/water/beach{ + icon_state = "beach"; + dir = 8 + }, +/area/tether_away/beach/jungle) +"RQ" = ( +/turf/simulated/floor/water/beach{ + icon_state = "beach"; + dir = 8 + }, +/area/tether_away/beach/water) +"Sv" = ( +/turf/simulated/floor/water/beach{ + icon_state = "beach"; + dir = 9 + }, +/area/tether_away/beach/jungle) "TU" = ( /obj/tether_away_spawner/beach_outside, /turf/simulated/floor/beach/sand/desert, @@ -368,6 +489,27 @@ /obj/tether_away_spawner/beach_outside_friendly, /turf/simulated/floor/beach/sand, /area/tether_away/beach) +"Va" = ( +/turf/simulated/floor/water/beach/corner{ + icon_state = "beachcorner"; + dir = 1 + }, +/area/tether_away/beach/water) +"VS" = ( +/turf/simulated/floor/water/beach/corner{ + icon_state = "beachcorner"; + dir = 1 + }, +/area/tether_away/beach/jungle) +"WX" = ( +/turf/simulated/floor/water/beach{ + icon_state = "beach"; + dir = 9 + }, +/area/tether_away/beach/water) +"Yv" = ( +/turf/simulated/floor/water/beach, +/area/tether_away/beach/jungle) (1,1,1) = {" bl @@ -622,7 +764,7 @@ aa aa aa aa -ad +tr aj ak am @@ -764,7 +906,7 @@ aa aa aa aa -ad +tr aj ak am @@ -906,7 +1048,7 @@ aa aa aa aa -ad +tr aj ak am @@ -1048,7 +1190,7 @@ aa aa aa aa -ad +tr aj ak am @@ -1190,7 +1332,7 @@ aa aa aa aa -ad +tr aj ak am @@ -1210,9 +1352,9 @@ am am bj bj -bp -bp -bp +Sv +Kw +CP bj bj am @@ -1332,7 +1474,7 @@ aa aa aa aa -ad +tr aj ak am @@ -1351,11 +1493,11 @@ am am bj bj -bp -bp -bp -bp -bp +Sv +Ee +aa +VS +CP bj am am @@ -1474,7 +1616,7 @@ aa aa aa aa -ad +tr aj ak am @@ -1492,12 +1634,12 @@ am am am bj -bp -bp -bp -bp -ap -bp +Sv +Ee +aa +aa +ab +Yv bj bj am @@ -1616,7 +1758,7 @@ aa aa aa aa -ad +tr aj ak am @@ -1634,13 +1776,13 @@ am am bj bj -bp -bp -bp -bp -bp -bp -bp +pS +aa +aa +aa +aa +VS +CP bj am am @@ -1758,7 +1900,7 @@ aa aa aa aa -ad +tr aj ak am @@ -1775,14 +1917,14 @@ am am am bj -bp -bp -ap -bp -bp -bp -bp -bp +Sv +Ee +ab +aa +aa +aa +aa +Yv bj bj am @@ -1900,7 +2042,7 @@ aa aa aa aa -ad +tr aj ak am @@ -1916,16 +2058,16 @@ am am am bj -bj -bp -bp -bp -bp -bp -bp -bp -ap -bp +Sv +Ee +aa +aa +aa +ab +aa +aa +VS +CP bj am am @@ -2042,7 +2184,7 @@ aa aa aa aa -ad +tr aj ak am @@ -2058,16 +2200,16 @@ am am am bj -bp -ad -ad -ad -ad -ad -ad -ad -bp -bp +pS +tr +tr +tr +tr +tr +tr +tr +aa +Yv bj bn am @@ -2184,7 +2326,7 @@ aa aa aa aa -ad +tr aj ak am @@ -2200,16 +2342,16 @@ am am am bj -bp -ad +pS +tr aq aq aq aq aw -ad -bp -bp +tr +aa +Yv bj am am @@ -2326,7 +2468,7 @@ bh aa aa aa -ad +tr aj ak am @@ -2341,17 +2483,17 @@ am am am bj -bj -bp -ad +Sv +Ee +tr aq aY aw aB aw -ad -bp -bp +tr +aa +Yv bj am am @@ -2468,7 +2610,7 @@ aa aa aa aa -ad +tr aj ak am @@ -2483,17 +2625,17 @@ am am am bj -bp -bp -ad +pS +aa +tr aq aw aw aq aw -ad -bp -bp +tr +aa +Yv bj am am @@ -2610,7 +2752,7 @@ aa aa aa aa -ad +tr aj ak am @@ -2625,17 +2767,17 @@ am am am bj -bp +le ap -ad +tr aq aq aq aq aw -ad -bp -bp +tr +aa +Yv bj am am @@ -2752,7 +2894,7 @@ aa aa aa aa -ad +tr aj ak am @@ -2768,16 +2910,16 @@ am am bj bj -bp -ad -ad -ad -ad -ad -ad -ad -bp -bp +le +dY +tr +tr +tr +tr +tr +tr +pq +Ey bj am am @@ -2894,7 +3036,7 @@ aa aa aa aa -ad +tr aj ak am @@ -2911,14 +3053,14 @@ am am bj bj -bp -bp -bp -bp -bp -bp -ap -bp +le +oC +BG +aa +aa +aa +ab +Yv bj bj am @@ -3036,7 +3178,7 @@ aa aa aa aa -ad +tr aj ak am @@ -3055,12 +3197,12 @@ bj bj bj bj -bj -bp -bp -bp -bp -bp +le +oC +BG +aa +pq +Ey bj am am @@ -3178,7 +3320,7 @@ aa aa aa aa -ad +tr aj ak am @@ -3199,9 +3341,9 @@ bj bj bj bj -bp -bp -bp +le +BG +Yv bj bj am @@ -3320,7 +3462,7 @@ aa aa aa aa -ad +tr aj ak am @@ -3342,8 +3484,8 @@ bj bj bj bj -bp -bp +le +Ey bj am am @@ -3462,7 +3604,7 @@ aa aa aa aa -ad +tr aj ak am @@ -3604,7 +3746,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -3746,7 +3888,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -3888,7 +4030,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -3910,9 +4052,9 @@ am bj bj bj -bj -bp -bj +Sv +Kw +CP bj am am @@ -4030,7 +4172,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -4051,10 +4193,10 @@ am am am bj -bp -bp -bp -bp +Sv +Ee +aa +Yv bj am am @@ -4172,7 +4314,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -4193,10 +4335,10 @@ am am am bj -bj -bp -bp -bj +le +oC +oC +Ey bj am am @@ -4314,7 +4456,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -4456,7 +4598,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -4598,7 +4740,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -4740,7 +4882,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -5166,7 +5308,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -5308,7 +5450,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -5734,7 +5876,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -5876,7 +6018,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -6018,7 +6160,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -6160,7 +6302,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -6302,7 +6444,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -6444,7 +6586,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -6586,7 +6728,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -7438,7 +7580,7 @@ aa aa aa ad -ad +tr aj ak bf @@ -7580,7 +7722,7 @@ ad ad ad ad -ad +tr aj ak bf @@ -7722,7 +7864,7 @@ an ad ad ad -ad +tr aj ak bf @@ -7864,7 +8006,7 @@ ao ad ad ad -ad +tr aj ak bf @@ -8006,7 +8148,7 @@ ad ad ad ad -ad +tr aj ak bf @@ -8148,7 +8290,7 @@ ad ad ad ad -ad +tr aj ak bf @@ -8290,7 +8432,7 @@ ad ad ad ad -ad +tr aj ak bf @@ -8432,7 +8574,7 @@ ad ad ad ad -ad +tr aj ak bf @@ -8574,7 +8716,7 @@ ad ad ad ad -ad +tr aj ak bf @@ -10420,7 +10562,7 @@ ad ad ad ad -ad +tr aj ak bf @@ -10562,7 +10704,7 @@ ad ad ad ad -ad +tr aj ak bf @@ -10704,7 +10846,7 @@ ad ad ad ad -ad +tr aj ak bf @@ -10846,7 +10988,7 @@ ad ad ad ai -ad +tr aj ak bf @@ -10988,7 +11130,7 @@ ad ad ad aZ -ad +tr aj ak bf @@ -11130,7 +11272,7 @@ ad ad ad ad -ad +tr aj ak bf @@ -11272,7 +11414,7 @@ ad ad ad ad -ad +tr aj ak bf @@ -11414,7 +11556,7 @@ ad ad ad ad -ad +tr aj ak bf @@ -11556,7 +11698,7 @@ aa ad ad ad -ad +tr aj ak bf @@ -12266,7 +12408,7 @@ aa aa ad ad -ad +tr aj ak bf @@ -12408,7 +12550,7 @@ aa aa aa ad -ad +tr aj ak bf @@ -12550,7 +12692,7 @@ aa aa aa ad -ad +tr aj ak bf @@ -12692,7 +12834,7 @@ aa aa aa ad -ad +tr aj ak bf @@ -12834,7 +12976,7 @@ aa aa aa ad -ad +tr aj ak bf @@ -12976,7 +13118,7 @@ aa aa aa ad -ad +tr aj ak bf @@ -13118,7 +13260,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -13402,7 +13544,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -14396,7 +14538,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -14538,7 +14680,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -14680,7 +14822,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -14822,7 +14964,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -14964,7 +15106,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -15106,7 +15248,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -15248,7 +15390,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -15390,7 +15532,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -15532,7 +15674,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -15545,9 +15687,9 @@ am am am bf -bf -bf -bf +WX +RQ +cA bf am am @@ -15674,7 +15816,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -15687,9 +15829,9 @@ am am am bf -bf bk -bf +mC +fQ bf am am @@ -15816,7 +15958,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -15830,8 +15972,8 @@ am bf bf bk -bk -bf +mC +fQ bf am am @@ -15958,7 +16100,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -15972,8 +16114,8 @@ am bf bf bk -bk -bk +mC +fQ bf am am @@ -16100,7 +16242,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -16112,10 +16254,10 @@ am am am bf -bf -bk -bk -bk +WX +Ij +mC +fQ bf bf am @@ -16242,7 +16384,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -16255,9 +16397,9 @@ bf bf bf bk -bk -bk -bk +mC +mC +fQ bf bf am @@ -16384,7 +16526,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -16397,10 +16539,10 @@ bf bf bf bk -bk -bk -bk -bf +mC +mC +Va +cA bf am am @@ -16526,7 +16668,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -16537,12 +16679,12 @@ bf bf bf bf -bf -bk -bk -bk -bk -bk +WX +Ij +mC +mC +mC +fQ bf am am @@ -16668,7 +16810,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -16680,11 +16822,11 @@ bf bf bf bk -bk -bk -bk -bk -bk +mC +mC +mC +mC +fQ bf am am @@ -16810,7 +16952,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -16822,11 +16964,11 @@ bf bf bf bk -bk -bk -bk -bk -bk +mC +mC +mC +mC +fQ bf am am @@ -16952,7 +17094,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -16964,11 +17106,11 @@ bf bf bf bk -bk -bk -bk -bk -bk +mC +mC +mC +mC +fQ bf am am @@ -17094,7 +17236,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -17105,12 +17247,12 @@ am am bf bf -bf -bk -bk -bk -bk -bf +tj +DL +mC +mC +cS +gA bf am am @@ -17236,7 +17378,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -17249,9 +17391,9 @@ am bf bf bk -bk -bk -bk +mC +mC +fQ bf bf am @@ -17376,9 +17518,9 @@ aa aa aa aa +hN aa -aa -ad +tr aj ak bf @@ -17390,10 +17532,10 @@ am am bf bf -bf -bk -bk -bk +tj +DL +cS +gA bf am am @@ -17520,7 +17662,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -17534,7 +17676,7 @@ am bf bf bk -bk +fQ bf bf am @@ -17662,7 +17804,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -17676,7 +17818,7 @@ am am bf bk -bk +fQ bf bf am @@ -17804,7 +17946,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -17818,7 +17960,7 @@ am am bf bk -bk +fQ bf am am @@ -17946,7 +18088,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -17959,8 +18101,8 @@ am am am bf -bf bk +fQ bf am am @@ -18088,7 +18230,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -18101,8 +18243,8 @@ am am am bf -bf bk +fQ bf am am @@ -18230,7 +18372,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -18243,8 +18385,8 @@ am am am bf -bf -bf +tj +gA bf am am @@ -18372,7 +18514,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -18514,7 +18656,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -18656,7 +18798,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -18798,7 +18940,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -18940,7 +19082,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -19082,7 +19224,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -19224,7 +19366,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -19366,7 +19508,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -19508,7 +19650,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -19650,7 +19792,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -19792,7 +19934,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -19934,7 +20076,7 @@ aa aa aa aa -ad +tr aj ak bf @@ -20076,7 +20218,7 @@ aa aa aa aa -ad +tr aj ak bf diff --git a/maps/tether/submaps/offmap/talon.dm b/maps/tether/submaps/offmap/talon.dm new file mode 100644 index 00000000000..239f4c47b6d --- /dev/null +++ b/maps/tether/submaps/offmap/talon.dm @@ -0,0 +1,467 @@ +/////////////////////////// +//// Spawning and despawning +var/global/list/latejoin_talon = list() +/obj/effect/landmark/talon + name = "JoinLateTalon" + delete_me = 1 + +/obj/effect/landmark/talon/New() + latejoin_talon += loc // Register this turf as tram latejoin. + ..() + +/datum/spawnpoint/talon + display_name = "ITV Talon Cryo" + restrict_job = list("Talon Captain", "Talon Pilot", "Talon Engineer", "Talon Doctor", "Talon Guard") + msg = "has come out of cryostasis" + announce_channel = "Talon" + +/datum/spawnpoint/talon/New() + ..() + turfs = latejoin_talon + +/obj/machinery/cryopod/talon + announce_channel = "Talon" + on_store_message = "has entered cryogenic storage." + on_store_name = "ITV Talon Cryo" + on_enter_visible_message = "starts climbing into the" + on_enter_occupant_message = "You feel cool air surround you. You go numb as your senses turn inward." + on_store_visible_message_1 = "hums and hisses as it moves" + on_store_visible_message_2 = "into cryogenic storage." + +/obj/effect/landmark/map_data/talon + height = 2 + +/////////////////////////// +//// The Talon +/obj/effect/overmap/visitable/ship/talon + name = "ITV Talon" + desc = "A semi-modern make of ship from Haephestus, registered as the ITV Talon." + vessel_mass = 10000 + vessel_size = SHIP_SIZE_LARGE + initial_generic_waypoints = list("talon_fore", "talon_aft", "talon_port", "talon_starboard") + initial_restricted_waypoints = list("Talon's boat" = list("offmap_spawn_talonboat"), "Talon lifeboat" = list("offmap_spawn_talon_lifeboat")) + + +/obj/effect/overmap/visitable/ship/talon/get_skybox_representation() + var/image/I = image('talon.dmi', "skybox") + I.pixel_x = 220 + I.pixel_y = 220 + return I + +// The shuttle's 'shuttle' computer +/obj/machinery/computer/shuttle_control/explore/talonboat + name = "boat control console" + shuttle_tag = "Talon's boat" + req_one_access = list(access_talon) + +// A shuttle lateloader landmark +/obj/effect/shuttle_landmark/shuttle_initializer/talonboat + name = "Talon's boat bay" + base_area = /area/talon/deckone/central_hallway + base_turf = /turf/simulated/floor/tiled/monotile + landmark_tag = "offmap_spawn_talonboat" + docking_controller = "talon_boatbay" + shuttle_type = /datum/shuttle/autodock/overmap/talonboat + +// The talon's boat +/datum/shuttle/autodock/overmap/talonboat + name = "Talon's boat" + current_location = "offmap_spawn_talonboat" + docking_controller_tag = "talonboat_docker" + shuttle_area = /area/shuttle/talonboat + fuel_consumption = 2 + defer_initialisation = TRUE + +/area/shuttle/talonboat + name = "Talon's Boat" + +/////////////////////////// +//// The Lifeboat +/obj/effect/overmap/visitable/ship/landable/talon_lifeboat + name = "Talon lifeboat" + desc = "A tiny engineless lifeboat from the ITV Talon." + vessel_mass = 1000 + vessel_size = SHIP_SIZE_TINY + shuttle = "Talon lifeboat" + +/* +/obj/effect/overmap/visitable/ship/talon_lifeboat/landable/get_skybox_representation() + var/image/I = image('aro.dmi', "skybox") + I.pixel_x = 200 + I.pixel_y = 200 + return I +*/ + +// The shuttle's 'shuttle' computer +/obj/machinery/computer/shuttle_control/explore/talon_lifeboat + name = "lifeboat control console" + shuttle_tag = "Talon lifeboat" + req_one_access = list(access_talon) + +// A shuttle lateloader landmark +/obj/effect/shuttle_landmark/shuttle_initializer/talon_lifeboat + name = "Talon lifeboat dock" + base_area = /area/talon/maintenance/decktwo_aft + base_turf = /turf/simulated/floor/reinforced + landmark_tag = "offmap_spawn_talon_lifeboat" + docking_controller = "talon_lifeboatbay" + shuttle_type = /datum/shuttle/autodock/overmap/talon_lifeboat + +// The talon's boat +/datum/shuttle/autodock/overmap/talon_lifeboat + name = "Talon lifeboat" + current_location = "offmap_spawn_talon_lifeboat" + docking_controller_tag = "talonlifeboat_docker" + shuttle_area = /area/talon/decktwo/lifeboat + fuel_consumption = 0 + defer_initialisation = TRUE + +/////////////////////////// +//// The Various Machines +/obj/machinery/telecomms/allinone/talon + freq_listening = list(PUB_FREQ, TALON_FREQ) + +/obj/item/weapon/paper/talon_shields + name = "to whatever asshole" + info = {"to whatever asshole keeps resetting the shield generator,
      \ +please stop fucking around before you get us all killed. thanks.
      \ +
      \ +to whoever has to fix this,
      \ +humanoid lifeforms off so we can get outside unless someone is trying to kill us,
      \ +atmospheric thing off unless all the air is leaving,
      \ +hull shield on because it saves a lot of power,
      \ +the last one on so it covers deck one,
      \ +radius of 26 is pretty good,
      \ +adjust input cap so it doesn't fuck the rest of the ship
      \ +good luck
      \ +
      \ +Harry Townes"} + +/obj/item/weapon/paper/talon_lifeboat + name = "Survival Directions" + info = {"

      Survival Directions


      +Only jettison lifeboat into space if no other means of survival available.
      +First attempt to protect lifeboat by means of shield generator in bubble mode until help arrives.
      +Do not attempt to exit lifeboat without wearing proper protective equipment and setting up an in-situ airlock. This can be done using metalfoam and inflatable barriers.
      +If lifeboat destruction is imminent, jettison lifeboat into space.
      +Once in open space, consider disabling nonessential power-consuming electronics via the APC, or even disabling the APC entirely, and turning it on at invernals as necessary.
      +((OOC: You can also pray/ahelp.)) +"} + +//Prevents remote control of drones +/obj/machinery/drone_fabricator/talon + name = "somewhat glitchy drone fabricator" + desc = "Obtained from a derelict, it seems to work sometimes, not work sometimes, and work TOO good sometimes. Didn't come with a control console either..." + +/obj/machinery/drone_fabricator/talon/create_drone(var/client/player) + var/mob/living/silicon/robot/drone/new_drone = ..() + if(!istype(new_drone)) + return + + new_drone.foreign_droid = TRUE + + return new_drone + +/obj/machinery/power/smes/buildable/offmap_spawn/New() + ..(1) + charge = 1e7 + RCon = TRUE + input_level = input_level_max + output_level = output_level_max + input_attempt = TRUE + +/obj/machinery/power/apc/talon + req_access = list() + req_one_access = list(access_talon) + +/obj/machinery/power/apc/talon/hyper + cell_type = /obj/item/weapon/cell/hyper + +/obj/machinery/alarm/talon + req_access = list() + req_one_access = list(access_talon) + +/obj/machinery/door/firedoor/glass/talon + req_access = list() + req_one_access = list(access_talon) + +/obj/machinery/door/firedoor/glass/talon/hidden + name = "\improper Emergency Shutter System" + desc = "Emergency air-tight shutter, capable of sealing off breached areas. This model fits flush with the walls, and has a panel in the floor for maintenance." + icon = 'icons/obj/doors/DoorHazardHidden.dmi' + +/obj/machinery/camera/network/talon + network = list(NETWORK_TALON_SHIP) + +/obj/machinery/photocopier/faxmachine/talon + department = "ITV Talon" + desc = "The ship's fax machine! It's a safe assumption that most of the departments listed aren't on your ship, since the ship only has one." + +/obj/item/clothing/head/helmet/space/void/captain/talon + name = "talon captain's voidsuit helmet" + camera_networks = list(NETWORK_TALON_HELMETS) +/obj/item/clothing/suit/space/void/captain/talon + name = "talon captain's voidsuit" + +/obj/item/clothing/head/helmet/space/void/security/talon + name = "talon guard's voidsuit helmet" + camera_networks = list(NETWORK_TALON_HELMETS) +/obj/item/clothing/suit/space/void/security/talon + name = "talon guard's voidsuit" + +/obj/item/clothing/head/helmet/space/void/medical/talon + name = "talon doctor's voidsuit helmet" + camera_networks = list(NETWORK_TALON_HELMETS) +/obj/item/clothing/suit/space/void/medical/talon + name = "talon doctor's voidsuit" + +/obj/item/clothing/head/helmet/space/void/atmos/talon + name = "talon engineer's voidsuit helmet" + camera_networks = list(NETWORK_TALON_HELMETS) +/obj/item/clothing/suit/space/void/atmos/talon + name = "talon engineer's voidsuit" + +/obj/item/clothing/head/helmet/space/void/pilot/talon + name = "talon pilot's voidsuit helmet" + camera_networks = list(NETWORK_TALON_HELMETS) +/obj/item/clothing/suit/space/void/pilot/talon + name = "talon pilot's voidsuit" + +/obj/structure/closet/secure_closet/talon_captain + name = "talon captain's locker" + icon_state = "capsecure1" + icon_closed = "capsecure" + icon_locked = "capsecure1" + icon_opened = "capsecureopen" + icon_broken = "capsecurebroken" + icon_off = "capsecureoff" + req_access = list(access_talon) + + starts_with = list( + /obj/item/weapon/storage/backpack/dufflebag/captain, + /obj/item/clothing/suit/storage/vest, + /obj/item/weapon/melee/telebaton, + /obj/item/device/flash, + /obj/item/device/radio/headset/talon, + /obj/item/clothing/head/helmet/space/void/captain/talon, + /obj/item/clothing/suit/space/void/captain/talon, + /obj/item/weapon/tank/oxygen, + /obj/item/device/suit_cooling_unit + ) + +/obj/structure/closet/secure_closet/talon_guard + name = "talon guard's locker" + req_access = list(access_hos) + icon_state = "hossecure1" + icon_closed = "hossecure" + icon_locked = "hossecure1" + icon_opened = "hossecureopen" + icon_broken = "hossecurebroken" + icon_off = "hossecureoff" + req_access = list(access_talon) + + starts_with = list( + /obj/item/clothing/suit/armor/pcarrier/light, + /obj/item/clothing/under/utility, + /obj/item/clothing/shoes/boots/jackboots, + /obj/item/clothing/shoes/boots/jackboots/toeless, + /obj/item/weapon/handcuffs = 2, + /obj/item/weapon/gun/energy/stunrevolver, + /obj/item/clothing/accessory/armor/tag/sec, + /obj/item/device/flash, + /obj/item/device/flashlight/maglight, + /obj/item/clothing/glasses/sunglasses, + /obj/item/weapon/storage/belt/security, + /obj/item/device/radio/headset/talon, + /obj/item/clothing/accessory/solgov/department/security/marine, + /obj/item/clothing/head/helmet/space/void/security/talon, + /obj/item/clothing/suit/space/void/security/talon, + /obj/item/weapon/tank/oxygen, + /obj/item/device/suit_cooling_unit + ) + +/obj/structure/closet/secure_closet/talon_doctor + name = "talon doctor's locker" + icon_state = "cmosecure1" + icon_closed = "cmosecure" + icon_locked = "cmosecure1" + icon_opened = "cmosecureopen" + icon_broken = "cmosecurebroken" + icon_off = "cmosecureoff" + req_access = list(access_talon) + + starts_with = list( + /obj/item/clothing/under/rank/medical, + /obj/item/clothing/under/rank/nurse, + /obj/item/clothing/under/rank/orderly, + /obj/item/clothing/suit/storage/toggle/labcoat, + /obj/item/clothing/suit/storage/toggle/fr_jacket, + /obj/item/clothing/shoes/white, + /obj/item/device/radio/headset/talon, + /obj/item/clothing/head/helmet/space/void/medical/talon, + /obj/item/clothing/suit/space/void/medical/talon, + /obj/item/weapon/tank/oxygen, + /obj/item/device/suit_cooling_unit + ) + +/obj/structure/closet/secure_closet/talon_engineer + name = "talon engineer's locker" + icon_state = "securece1" + icon_closed = "securece" + icon_locked = "securece1" + icon_opened = "secureceopen" + icon_broken = "securecebroken" + icon_off = "secureceoff" + req_access = list(access_talon) + + starts_with = list( + /obj/item/clothing/accessory/storage/brown_vest, + /obj/item/device/flashlight, + /obj/item/weapon/extinguisher, + /obj/item/clamp, + /obj/item/device/radio/headset/talon, + /obj/item/clothing/suit/storage/hazardvest, + /obj/item/clothing/mask/gas, + /obj/item/taperoll/atmos, + /obj/item/weapon/tank/emergency/oxygen/engi, + /obj/item/clothing/head/helmet/space/void/atmos/talon, + /obj/item/clothing/suit/space/void/atmos/talon, + /obj/item/weapon/tank/oxygen, + /obj/item/device/suit_cooling_unit + ) + +/obj/structure/closet/secure_closet/talon_pilot + name = "talon pilot's locker" + req_access = list(access_talon) + + starts_with = list( + /obj/item/weapon/material/knife/tacknife/survival, + /obj/item/clothing/head/pilot, + /obj/item/clothing/under/rank/pilot1, + /obj/item/clothing/suit/storage/toggle/bomber/pilot, + /obj/item/clothing/gloves/fingerless, + /obj/item/weapon/reagent_containers/food/snacks/liquidfood, + /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle, + /obj/item/device/radio, + /obj/item/clothing/under/utility/blue, + /obj/item/clothing/accessory/solgov/specialty/pilot, + /obj/item/clothing/shoes/boots/jackboots, + /obj/item/clothing/shoes/boots/jackboots/toeless, + /obj/item/device/radio/headset/talon, + /obj/item/device/flashlight/color/orange, + /obj/item/clothing/head/helmet/space/void/pilot/talon, + /obj/item/clothing/suit/space/void/pilot/talon, + /obj/item/weapon/tank/oxygen, + /obj/item/device/suit_cooling_unit + ) + +/////////////////////////// +//// Computers +// Talon helmet cameras +/datum/computer_file/program/camera_monitor/talon_helmet + filename = "talhcammon" + filedesc = "Helmet Camera Monitoring (Talon)" + extended_desc = "This program allows remote access to Talon helmet camera systems." + size = 4 //Smaller because limited scope + nanomodule_path = /datum/nano_module/camera_monitor/talon_helmet + required_access = access_talon + +// Talon ship cameras +/datum/computer_file/program/camera_monitor/talon_ship + filename = "talscammon" + filedesc = "Ship Camera Monitoring (Talon)" + extended_desc = "This program allows remote access to the Talon's camera system." + size = 10 //Smaller because limited scope + nanomodule_path = /datum/nano_module/camera_monitor/talon_ship + required_access = access_talon + +/datum/nano_module/camera_monitor/talon_ship + name = "Talon Ship Camera Monitor" +/datum/nano_module/camera_monitor/talon_ship/modify_networks_list(var/list/networks) + networks.Cut() + networks.Add(list(list("tag" = NETWORK_TALON_SHIP, "has_access" = 1))) + networks.Add(list(list("tag" = NETWORK_THUNDER, "has_access" = 1))) //THUNDERRRRR + return networks + +/datum/nano_module/camera_monitor/talon_helmet + name = "Talon Helmet Camera Monitor" +/datum/nano_module/camera_monitor/talon_helmet/modify_networks_list(var/list/networks) + networks.Cut() + networks.Add(list(list("tag" = NETWORK_TALON_HELMETS, "has_access" = 1))) + return networks + +/datum/computer_file/program/power_monitor/talon + filename = "tpowermonitor" + filedesc = "Power Monitoring (Talon)" + required_access = access_talon +/datum/computer_file/program/alarm_monitor/talon + filename = "talarmmonitoreng" + filedesc = "Alarm Monitoring (Talon)" + required_access = access_talon +/datum/computer_file/program/rcon_console/talon + filename = "trconconsole" + filedesc = "RCON Remote Control (Talon)" + required_access = access_talon +/datum/computer_file/program/atmos_control/talon + filename = "tatmoscontrol" + filedesc = "Atmosphere Control (Talon)" + required_access = access_talon +/datum/computer_file/program/suit_sensors/talon + filename = "tsensormonitor" + filedesc = "Suit Sensors Monitoring (Talon)" + required_access = access_talon + +// Modular computer/console presets +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/pilot + name = "pilot's laptop" + +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/pilot/install_default_programs() + ..() + +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/engineer + name = "engineer's laptop" + +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/engineer/install_default_programs() + ..() + hard_drive.store_file(new/datum/computer_file/program/power_monitor/talon()) + hard_drive.store_file(new/datum/computer_file/program/alarm_monitor/talon()) + hard_drive.store_file(new/datum/computer_file/program/rcon_console/talon()) + hard_drive.store_file(new/datum/computer_file/program/atmos_control/talon()) + +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/security + name = "guard's laptop" + +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/security/install_default_programs() + ..() + hard_drive.store_file(new/datum/computer_file/program/camera_monitor/talon_ship()) + +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/medical + name = "doctor's laptop" + +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/medical/install_default_programs() + ..() + hard_drive.store_file(new/datum/computer_file/program/suit_sensors/talon()) + hard_drive.store_file(new/datum/computer_file/program/camera_monitor/talon_helmet()) + set_autorun("tsensormonitor") + +//Generic modular consoles scattered around +/obj/item/modular_computer/console/preset/talon + name = "talon modular computer" + +/obj/item/modular_computer/console/preset/talon/install_default_hardware() + ..() + processor_unit = new/obj/item/weapon/computer_hardware/processor_unit(src) + tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src) + hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/super(src) + network_card = new/obj/item/weapon/computer_hardware/network_card/wired(src) + nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(src) + +/obj/item/modular_computer/console/preset/talon/install_default_programs() + ..() + hard_drive.store_file(new/datum/computer_file/program/power_monitor/talon()) + hard_drive.store_file(new/datum/computer_file/program/alarm_monitor/talon()) + hard_drive.store_file(new/datum/computer_file/program/rcon_console/talon()) + hard_drive.store_file(new/datum/computer_file/program/atmos_control/talon()) + hard_drive.store_file(new/datum/computer_file/program/camera_monitor/talon_ship()) + hard_drive.store_file(new/datum/computer_file/program/suit_sensors/talon()) + hard_drive.store_file(new/datum/computer_file/program/camera_monitor/talon_helmet()) diff --git a/maps/tether/submaps/offmap/talon.dmi b/maps/tether/submaps/offmap/talon.dmi new file mode 100644 index 00000000000..3fc94975496 Binary files /dev/null and b/maps/tether/submaps/offmap/talon.dmi differ diff --git a/maps/tether/submaps/offmap/talon1.dmm b/maps/tether/submaps/offmap/talon1.dmm new file mode 100644 index 00000000000..6fb83bfcab1 --- /dev/null +++ b/maps/tether/submaps/offmap/talon1.dmm @@ -0,0 +1,27356 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/space, +/area/space) +"ab" = ( +/turf/simulated/wall/rshull, +/area/talon/deckone/bridge) +"ac" = ( +/turf/simulated/wall, +/area/talon/deckone/bridge) +"ad" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/blast/regular/open{ + dir = 4; + id = "talon_windows" + }, +/turf/simulated/floor/plating, +/area/talon/deckone/bridge) +"ae" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloororange_edges"; + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"af" = ( +/obj/machinery/computer/ship/helm{ + req_one_access = list(301) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"ag" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge) +"ah" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge) +"ai" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge) +"aj" = ( +/obj/machinery/computer/ship/sensors, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"ak" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloororange_edges"; + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"al" = ( +/obj/machinery/computer/ship/navigation{ + icon_state = "computer"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloororange_edges"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"am" = ( +/obj/structure/bed/chair/bay/comfy/brown{ + icon_state = "bay_comfychair_preview"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"an" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge) +"ao" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge) +"ap" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge) +"aq" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloororange_edges"; + dir = 4 + }, +/obj/machinery/computer/ship/engines{ + dir = 8; + icon_state = "computer"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"ar" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloororange_edges"; + dir = 8 + }, +/obj/structure/table/steel, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"as" = ( +/obj/structure/table/steel, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"at" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloororange_edges"; + dir = 4 + }, +/obj/structure/table/steel, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/button/remote/blast_door{ + dir = 8; + id = "talon_windows"; + name = "window blast shields" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"au" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloororange_edges"; + dir = 8 + }, +/obj/item/modular_computer/console/preset/talon{ + icon_state = "console"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"av" = ( +/obj/structure/bed/chair/bay/comfy/blue{ + dir = 8; + icon_state = "bay_comfychair_preview"; + name = "doctor's seat" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"aw" = ( +/obj/structure/bed/chair/bay/comfy/red{ + icon_state = "bay_comfychair_preview"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"ax" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloororange_edges"; + dir = 4 + }, +/obj/item/modular_computer/console/preset/talon{ + icon_state = "console"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"ay" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloororange_edges"; + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"az" = ( +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"aB" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloororange_edges"; + dir = 4 + }, +/obj/machinery/camera/network/talon{ + icon_state = "camera"; + dir = 9 + }, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"aC" = ( +/turf/simulated/wall/rshull, +/area/talon/maintenance/deckone_port) +"aD" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloororange_edges"; + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + dir = 4; + icon_state = "extinguisher_closed"; + pixel_x = -30 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"aE" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc/talon{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"aF" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 8; + pixel_y = -26 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge) +"aG" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge) +"aH" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge) +"aI" = ( +/obj/machinery/alarm/talon{ + dir = 1; + pixel_y = -25 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"aJ" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloororange_edges"; + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"aK" = ( +/turf/simulated/wall/rshull, +/area/talon/maintenance/deckone_starboard) +"aL" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"aM" = ( +/turf/simulated/wall, +/area/talon/maintenance/deckone_port) +"aN" = ( +/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/glass/talon, +/obj/machinery/door/airlock/command{ + name = "Talon Secure Airlock"; + req_one_access = list(301) + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge) +"aO" = ( +/turf/simulated/wall, +/area/talon/maintenance/deckone_starboard) +"aP" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"aR" = ( +/turf/simulated/wall, +/area/talon/deckone/secure_storage) +"aS" = ( +/obj/structure/table/rack/shelf/steel, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/secure_storage) +"aT" = ( +/obj/structure/table/rack/steel, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/secure_storage) +"aU" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc/talon{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/secure_storage) +"aV" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/secure_storage) +"aW" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/steel_ridged, +/area/talon/deckone/bridge_hallway) +"aX" = ( +/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_decals_central4{ + icon_state = "steel_decals_central4"; + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge_hallway) +"aY" = ( +/turf/simulated/wall, +/area/talon/deckone/armory) +"aZ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light_switch{ + dir = 4; + icon_state = "light1"; + pixel_x = -24 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 5; + pixel_y = 24 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/armory) +"ba" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc/talon{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/armory) +"bb" = ( +/obj/structure/table/rack/steel, +/obj/item/clothing/suit/armor/combat, +/obj/item/clothing/head/helmet/combat, +/obj/item/clothing/under/syndicate/combat, +/obj/machinery/camera/network/talon, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/armory) +"bc" = ( +/obj/structure/table/rack/steel, +/obj/item/clothing/suit/space/syndicate/black, +/obj/item/clothing/head/helmet/space/syndicate/black, +/obj/item/clothing/shoes/magboots, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/armory) +"bd" = ( +/obj/structure/barricade, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"be" = ( +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/secure_storage) +"bf" = ( +/obj/structure/cable/green{ + icon_state = "1-2"; + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/secure_storage) +"bg" = ( +/obj/structure/cable/green{ + icon_state = "1-2"; + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/armory) +"bh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/secure_storage) +"bi" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon/deckone/secure_storage) +"bj" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/bridge_hallway) +"bk" = ( +/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/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge_hallway) +"bl" = ( +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/bridge_hallway) +"bm" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon/deckone/armory) +"bn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/armory) +"bo" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/secure_storage) +"bp" = ( +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/armory) +"bq" = ( +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/secure_storage) +"br" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/regular/open{ + id = "talon_windows" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"bs" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"bt" = ( +/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 = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals3, +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/secure_storage) +"bu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-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/window/brigdoor/eastleft{ + req_access = list(301) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/deckone/secure_storage) +"bv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-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_decals_central4{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge_hallway) +"bw" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge_hallway) +"bx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-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_decals_central4{ + icon_state = "steel_decals_central4"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge_hallway) +"by" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-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/window/brigdoor/eastleft{ + dir = 8; + req_access = list(301) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/deckone/armory) +"bz" = ( +/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 = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 5 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/armory) +"bA" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"bB" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/regular/open{ + id = "talon_windows" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"bC" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/blast/regular/open{ + id = "talon_windows" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"bD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/secure_storage) +"bE" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon/deckone/secure_storage) +"bF" = ( +/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, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge_hallway) +"bG" = ( +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/bridge_hallway) +"bH" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon/deckone/armory) +"bI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/armory) +"bJ" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/blast/regular/open{ + id = "talon_windows" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"bK" = ( +/obj/machinery/alarm/talon{ + dir = 1; + pixel_y = -25 + }, +/obj/structure/table/rack/steel, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/secure_storage) +"bL" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/secure_storage) +"bM" = ( +/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_decals_central4, +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/junction, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge_hallway) +"bN" = ( +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + icon_state = "pipe-t"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/bridge_hallway) +"bO" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/armory) +"bP" = ( +/obj/machinery/alarm/talon{ + dir = 1; + pixel_y = -25 + }, +/obj/structure/table/rack/steel, +/obj/item/weapon/grenade/spawnergrenade/manhacks/mercenary{ + pixel_x = -5; + pixel_y = 4 + }, +/obj/item/device/spaceflare, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/armory) +"bQ" = ( +/turf/simulated/wall, +/area/talon/deckone/bridge_hallway) +"bR" = ( +/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/glass/talon, +/obj/machinery/door/airlock/command{ + name = "Talon Secure Airlock"; + req_one_access = list(301) + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge_hallway) +"bS" = ( +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"bT" = ( +/obj/structure/toilet{ + dir = 4 + }, +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/bridge_hallway) +"bU" = ( +/obj/structure/sink{ + pixel_y = 22 + }, +/obj/structure/mirror{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/bridge_hallway) +"bV" = ( +/obj/machinery/door/airlock, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/deckone/bridge_hallway) +"bW" = ( +/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_decals7{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4{ + icon_state = "steel_decals_central4"; + dir = 1 + }, +/obj/structure/sign/securearea{ + pixel_x = -32; + pixel_y = 32 + }, +/obj/structure/sign/securearea{ + pixel_x = 32; + pixel_y = 32 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/bridge_hallway) +"bX" = ( +/obj/structure/sink{ + pixel_y = 22 + }, +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/machinery/light/small, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/bridge_hallway) +"bY" = ( +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/bridge_hallway) +"bZ" = ( +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"ca" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc/talon{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"cb" = ( +/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_decals7{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/machinery/light/small{ + dir = 8; + pixel_x = 0 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/bridge_hallway) +"cc" = ( +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_fore_wing) +"cd" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc/talon{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"ce" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/catwalk, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"cf" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"cg" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon/deckone/bridge_hallway) +"ch" = ( +/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{ + icon_state = "2-8" + }, +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/bridge_hallway) +"ci" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"cj" = ( +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/structure/catwalk, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"ck" = ( +/obj/structure/barricade, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"cl" = ( +/turf/simulated/wall, +/area/talon/deckone/port_solar) +"cm" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/engi{ + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon/deckone/port_solar) +"cn" = ( +/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_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/bridge_hallway) +"co" = ( +/turf/simulated/wall, +/area/talon/deckone/starboard_solar) +"cp" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/engi{ + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon/deckone/starboard_solar) +"cr" = ( +/obj/structure/cable/yellow{ + icon_state = "16-0" + }, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/power/sensor{ + name = "Talon Port Solar Panels"; + name_tag = "TLN-PRT-SLR" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/port_solar) +"cs" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/port_solar) +"ct" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/smes/buildable/offmap_spawn{ + RCon_tag = "Talon Port SMES" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/port_solar) +"cu" = ( +/obj/structure/cable/green{ + icon_state = "16-0" + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/sensor{ + name = "Talon Port SMES Connection"; + name_tag = "TLN-PRT-SMES" + }, +/obj/machinery/camera/network/talon, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/port_solar) +"cv" = ( +/obj/machinery/vending/coffee, +/turf/simulated/floor/tiled/steel_ridged, +/area/talon/deckone/central_hallway) +"cw" = ( +/obj/machinery/vending/sovietsoda, +/turf/simulated/floor/tiled/steel_ridged, +/area/talon/deckone/central_hallway) +"cx" = ( +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/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/steel, +/area/talon/deckone/central_hallway) +"cy" = ( +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"cz" = ( +/obj/structure/stairs/east, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"cA" = ( +/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, +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/deckone/bridge_hallway) +"cB" = ( +/obj/structure/stairs/west, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"cC" = ( +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"cD" = ( +/obj/machinery/vending/snack, +/turf/simulated/floor/tiled/steel_ridged, +/area/talon/deckone/central_hallway) +"cE" = ( +/obj/machinery/vending/fitness, +/turf/simulated/floor/tiled/steel_ridged, +/area/talon/deckone/central_hallway) +"cF" = ( +/obj/structure/cable/green{ + icon_state = "16-0" + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/sensor{ + name = "Talon Starboard SMES Connection"; + name_tag = "TLN-SBD-SMES" + }, +/obj/machinery/camera/network/talon, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/starboard_solar) +"cG" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/smes/buildable/offmap_spawn{ + RCon_tag = "Talon Starboard SMES" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/starboard_solar) +"cH" = ( +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 8 + }, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/starboard_solar) +"cI" = ( +/obj/structure/cable/yellow{ + icon_state = "16-0" + }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/power/sensor{ + name = "Talon Starboard Solar Panels"; + name_tag = "TLN-SBD-SLR" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/starboard_solar) +"cJ" = ( +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"cK" = ( +/obj/machinery/power/solar_control{ + icon_state = "solar"; + dir = 4 + }, +/obj/structure/cable/yellow, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/port_solar) +"cL" = ( +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/port_solar) +"cM" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/port_solar) +"cN" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/port_solar) +"cO" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/engi{ + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/deckone/port_solar) +"cP" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"cQ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"cR" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"cS" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"cT" = ( +/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/cable/green{ + icon_state = "1-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4{ + icon_state = "steel_decals_central4"; + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"cU" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"cV" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4{ + icon_state = "steel_decals_central4"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"cW" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/engi{ + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/deckone/starboard_solar) +"cX" = ( +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/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/techfloor, +/area/talon/deckone/starboard_solar) +"cY" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/starboard_solar) +"cZ" = ( +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/starboard_solar) +"da" = ( +/obj/machinery/power/solar_control{ + icon_state = "solar"; + dir = 8 + }, +/obj/structure/cable/yellow, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/starboard_solar) +"db" = ( +/obj/machinery/alarm/talon{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"dc" = ( +/obj/structure/table/standard, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/port_solar) +"dd" = ( +/obj/machinery/alarm/talon{ + dir = 1; + pixel_y = -25 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/port_solar) +"de" = ( +/obj/machinery/light/small, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/port_solar) +"df" = ( +/obj/structure/cable/green, +/obj/machinery/power/apc/talon{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/port_solar) +"dg" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"dh" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"di" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"dj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/emblem/talon_big/center, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"dk" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"dl" = ( +/obj/structure/cable/green, +/obj/machinery/power/apc/talon{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + dir = 4; + icon_state = "light1"; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/starboard_solar) +"dm" = ( +/obj/machinery/light/small, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/starboard_solar) +"dn" = ( +/obj/machinery/alarm/talon{ + dir = 1; + pixel_y = -25 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/starboard_solar) +"do" = ( +/obj/structure/table/standard, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/starboard_solar) +"dp" = ( +/obj/machinery/alarm/talon{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"dq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"dr" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"ds" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"dt" = ( +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_fore_wing) +"du" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"dv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"dw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/borderfloor/corner2, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"dx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"dy" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"dz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/emblem/talon_big{ + icon_state = "talon_big"; + dir = 10 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"dA" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/effect/floor_decal/emblem/talon_big, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"dB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"dC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"dD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"dE" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"dF" = ( +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"dG" = ( +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"dH" = ( +/turf/simulated/wall, +/area/talon/deckone/brig) +"dI" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/glass_security{ + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/deckone/brig) +"dJ" = ( +/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/glass/talon/hidden{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"dK" = ( +/obj/machinery/door/firedoor/glass/talon/hidden{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"dL" = ( +/turf/simulated/wall, +/area/talon/deckone/central_hallway) +"dM" = ( +/obj/machinery/door/firedoor/glass/talon/hidden{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"dN" = ( +/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/glass/talon/hidden{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"dO" = ( +/turf/simulated/wall, +/area/talon/deckone/medical) +"dP" = ( +/obj/effect/floor_decal/spline/plain, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/glass_medical{ + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/deckone/medical) +"dQ" = ( +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"dR" = ( +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_aft_wing) +"dS" = ( +/obj/structure/table/standard, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/brig) +"dT" = ( +/obj/structure/bed/chair/bay/chair{ + icon_state = "bay_chair_preview"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/brig) +"dU" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/brig) +"dV" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon/deckone/brig) +"dW" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10; + icon_state = "borderfloorcorner2"; + pixel_x = 0 + }, +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 4; + pixel_y = 26 + }, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"dX" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 5; + pixel_y = 24 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"dY" = ( +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"dZ" = ( +/obj/machinery/vending/security{ + req_access = list(301); + req_log_access = 301 + }, +/turf/simulated/floor/tiled/steel_ridged, +/area/talon/deckone/brig) +"ea" = ( +/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/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10; + icon_state = "borderfloorcorner2"; + pixel_x = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"eb" = ( +/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 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"ec" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"ed" = ( +/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/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"ee" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 1 + }, +/obj/machinery/light_switch{ + dir = 4; + icon_state = "light1"; + pixel_x = -24 + }, +/obj/structure/sink{ + pixel_y = 22 + }, +/obj/structure/medical_stand/anesthetic, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"ef" = ( +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"eg" = ( +/obj/machinery/vending/medical{ + req_access = list(301); + req_log_access = 301 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"eh" = ( +/obj/structure/table/standard, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/machinery/chemical_dispenser/full, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"ei" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/gun/energy/gun/burst, +/obj/item/weapon/cell/device/weapon{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/weapon/cell/device/weapon, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/armory) +"ej" = ( +/obj/structure/closet/crate/medical/blood, +/obj/item/weapon/reagent_containers/blood/prelabeled/OMinus, +/obj/item/weapon/reagent_containers/blood/prelabeled/OMinus, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"ek" = ( +/obj/structure/closet/crate/medical{ + name = "first-aid kits" + }, +/obj/item/weapon/storage/firstaid/toxin, +/obj/item/weapon/storage/firstaid/toxin, +/obj/item/weapon/storage/firstaid/o2, +/obj/item/weapon/storage/firstaid/o2, +/obj/item/weapon/storage/firstaid/fire, +/obj/item/weapon/storage/firstaid/fire, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"el" = ( +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 8; + pixel_x = 0 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"em" = ( +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/brig) +"en" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/brig) +"eo" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/door/window/brigdoor/eastleft{ + dir = 8; + req_access = list(301) + }, +/obj/machinery/door/window/brigdoor/eastleft{ + req_access = list(301) + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/brig) +"ep" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"eq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"er" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"es" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central4{ + icon_state = "steel_decals_central4"; + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"et" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/glass_security{ + req_one_access = list(301) + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/deckone/brig) +"eu" = ( +/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{ + icon_state = "1-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"ev" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"ew" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"ex" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"ey" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + 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/effect/floor_decal/steeldecal/steel_decals_central4{ + icon_state = "steel_decals_central4"; + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 2 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"ez" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-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/spline/plain{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/glass_medical{ + req_one_access = list(301) + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/deckone/medical) +"eA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"eB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"eC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"eD" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/medical{ + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"eE" = ( +/obj/structure/bed, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/brig) +"eF" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/brig) +"eG" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon/deckone/brig) +"eH" = ( +/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/borderfloor/corner2{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"eI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"eJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"eK" = ( +/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/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"eL" = ( +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"eM" = ( +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"eN" = ( +/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/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/structure/disposalpipe/junction, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"eO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 8 + }, +/obj/structure/sign/warning/nosmoking_1{ + pixel_x = -26 + }, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + icon_state = "pipe-t"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"eP" = ( +/obj/machinery/optable, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"eQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/alarm/talon{ + alarm_id = "anomaly_testing"; + breach_detection = 0; + dir = 8; + frequency = 1439; + pixel_x = 22; + pixel_y = 0; + report_danger_level = 0 + }, +/obj/structure/table/standard, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/item/clothing/mask/surgical, +/obj/item/clothing/suit/surgicalapron, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"eR" = ( +/obj/machinery/door/airlock/maintenance/medical{ + req_one_access = list(301) + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon/deckone/medical) +"eS" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + id = "talon_brigblast1" + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/brig) +"eT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"eV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"eW" = ( +/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/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/structure/extinguisher_cabinet{ + dir = 4; + icon_state = "extinguisher_closed"; + pixel_x = -30 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"eX" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"eY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/emblem/talon_big{ + icon_state = "talon_big"; + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"eZ" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"fa" = ( +/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/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/structure/sign/department/medbay{ + pixel_x = 29 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"fb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/closet/medical_wall{ + pixel_x = -32 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/structure/closet/crate/medical{ + name = "medicine cooler" + }, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"fc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/table/standard, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/item/weapon/storage/firstaid/surgery, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"fd" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/item/weapon/deck/cards, +/obj/structure/table/standard, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"fe" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/alarm/talon{ + alarm_id = "anomaly_testing"; + breach_detection = 0; + dir = 8; + frequency = 1439; + pixel_x = 22; + pixel_y = 0; + report_danger_level = 0 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/table/standard, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"ff" = ( +/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" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"fg" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/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 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"fh" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"fi" = ( +/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" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"fj" = ( +/obj/structure/cable/green, +/obj/machinery/power/apc/talon{ + cell_type = /obj/item/weapon/cell/apc; + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/obj/structure/table/standard, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 9 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -25 + }, +/obj/machinery/recharger, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"fk" = ( +/obj/structure/table/standard, +/obj/effect/floor_decal/borderfloorwhite, +/obj/item/weapon/storage/firstaid/regular, +/obj/effect/floor_decal/borderfloorwhite/corner2, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"fl" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/table/standard, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/item/weapon/storage/firstaid/adv, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"fm" = ( +/obj/structure/table/standard, +/obj/item/device/sleevemate, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"fn" = ( +/obj/structure/table/standard, +/obj/item/device/defib_kit/loaded, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"fo" = ( +/obj/structure/catwalk, +/obj/structure/sign/warning/moving_parts{ + pixel_x = 30 + }, +/obj/machinery/camera/network/talon{ + icon_state = "camera"; + dir = 8 + }, +/turf/space, +/area/talon/maintenance/deckone_port) +"fq" = ( +/obj/item/modular_computer/console/preset/talon{ + icon_state = "console"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"fr" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/structure/bed/chair/bay/chair{ + icon_state = "bay_chair_preview"; + dir = 8 + }, +/obj/machinery/camera/network/talon{ + icon_state = "camera"; + dir = 9 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"fs" = ( +/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" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"ft" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/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 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"fu" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"fv" = ( +/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/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"fw" = ( +/obj/effect/floor_decal/spline/plain{ + icon_state = "spline_plain"; + dir = 1 + }, +/obj/machinery/door/airlock/multi_tile/glass{ + req_access = list(301) + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/deckone/medical) +"fx" = ( +/obj/effect/floor_decal/spline/plain{ + icon_state = "spline_plain"; + dir = 1 + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/deckone/medical) +"fy" = ( +/obj/structure/catwalk, +/obj/structure/sign/warning/moving_parts{ + pixel_x = -30 + }, +/obj/machinery/camera/network/talon{ + icon_state = "camera"; + dir = 4 + }, +/turf/space, +/area/talon/maintenance/deckone_starboard) +"fz" = ( +/obj/machinery/airlock_sensor{ + dir = 8; + pixel_x = 28; + pixel_y = 28; + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/sensor/ext_sensor, +/obj/structure/catwalk, +/turf/space, +/area/talon/maintenance/deckone_port) +"fA" = ( +/obj/effect/map_helper/airlock/door/ext_door, +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"fB" = ( +/obj/machinery/airlock_sensor{ + pixel_y = 28; + req_one_access = list(301) + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + dir = 1; + id_tag = "talon_port"; + pixel_y = -30; + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + icon_state = "map_vent_aux"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"fC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 4 + }, +/obj/effect/map_helper/airlock/door/int_door, +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"fD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 4 + }, +/obj/machinery/airlock_sensor{ + dir = 4; + pixel_x = -28; + pixel_y = 28; + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/sensor/int_sensor, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"fE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 10 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"fF" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"fG" = ( +/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/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"fH" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals6, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"fI" = ( +/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/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"fJ" = ( +/turf/simulated/wall, +/area/talon/deckone/workroom) +"fK" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10; + icon_state = "borderfloorcorner2"; + pixel_x = 0 + }, +/obj/structure/table/standard, +/obj/machinery/cell_charger, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/workroom) +"fL" = ( +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/workroom) +"fM" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4; + icon_state = "borderfloorcorner2"; + pixel_y = 0 + }, +/obj/structure/fitness/weightlifter, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/workroom) +"fN" = ( +/obj/structure/extinguisher_cabinet{ + dir = 1; + icon_state = "extinguisher_closed"; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/workroom) +"fO" = ( +/obj/structure/table/standard, +/obj/fiftyspawner/steel, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/workroom) +"fP" = ( +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/workroom) +"fQ" = ( +/obj/machinery/autolathe, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/workroom) +"fR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 6 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"fS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 4 + }, +/obj/machinery/airlock_sensor{ + dir = 8; + pixel_x = 28; + pixel_y = 28; + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/sensor/int_sensor, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"fT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 4 + }, +/obj/effect/map_helper/airlock/door/int_door, +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"fU" = ( +/obj/machinery/airlock_sensor{ + pixel_y = 28; + req_one_access = list(301) + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + dir = 1; + id_tag = "talon_starboard"; + pixel_y = -30; + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + icon_state = "map_vent_aux"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"fV" = ( +/obj/effect/map_helper/airlock/door/ext_door, +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"fW" = ( +/obj/machinery/airlock_sensor{ + dir = 4; + pixel_x = -28; + pixel_y = 28; + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/sensor/ext_sensor, +/obj/structure/catwalk, +/turf/space, +/area/talon/maintenance/deckone_starboard) +"fX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"fY" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/brig) +"fZ" = ( +/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/borderfloor/corner2{ + dir = 10; + icon_state = "borderfloorcorner2"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"ga" = ( +/obj/structure/cable/green, +/obj/machinery/power/apc/talon{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"gb" = ( +/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_decals_central4{ + icon_state = "steel_decals_central4"; + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"gc" = ( +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/deckone/workroom) +"gd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4{ + icon_state = "steel_decals_central4"; + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"ge" = ( +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon/deckone/workroom) +"gf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"gg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/brig) +"gh" = ( +/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_decals_central4{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"gi" = ( +/obj/structure/table/standard, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/item/weapon/storage/box/donut, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"gj" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"gk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 2 + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/deckone/workroom) +"gl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals_central4{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/workroom) +"gm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/workroom) +"gn" = ( +/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{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/workroom) +"go" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/bed/chair/office/light, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/workroom) +"gp" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/workroom) +"gq" = ( +/obj/structure/table/standard, +/obj/fiftyspawner/glass, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/workroom) +"gr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"gs" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"gt" = ( +/obj/effect/floor_decal/borderfloor, +/obj/machinery/suit_cycler/security{ + req_access = list(301) + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"gu" = ( +/obj/structure/table/standard, +/obj/effect/floor_decal/borderfloor, +/obj/structure/bedsheetbin, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"gv" = ( +/obj/structure/table/standard, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/item/weapon/storage/box/handcuffs, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"gw" = ( +/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/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"gx" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/structure/table/standard, +/obj/machinery/recharger, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/workroom) +"gy" = ( +/obj/effect/floor_decal/borderfloor, +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/workroom) +"gz" = ( +/obj/machinery/alarm/talon{ + dir = 1; + pixel_y = -25 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/table/standard, +/obj/effect/floor_decal/borderfloor, +/obj/machinery/photocopier/faxmachine/talon, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/workroom) +"gA" = ( +/obj/effect/floor_decal/borderfloor, +/obj/item/modular_computer/console/preset/talon{ + icon_state = "console"; + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/workroom) +"gB" = ( +/obj/structure/cable/green, +/obj/machinery/power/apc/talon{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/table/standard, +/obj/effect/floor_decal/borderfloor, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/workroom) +"gC" = ( +/obj/effect/floor_decal/borderfloor, +/obj/machinery/light, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + icon_state = "pipe-t"; + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/workroom) +"gD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"gE" = ( +/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/talon/hidden{ + dir = 2 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"gF" = ( +/obj/machinery/door/firedoor/glass/talon/hidden{ + dir = 2 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"gG" = ( +/obj/machinery/door/firedoor/glass/talon/hidden{ + dir = 2 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"gH" = ( +/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/talon/hidden{ + dir = 2 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"gI" = ( +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_aft_wing) +"gJ" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/regular/open{ + id = "talon_windows" + }, +/turf/simulated/floor/plating, +/area/talon/deckone/port_eng) +"gK" = ( +/obj/structure/catwalk, +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"gL" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"gM" = ( +/obj/machinery/vending/wallmed1{ + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"gN" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/machinery/camera/network/talon, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"gO" = ( +/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, +/area/talon/deckone/central_hallway) +"gP" = ( +/obj/machinery/computer/ship/navigation/telescreen{ + pixel_y = 30 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"gQ" = ( +/obj/machinery/vending/cola, +/turf/simulated/floor/tiled/steel_ridged, +/area/talon/deckone/central_hallway) +"gR" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4; + icon_state = "borderfloorcorner2"; + pixel_y = 0 + }, +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 26 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"gS" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"gT" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/regular/open{ + id = "talon_windows" + }, +/turf/simulated/floor/plating, +/area/talon/deckone/starboard_eng) +"gU" = ( +/turf/simulated/wall, +/area/talon/deckone/port_eng_store) +"gV" = ( +/obj/structure/window/reinforced, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/structure/sign/deck1{ + pixel_x = -30 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"gW" = ( +/obj/structure/window/reinforced, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"gX" = ( +/obj/structure/window/reinforced, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/structure/sign/deck1{ + pixel_x = 31 + }, +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"gY" = ( +/turf/simulated/wall, +/area/talon/deckone/starboard_eng_store) +"gZ" = ( +/obj/machinery/vending/tool{ + req_log_access = 301 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/port_eng_store) +"ha" = ( +/obj/machinery/vending/engineering{ + req_access = newlist(); + req_log_access = 301; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/port_eng_store) +"hb" = ( +/obj/machinery/vending/engivend{ + req_access = newlist(); + req_log_access = 301 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/port_eng_store) +"hc" = ( +/obj/structure/cable/green{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/talon{ + alarms_hidden = 1; + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/port_eng_store) +"hd" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/toolbox/electrical, +/obj/item/stack/marker_beacon/thirty, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/port_eng_store) +"he" = ( +/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 = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hf" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hg" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hh" = ( +/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 = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hi" = ( +/obj/structure/closet/crate/solar, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/starboard_eng_store) +"hj" = ( +/obj/structure/cable/green{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/talon{ + alarms_hidden = 1; + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/starboard_eng_store) +"hk" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloororange_edges"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/starboard_eng_store) +"hl" = ( +/obj/machinery/drone_fabricator/talon, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/starboard_eng_store) +"hm" = ( +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/starboard_eng_store) +"hn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"ho" = ( +/obj/machinery/alarm/talon{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/port_eng_store) +"hp" = ( +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/port_eng_store) +"hq" = ( +/obj/machinery/light/small, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/port_eng_store) +"hr" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/port_eng_store) +"hs" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/machinery/light_switch{ + dir = 1; + on = 0; + pixel_x = -10; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/port_eng_store) +"ht" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hu" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hv" = ( +/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/steel, +/area/talon/deckone/central_hallway) +"hw" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hx" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hy" = ( +/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/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hz" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hA" = ( +/obj/structure/closet/crate/engineering, +/obj/fiftyspawner/plastic, +/obj/fiftyspawner/floor, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/starboard_eng_store) +"hB" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/starboard_eng_store) +"hC" = ( +/obj/machinery/light/small, +/obj/machinery/light_switch{ + dir = 1; + on = 0; + pixel_x = -10; + pixel_y = -24 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloororange_edges"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/deckone/starboard_eng_store) +"hD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 8; + pixel_x = 0 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"hE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"hF" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/effect/floor_decal/spline/plain{ + icon_state = "spline_plain"; + dir = 1 + }, +/obj/machinery/door/airlock/maintenance/engi{ + req_one_access = list(301) + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/deckone/port_eng_store) +"hG" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10; + icon_state = "borderfloorcorner2"; + pixel_x = 0 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hH" = ( +/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/effect/floor_decal/borderfloor/corner, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hJ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/structure/cable/green{ + icon_state = "1-4" + }, +/obj/effect/floor_decal/borderfloor, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + 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{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hL" = ( +/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" + }, +/obj/effect/floor_decal/borderfloor, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hN" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hO" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/spline/plain{ + icon_state = "spline_plain"; + dir = 1 + }, +/obj/machinery/door/airlock/maintenance/engi{ + req_one_access = list(301) + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/deckone/starboard_eng_store) +"hP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/machinery/alarm/talon{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"hQ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/machinery/power/thermoregulator, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-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/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/machinery/atmospherics/unary/freezer{ + anchored = 0 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-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 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4{ + icon_state = "steel_decals_central4"; + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-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/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4; + icon_state = "borderfloorcorner2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/machinery/atmospherics/unary/heater{ + anchored = 0 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-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/talon/hidden, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + dir = 1; + icon_state = "extinguisher_closed"; + pixel_y = 32 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + icon_state = "steel_decals5"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"hY" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/talon/deckone/central_hallway) +"hZ" = ( +/obj/structure/cable/green, +/obj/machinery/power/apc/talon{ + cell_type = /obj/item/weapon/cell/apc; + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/obj/machinery/alarm/talon{ + alarm_id = "anomaly_testing"; + breach_detection = 0; + dir = 8; + frequency = 1439; + pixel_x = 22; + pixel_y = 0; + report_danger_level = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"ia" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"ib" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/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{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"ic" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass/talon/hidden{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + icon_state = "steel_decals5"; + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"id" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"ie" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4{ + icon_state = "steel_decals_central4"; + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"if" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4; + icon_state = "borderfloorcorner2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"ig" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"ih" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"ii" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 5 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"ij" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 4 + }, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon/deckone/central_hallway) +"ik" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"il" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 10 + }, +/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_decals_central4, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"im" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"in" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"io" = ( +/obj/machinery/door/firedoor/glass/talon/hidden, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + icon_state = "steel_decals5"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"ip" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"iq" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"ir" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"is" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"it" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"iu" = ( +/obj/machinery/door/firedoor/glass/talon/hidden{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + icon_state = "steel_decals5"; + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"iv" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"iw" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"ix" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 6 + }, +/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_decals_central4, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"iy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"iz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 9 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"iA" = ( +/turf/simulated/wall, +/area/talon/deckone/port_eng) +"iB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/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/spline/plain, +/obj/machinery/door/airlock/maintenance/engi{ + req_one_access = list(301) + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/deckone/port_eng) +"iC" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"iD" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"iE" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"iF" = ( +/turf/simulated/wall, +/area/talon/deckone/starboard_eng) +"iG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/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/spline/plain, +/obj/machinery/door/airlock/maintenance/engi{ + req_one_access = list(301) + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/deckone/starboard_eng) +"iH" = ( +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/atmospherics/portables_connector/aux{ + icon_state = "map_connector-aux"; + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"iI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 9 + }, +/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/techmaint, +/area/talon/deckone/port_eng) +"iJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 0; + pixel_y = 26 + }, +/obj/machinery/atmospherics/pipe/cap/hidden{ + icon_state = "cap"; + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"iK" = ( +/obj/machinery/oxygen_pump{ + pixel_y = 30 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"iL" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/blue, +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"iM" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon/deckone/port_eng) +"iN" = ( +/obj/structure/ladder/up, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/deckone/central_hallway) +"iO" = ( +/obj/effect/floor_decal/steeldecal/steel_decals8, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"iP" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon/deckone/starboard_eng) +"iQ" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/portable_atmospherics/canister/empty, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"iR" = ( +/obj/machinery/oxygen_pump{ + pixel_y = 30 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"iS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 0; + pixel_y = 26 + }, +/obj/machinery/atmospherics/pipe/cap/hidden{ + icon_state = "cap"; + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"iT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 5 + }, +/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" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"iU" = ( +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/atmospherics/portables_connector/aux{ + icon_state = "map_connector-aux"; + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"iV" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/engi{ + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon/deckone/port_eng) +"iW" = ( +/obj/machinery/atmospherics/pipe/zpipe/up/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon/deckone/port_eng) +"iX" = ( +/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/techmaint, +/area/talon/deckone/port_eng) +"iY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"iZ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"ja" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"jb" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"jc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"jd" = ( +/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{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"je" = ( +/obj/machinery/atmospherics/pipe/zpipe/up/scrubbers{ + icon_state = "up-scrubbers"; + dir = 8 + }, +/obj/structure/disposalpipe/up{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon/deckone/starboard_eng) +"jf" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/engi{ + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon/deckone/starboard_eng) +"jg" = ( +/obj/machinery/airlock_sensor{ + dir = 4; + pixel_x = -28; + req_one_access = list(301) + }, +/obj/machinery/atmospherics/unary/vent_pump/aux{ + icon_state = "map_vent_aux"; + dir = 4 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"jh" = ( +/obj/structure/catwalk, +/obj/structure/loot_pile/maint/junk, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"ji" = ( +/turf/simulated/wall/rshull, +/area/talon/deckone/port_eng) +"jj" = ( +/obj/structure/cable/green{ + icon_state = "0-4" + }, +/obj/machinery/power/apc/talon{ + cell_type = /obj/item/weapon/cell/apc; + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"jk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"jl" = ( +/obj/effect/floor_decal/industrial/outline/blue, +/obj/machinery/atmospherics/binary/pump{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"jm" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/binary/pump, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"jn" = ( +/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/techmaint, +/area/talon/deckone/starboard_eng) +"jo" = ( +/obj/structure/cable/green{ + d2 = 8; + dir = 2; + icon_state = "0-8" + }, +/obj/machinery/power/apc/talon{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"jp" = ( +/obj/structure/catwalk, +/obj/structure/loot_pile/maint/trash, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"jq" = ( +/obj/structure/catwalk, +/obj/structure/loot_pile/maint/technical, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"jr" = ( +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"js" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"ju" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"jv" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"jx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"jy" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/suit_cycler/engineering{ + name = "Atmospherics suit cycler"; + req_access = list(301) + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"jz" = ( +/obj/structure/catwalk, +/obj/structure/loot_pile/maint/boxfort, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"jA" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"jB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"jC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"jD" = ( +/obj/machinery/alarm/talon{ + alarm_id = "anomaly_testing"; + breach_detection = 0; + dir = 8; + frequency = 1439; + pixel_x = 22; + pixel_y = 0; + report_danger_level = 0 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"jE" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"jF" = ( +/obj/machinery/alarm/talon{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"jG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"jH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"jI" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"jJ" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 1 + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller{ + dir = 8; + frequency = 1380; + id_tag = "talon_boatbay"; + pixel_x = 28 + }, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"jL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 6 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"jM" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ + icon_state = "map-fuel"; + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"jN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 10 + }, +/obj/structure/extinguisher_cabinet{ + dir = 8; + icon_state = "extinguisher_closed"; + pixel_x = 30 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"jO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 6 + }, +/obj/structure/extinguisher_cabinet{ + dir = 4; + icon_state = "extinguisher_closed"; + pixel_x = -30 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"jP" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ + icon_state = "map-fuel"; + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"jQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 10 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"jS" = ( +/obj/machinery/atmospherics/binary/pump/fuel, +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/camera/network/talon{ + icon_state = "camera"; + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"jT" = ( +/obj/machinery/atmospherics/portables_connector/fuel{ + icon_state = "map_connector-fuel"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/portable_atmospherics/canister/phoron, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"jU" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/brig) +"jV" = ( +/obj/machinery/alarm/talon{ + dir = 4; + pixel_x = -35; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"jW" = ( +/obj/machinery/atmospherics/portables_connector/fuel{ + icon_state = "map_connector-fuel"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/portable_atmospherics/canister/phoron, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"jX" = ( +/obj/machinery/atmospherics/binary/pump/fuel, +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/camera/network/talon{ + icon_state = "camera"; + dir = 9 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"jY" = ( +/turf/simulated/wall/rshull, +/area/talon/deckone/starboard_eng) +"jZ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ + icon_state = "map-fuel"; + dir = 8 + }, +/turf/simulated/wall/rshull, +/area/talon/deckone/port_eng) +"ka" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ + icon_state = "map-fuel"; + dir = 1 + }, +/turf/simulated/wall/rshull, +/area/talon/deckone/port_eng) +"kb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/turf/simulated/wall/rshull, +/area/talon/deckone/port_eng) +"kc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 10 + }, +/turf/simulated/wall/rshull, +/area/talon/deckone/port_eng) +"kd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 6 + }, +/turf/simulated/wall/rshull, +/area/talon/deckone/starboard_eng) +"ke" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ + icon_state = "map-fuel"; + dir = 1 + }, +/turf/simulated/wall/rshull, +/area/talon/deckone/starboard_eng) +"kf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/turf/simulated/wall/rshull, +/area/talon/deckone/starboard_eng) +"kg" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ + icon_state = "map-fuel"; + dir = 4 + }, +/turf/simulated/wall/rshull, +/area/talon/deckone/starboard_eng) +"kh" = ( +/obj/machinery/atmospherics/unary/engine{ + dir = 1 + }, +/turf/space, +/area/talon/deckone/port_eng) +"ki" = ( +/obj/machinery/door/blast/regular{ + dir = 8; + id = "very_fake"; + name = "Shuttle Bay Doors" + }, +/turf/simulated/floor/plating, +/area/talon/deckone/central_hallway) +"kj" = ( +/obj/machinery/atmospherics/unary/engine{ + dir = 1 + }, +/turf/space, +/area/talon/deckone/starboard_eng) +"kk" = ( +/obj/structure/catwalk, +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"kl" = ( +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/space, +/area/talon/maintenance/deckone_port) +"km" = ( +/obj/machinery/light/small{ + dir = 8; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/space, +/area/talon/maintenance/deckone_starboard) +"kn" = ( +/obj/machinery/light/small{ + dir = 8; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/brig) +"ko" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/brig) +"kp" = ( +/obj/structure/bed/chair/office/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/workroom) +"kq" = ( +/obj/machinery/fitness/punching_bag, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/workroom) +"kr" = ( +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"ks" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/workroom) +"kt" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central4{ + icon_state = "steel_decals_central4"; + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/workroom) +"kv" = ( +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/machinery/power/apc/talon{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable/green{ + d2 = 8; + dir = 2; + icon_state = "0-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/bridge_hallway) +"kw" = ( +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals3, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"kx" = ( +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 5 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"ky" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central6{ + icon_state = "steel_decals_central6"; + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"kz" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central6, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"kA" = ( +/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_decals_central1{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"kB" = ( +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"kC" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central5, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"kD" = ( +/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_decals_central1{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"kE" = ( +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"kF" = ( +/obj/machinery/alarm/talon{ + dir = 1; + pixel_y = -25 + }, +/obj/effect/floor_decal/borderfloor, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"kG" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"kH" = ( +/obj/effect/floor_decal/borderfloor, +/obj/machinery/light, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"kI" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/bridge_hallway) +"kJ" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"kK" = ( +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/armory) +"kL" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/armory) +"kM" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/secure_storage) +"kN" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/armory) +"kO" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 1 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"kP" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8; + icon_state = "borderfloor"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"kQ" = ( +/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{ + icon_state = "1-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"kR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8; + icon_state = "borderfloor"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"kS" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/gun/energy/netgun, +/obj/item/weapon/cell/device/weapon{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/weapon/cell/device/weapon{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/weapon/cell/device/weapon, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/armory) +"kT" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/gun/energy/locked/frontier/holdout/unlocked, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/armory) +"kU" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/gun/energy/gun, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/armory) +"kV" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 5 + }, +/obj/machinery/chem_master, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"kX" = ( +/obj/machinery/door/airlock/maintenance/sec{ + req_one_access = list(301) + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon/deckone/brig) +"kY" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/engi{ + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon/deckone/starboard_eng_store) +"kZ" = ( +/obj/structure/catwalk, +/obj/machinery/suit_storage_unit, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"la" = ( +/obj/structure/catwalk, +/obj/machinery/suit_storage_unit, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"lb" = ( +/turf/simulated/wall/shull, +/area/shuttle/talonboat) +"lc" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/shuttle/talonboat) +"ld" = ( +/obj/machinery/computer/shuttle_control/explore/talonboat, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"le" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"lf" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/shuttle/talonboat) +"lg" = ( +/obj/structure/bed/chair/bay/chair{ + icon_state = "bay_chair_preview"; + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/talonboat) +"lh" = ( +/obj/machinery/embedded_controller/radio/simple_docking_controller{ + dir = 8; + frequency = 1380; + id_tag = "talonboat_docker"; + pixel_x = 28 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"li" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"lj" = ( +/obj/structure/fuel_port{ + dir = 4; + pixel_x = -30 + }, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/obj/machinery/atmospherics/portables_connector/aux{ + icon_state = "map_connector-aux"; + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"lk" = ( +/obj/machinery/airlock_sensor{ + dir = 1; + pixel_x = 28; + pixel_y = -28; + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/sensor/int_sensor, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"ll" = ( +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 5 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"ln" = ( +/obj/effect/map_helper/airlock/door/int_door, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/talonboat) +"lo" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 1 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"lp" = ( +/obj/effect/shuttle_landmark/shuttle_initializer/talonboat, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"lr" = ( +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + dir = 8; + id_tag = "talon_boat"; + pixel_x = 28 + }, +/obj/machinery/atmospherics/unary/vent_pump/aux{ + icon_state = "map_vent_aux"; + dir = 8 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"ls" = ( +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"lt" = ( +/obj/effect/map_helper/airlock/door/simple, +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/talonboat) +"lu" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"lw" = ( +/obj/machinery/power/apc/talon{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable/green, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"lz" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8; + icon_state = "borderfloor"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/machinery/computer/shuttle_control/explore/talonboat{ + icon_state = "computer"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"lA" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8; + icon_state = "borderfloor"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10; + icon_state = "borderfloorcorner2"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"lB" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/machinery/portable_atmospherics/canister/phoron, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"lC" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"lW" = ( +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"mh" = ( +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_aft_wing) +"mm" = ( +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_fore_wing) +"mv" = ( +/obj/structure/catwalk, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"mM" = ( +/obj/structure/catwalk, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/space, +/area/talon/maintenance/deckone_port_fore_wing) +"np" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/camera/network/talon{ + icon_state = "camera"; + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"ns" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/emblem/talon_big{ + icon_state = "talon_big"; + dir = 6 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"nv" = ( +/obj/machinery/door/blast/regular/open{ + dir = 4; + id = "talon_windows" + }, +/turf/space, +/area/talon/maintenance/deckone_port) +"nI" = ( +/obj/structure/catwalk, +/obj/structure/sign/warning/moving_parts{ + pixel_x = 30 + }, +/turf/space, +/area/talon/maintenance/deckone_port_fore_wing) +"nL" = ( +/obj/structure/catwalk, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"nR" = ( +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{ + icon_state = "intact"; + dir = 4 + }, +/turf/space, +/area/talon/maintenance/deckone_starboard_fore_wing) +"oh" = ( +/obj/effect/shuttle_landmark{ + landmark_tag = "talon_aft"; + name = "ITV Talon - Aft" + }, +/turf/space, +/area/space) +"oi" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/armory) +"oQ" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_aft_wing) +"oR" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 9 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_fore_wing) +"oW" = ( +/obj/effect/floor_decal/industrial/warning/dust/corner, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_fore_wing) +"pz" = ( +/obj/structure/cable/green{ + d2 = 8; + dir = 2; + icon_state = "0-8" + }, +/obj/machinery/power/pointdefense{ + id_tag = "talon_pd" + }, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_fore_wing) +"qA" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/aux, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/talonboat) +"qM" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 9 + }, +/obj/effect/floor_decal/industrial/warning/dust/corner, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_fore_wing) +"qN" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_fore_wing) +"qQ" = ( +/obj/effect/floor_decal/emblem/talon, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_aft_wing) +"qT" = ( +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_fore_wing) +"rg" = ( +/obj/effect/floor_decal/industrial/warning/dust/corner, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_aft_wing) +"ry" = ( +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_aft_wing) +"sk" = ( +/obj/structure/catwalk, +/obj/structure/sign/warning/airlock{ + pixel_x = 32 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"su" = ( +/obj/structure/catwalk, +/obj/structure/sign/warning/airlock{ + pixel_x = -31 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"sz" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_fore_wing) +"sB" = ( +/obj/structure/catwalk, +/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/plating, +/area/talon/maintenance/deckone_port) +"sD" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 1 + }, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 2 + }, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"sE" = ( +/obj/effect/map_helper/airlock/door/ext_door, +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/machinery/airlock_sensor/airlock_exterior/shuttle{ + pixel_x = 28; + pixel_y = -4 + }, +/obj/effect/map_helper/airlock/sensor/ext_sensor, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/talonboat) +"sK" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 6 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_fore_wing) +"sM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge) +"tL" = ( +/obj/effect/floor_decal/emblem/talon_big{ + icon_state = "talon_big"; + dir = 9 + }, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"uL" = ( +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_aft_wing) +"vc" = ( +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"vl" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8; + icon_state = "borderfloor"; + pixel_x = 0 + }, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + icon_state = "pipe-t"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"vn" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_fore_wing) +"vs" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"vv" = ( +/obj/structure/catwalk, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"wk" = ( +/obj/structure/sign/warning/docking_area, +/turf/simulated/wall, +/area/talon/deckone/central_hallway) +"xk" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/regular/open{ + id = "talon_windows" + }, +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"xo" = ( +/obj/machinery/alarm/talon{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/starboard_eng_store) +"xI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/emblem/talon, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge) +"xV" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/gun/energy/netgun, +/obj/item/weapon/cell/device/weapon{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/weapon/cell/device/weapon, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/armory) +"ym" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/blast/regular/open{ + dir = 4; + id = "talon_windows" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"yn" = ( +/obj/structure/catwalk, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/space, +/area/talon/maintenance/deckone_port_aft_wing) +"yu" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 1 + }, +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_fore_wing) +"yy" = ( +/obj/structure/catwalk, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/space, +/area/talon/maintenance/deckone_starboard_aft_wing) +"yN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/machinery/button/remote/blast_door{ + dir = 4; + id = "talon_brigblast1"; + name = "blast door control"; + pixel_x = -28 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"zC" = ( +/obj/structure/catwalk, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"zO" = ( +/obj/effect/floor_decal/industrial/warning/dust, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_fore_wing) +"zT" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_fore_wing) +"AE" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_fore_wing) +"AM" = ( +/obj/structure/sign/warning/hot_exhaust{ + pixel_y = 29 + }, +/turf/space, +/area/space) +"AP" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 10 + }, +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_fore_wing) +"Bo" = ( +/obj/effect/floor_decal/industrial/warning/dust, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_aft_wing) +"Bs" = ( +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_fore_wing) +"Bz" = ( +/obj/machinery/camera/network/talon{ + icon_state = "camera"; + dir = 9 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"BR" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 5 + }, +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_fore_wing) +"Cm" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/bridge) +"Ct" = ( +/obj/structure/sign/poster, +/turf/simulated/wall, +/area/talon/deckone/central_hallway) +"CN" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/sign/deck1{ + pixel_y = 27 + }, +/obj/structure/sign/directions/bridge{ + icon_state = "direction_bridge"; + dir = 1; + pixel_y = 41 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4; + icon_state = "borderfloorcorner2"; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"CT" = ( +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_fore_wing) +"Ds" = ( +/obj/effect/floor_decal/industrial/warning/dust, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_aft_wing) +"Dw" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 5 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_fore_wing) +"DF" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/sign/deck1{ + pixel_y = 27 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"DQ" = ( +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"DT" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 10 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_fore_wing) +"ET" = ( +/obj/effect/floor_decal/emblem/talon, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_aft_wing) +"Fc" = ( +/obj/structure/catwalk, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"FB" = ( +/obj/effect/floor_decal/industrial/warning/dust, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_fore_wing) +"FJ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"FZ" = ( +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals3, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"Gj" = ( +/obj/structure/cable/green{ + icon_state = "0-1"; + dir = 1 + }, +/obj/machinery/power/pointdefense{ + id_tag = "talon_pd" + }, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_aft_wing) +"Gy" = ( +/obj/structure/catwalk, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"GF" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/secure_storage) +"Hb" = ( +/obj/structure/catwalk, +/turf/space, +/area/talon/maintenance/deckone_starboard_fore_wing) +"Hp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/cap/hidden{ + icon_state = "cap"; + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"Im" = ( +/obj/machinery/atmospherics/portables_connector/fuel{ + icon_state = "map_connector-fuel"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/portable_atmospherics/canister/phoron, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"IF" = ( +/obj/effect/floor_decal/emblem/talon_big{ + icon_state = "talon_big"; + dir = 5 + }, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"Jd" = ( +/obj/effect/floor_decal/emblem/talon, +/turf/simulated/wall/rshull, +/area/talon/maintenance/deckone_port) +"Ji" = ( +/obj/effect/floor_decal/industrial/warning/dust/corner, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_aft_wing) +"Jk" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_aft_wing) +"JJ" = ( +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_aft_wing) +"JL" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_aft_wing) +"JW" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_fore_wing) +"JZ" = ( +/obj/structure/table/rack/steel, +/obj/machinery/camera/network/talon, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/secure_storage) +"KM" = ( +/obj/effect/shuttle_landmark{ + landmark_tag = "talon_starboard"; + name = "ITV Talon - Starboard" + }, +/turf/space, +/area/space) +"KN" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/regular/open{ + id = "talon_windows" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"La" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/regular/open{ + id = "talon_windows" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"Le" = ( +/obj/effect/shuttle_landmark{ + landmark_tag = "talon_port"; + name = "ITV Talon - Port" + }, +/turf/space, +/area/space) +"Lo" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/dust/corner{ + icon_state = "warningcorner_dust"; + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_aft_wing) +"Lt" = ( +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{ + icon_state = "intact"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{ + icon_state = "intact"; + dir = 8 + }, +/turf/space, +/area/talon/maintenance/deckone_port_fore_wing) +"Ly" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/window/brigdoor/eastleft{ + dir = 8; + req_access = list(301) + }, +/obj/machinery/door/window/brigdoor/eastleft{ + req_access = list(301) + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/brig) +"Ml" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_fore_wing) +"Mm" = ( +/obj/machinery/shipsensors{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 9 + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 6 + }, +/turf/simulated/floor/greengrid/airless, +/area/talon/maintenance/deckone_port) +"Mu" = ( +/obj/structure/catwalk, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"ME" = ( +/obj/effect/shuttle_landmark{ + landmark_tag = "talon_fore"; + name = "ITV Talon - Fore" + }, +/turf/space, +/area/space) +"MJ" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 6 + }, +/obj/effect/floor_decal/industrial/warning/dust/corner{ + icon_state = "warningcorner_dust"; + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_fore_wing) +"MW" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 6 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_fore_wing) +"Nu" = ( +/obj/structure/bed/chair/bay/comfy/yellow{ + icon_state = "bay_comfychair_preview"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/deckone/bridge) +"NR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/machinery/button/remote/blast_door{ + dir = 4; + id = "talon_brigblast2"; + name = "blast door control"; + pixel_x = -28 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/brig) +"NY" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_aft_wing) +"On" = ( +/obj/structure/cable/green{ + icon_state = "0-4" + }, +/obj/machinery/power/pointdefense{ + id_tag = "talon_pd" + }, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_fore_wing) +"Ow" = ( +/obj/machinery/power/pointdefense{ + id_tag = "talon_pd" + }, +/obj/structure/cable/green{ + icon_state = "0-1"; + dir = 1 + }, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_aft_wing) +"OF" = ( +/obj/structure/sign/periodic{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/workroom) +"OR" = ( +/obj/effect/floor_decal/industrial/warning/dust/corner{ + icon_state = "warningcorner_dust"; + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_fore_wing) +"Pi" = ( +/obj/structure/catwalk, +/turf/space, +/area/talon/maintenance/deckone_port_fore_wing) +"PG" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"PY" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -25 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/workroom) +"Rc" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_fore_wing) +"Rv" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_aft_wing) +"RD" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 5 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_fore_wing) +"Sa" = ( +/obj/effect/floor_decal/emblem/talon_big{ + icon_state = "talon_big"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"SJ" = ( +/obj/effect/floor_decal/industrial/warning/dust/corner{ + icon_state = "warningcorner_dust"; + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_aft_wing) +"TP" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_aft_wing) +"Ue" = ( +/obj/structure/catwalk, +/obj/structure/sign/warning/moving_parts{ + pixel_x = -30 + }, +/turf/space, +/area/talon/maintenance/deckone_starboard_fore_wing) +"Ui" = ( +/obj/structure/catwalk, +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/turf/space, +/area/talon/maintenance/deckone_starboard_fore_wing) +"UT" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + id = "talon_brigblast2" + }, +/turf/simulated/floor/tiled/dark, +/area/talon/deckone/brig) +"VS" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_fore_wing) +"Wh" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8; + icon_state = "borderfloor"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/structure/vehiclecage/spacebike, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"Ww" = ( +/obj/effect/floor_decal/emblem/talon_big{ + icon_state = "talon_big"; + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"WB" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8; + icon_state = "borderfloor"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10; + icon_state = "borderfloorcorner2"; + pixel_x = 0 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/central_hallway) +"WI" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/monotile, +/area/talon/deckone/central_hallway) +"WL" = ( +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"Xh" = ( +/obj/structure/catwalk, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"Xi" = ( +/obj/machinery/atmospherics/portables_connector/fuel{ + icon_state = "map_connector-fuel"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/portable_atmospherics/canister/phoron, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/port_eng) +"Xq" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 10 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_port_fore_wing) +"XC" = ( +/obj/structure/catwalk, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) +"XO" = ( +/obj/effect/floor_decal/emblem/talon, +/turf/simulated/wall/rshull, +/area/talon/maintenance/deckone_starboard) +"XQ" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_fore_wing) +"XT" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 9 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/deckone_starboard_fore_wing) +"Yg" = ( +/obj/structure/catwalk, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_port) +"Yt" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/deckone/workroom) +"YG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/cap/hidden{ + icon_state = "cap"; + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/deckone/starboard_eng) +"YS" = ( +/obj/structure/catwalk, +/turf/space, +/area/talon/maintenance/deckone_port_aft_wing) +"Za" = ( +/obj/structure/catwalk, +/turf/space, +/area/talon/maintenance/deckone_starboard_aft_wing) +"Zv" = ( +/obj/structure/closet/emcloset, +/obj/structure/sign/department/bridge{ + pixel_y = 31 + }, +/turf/simulated/floor/tiled/steel_ridged, +/area/talon/deckone/bridge_hallway) +"ZU" = ( +/obj/machinery/suit_cycler/medical{ + req_access = list(301) + }, +/turf/simulated/floor/tiled/white, +/area/talon/deckone/medical) +"ZV" = ( +/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, +/area/talon/deckone/central_hallway) + +(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 +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 +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 +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 +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 +"} +(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 +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 +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 +"} +(4,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(5,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(6,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(7,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(8,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(9,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(10,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(11,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(12,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(13,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(14,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(15,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(16,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(17,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(18,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(19,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +Le +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 +aa +aa +aa +aa +"} +(20,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(21,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +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 +aa +aa +aa +"} +(22,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +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 +aa +aa +aa +"} +(23,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +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 +aa +aa +aa +"} +(24,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +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 +aa +aa +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 +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 +gI +gI +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 +aa +aa +aa +"} +(26,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +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 +aa +aa +"} +(27,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +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 +aa +aa +"} +(28,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +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 +aa +aa +"} +(29,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +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 +aa +aa +"} +(30,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +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 +aa +aa +"} +(31,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +gI +gI +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 +aa +"} +(32,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +gI +gI +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 +aa +"} +(33,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +gI +gI +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 +aa +"} +(34,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +gI +gI +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 +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 +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 +gI +gI +gI +gI +gI +gI +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 +aa +"} +(36,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +gI +gI +gI +gI +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 +"} +(37,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +gI +gI +gI +gI +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 +"} +(38,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +gI +gI +gI +gI +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 +"} +(39,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +gI +gI +gI +gI +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 +"} +(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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +gI +gI +gI +gI +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 +"} +(41,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +gI +gI +gI +gI +gI +gI +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 +"} +(42,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +gI +gI +gI +gI +gI +gI +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 +"} +(43,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +gI +gI +gI +gI +gI +gI +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 +"} +(44,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +gI +gI +gI +gI +gI +gI +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 +"} +(45,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +gI +gI +gI +gI +gI +gI +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 +"} +(46,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +gI +gI +gI +gI +gI +gI +gI +gI +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 +"} +(47,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +gI +gI +gI +gI +gI +gI +gI +gI +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 +"} +(48,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 +cc +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +gI +gI +gI +gI +gI +gI +gI +gI +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 +"} +(49,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 +cc +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +gI +gI +gI +gI +gI +gI +gI +gI +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 +"} +(50,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 +cc +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gI +gI +gI +gI +gI +qQ +gI +gI +gI +gI +gI +gI +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 +"} +(51,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 +cc +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +rg +JL +uL +gI +gI +gI +gI +gI +gI +gI +gI +gI +gI +gI +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 +"} +(52,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 +cc +cc +cc +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +Ds +Ow +TP +gI +YS +kl +fz +fo +YS +gI +gI +gI +gI +gI +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 +"} +(53,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 +cc +cc +cc +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +mh +Rv +Lo +gI +YS +aC +fA +aC +YS +gI +gI +gI +gI +gI +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 +"} +(54,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 +oW +Rc +mm +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +YS +YS +YS +yn +YS +YS +aC +fB +aC +YS +YS +YS +YS +YS +YS +YS +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 +"} +(55,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 +zO +On +VS +aa +aa +aC +aC +aC +aC +aC +aC +aC +aC +aC +aC +aC +aC +La +br +aC +aC +fC +aC +aC +aC +br +br +aC +aC +aC +aC +aC +aC +aC +aC +aC +aC +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 +"} +(56,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 +sK +BR +sz +MJ +RD +aa +aC +aL +nL +mv +WL +mv +mv +mv +mv +mv +mv +mv +Gy +aL +aL +aL +fD +su +kZ +aC +aL +aL +aL +aL +aL +aL +aL +jz +aL +aL +aL +bC +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 +"} +(57,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 +qN +qN +Ml +JW +qN +aa +aC +aL +Mu +ck +aM +cJ +aL +aL +aL +aL +dQ +aL +aL +aL +aL +aL +fE +fX +fX +gr +fX +fX +fX +fX +hn +hE +fX +ii +aL +aL +aL +bC +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 +"} +(58,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 +qN +Xq +zT +oR +qN +aa +aC +aL +Mu +cl +cl +cl +cl +cl +bS +dH +dH +dH +dH +dH +dH +dH +dH +dH +dH +dH +dH +bS +gU +gU +gU +gU +dL +ij +iA +iA +iV +ji +ji +gJ +gJ +ji +ji +ji +AM +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 +"} +(59,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 +Lt +nI +mM +Pi +Lt +aa +aC +aL +Mu +cl +cr +cK +dc +cl +aL +dH +dS +kn +eE +dH +dS +dS +dH +eE +kn +dS +dH +aL +gU +gZ +ho +gU +hQ +ik +iA +iH +iW +jj +jr +jA +jL +jS +jZ +kh +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 +"} +(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 +aC +aC +aC +aC +aC +aC +La +br +Jd +aC +aC +aL +Mu +cm +cs +cL +dd +cl +aL +dH +dT +em +em +eS +em +em +UT +em +em +dT +dH +aL +gU +ha +hp +gU +hR +il +iB +iI +iX +jk +js +jB +jM +jT +ka +kh +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 +"} +(61,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 +nv +Mm +ym +aL +aL +aL +Yg +mv +mv +mv +WL +mv +sB +cl +ct +cM +de +cl +dF +dH +dU +en +eF +dH +ko +em +dH +fY +gg +jU +dH +gK +gU +hb +hq +gU +hS +im +iA +iJ +iY +jl +iZ +Hp +jM +jT +kb +ji +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 +"} +(62,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 +aC +aC +aC +aM +aR +aR +aR +aR +aR +aR +aM +aL +Mu +cl +cu +cN +df +cl +aL +dH +dV +eo +eG +dH +Ly +eG +dH +dV +eo +eG +dH +aL +gU +hc +hr +hF +hT +in +iA +iK +iZ +iZ +ju +jC +jM +jT +ka +kh +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 +"} +(63,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 +ab +ac +aS +be +aS +kM +aS +aR +aM +aL +Mu +cl +cl +cO +cl +cl +bS +dH +dW +ep +eH +yN +eT +eT +NR +fZ +gh +gs +kX +aL +gU +hd +hs +gU +hU +in +iA +iL +iL +iL +iL +jD +jN +Xi +kc +kh +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 +"} +(64,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 +ab +ac +aS +bq +aS +bq +aS +aR +aM +ca +ce +aM +cv +cP +dg +dp +du +dH +dX +eq +dY +dY +dY +dY +dY +dY +dY +gt +dH +bS +gU +gU +gU +gU +hV +io +iA +iM +iM +iA +iA +iA +iA +iA +ji +ji +AM +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 +"} +(65,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 +ab +ab +ab +ab +ab +ab +ab +ab +ac +JZ +bq +aT +bq +bK +aR +aM +jh +cf +aM +cw +cQ +dh +dq +dv +dI +es +er +eI +eI +fd +fq +dY +dY +dY +gu +dH +gL +gV +cB +ht +hG +hW +ip +lz +vl +WB +dL +wk +Wh +kP +kP +lA +ki +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 +"} +(66,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 +ab +ac +ac +ac +ac +ac +ac +ac +ac +aU +bf +bo +bq +GF +bQ +bQ +aM +cf +aM +cx +cQ +cy +cy +dw +dH +dZ +gd +eJ +eV +fe +fr +fF +ga +gi +gv +dH +gM +gW +cy +hu +hH +kQ +PG +FZ +vs +ja +ja +jE +ja +kw +cy +cy +ki +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 +"} +(67,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 +ab +ac +ae +al +ar +au +ay +aD +ac +aV +bh +bt +bD +bL +bQ +bT +aM +cf +aM +cy +cR +cy +dr +dx +dH +dH +et +dH +dH +dH +dH +dH +dH +dH +dH +dH +gN +cy +cC +cy +hI +wk +bs +ir +ir +ir +ir +ir +ir +ir +ir +iC +ki +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 +"} +(68,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 +ab +ac +af +am +as +av +az +aE +ac +aR +bi +bu +bE +aR +bQ +bU +aM +cf +aM +cz +cS +ew +di +dy +dJ +ea +eu +eK +eW +ff +fs +fG +fG +fG +fG +gE +gO +he +kA +hv +hJ +hY +bA +lb +lb +lf +lf +lb +lb +lb +lb +iD +ki +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 +"} +(69,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 +ad +ag +an +an +an +an +aF +ac +aW +bj +bv +bG +bN +bQ +bV +bQ +cg +bQ +bQ +DF +tL +Ww +dz +dK +eb +ev +lW +eX +fg +ft +ev +eL +eX +eb +gF +cy +hf +kB +hw +hM +dL +bA +lc +ld +lg +lg +lj +lb +jg +lb +iD +ki +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 +"} +(70,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ME +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 +ad +ah +ao +xI +ao +sM +aG +aN +aX +bk +bw +bF +bM +bR +bW +cb +ch +cn +cA +cT +eY +dj +dA +dL +dL +gj +ky +kF +dL +Ct +kG +kz +kH +dL +dL +gP +cy +kC +cy +hK +hZ +bA +lc +le +lg +lg +lk +ln +qA +sE +iD +ki +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +oh +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 +"} +(71,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 +ad +ai +ap +ap +ap +Cm +aH +ac +Zv +bl +bx +kI +kv +bQ +bV +bQ +cg +bQ +bQ +CN +IF +Sa +ns +dM +ec +ex +vc +eZ +fh +fu +ex +eM +eZ +ec +gG +cy +hg +kB +hx +hX +dL +bA +lc +np +lh +lp +lw +lb +lr +lb +iD +ki +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 +"} +(72,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 +ab +ac +aj +Nu +as +aw +ls +aI +ac +aY +bm +by +bH +aY +bQ +bX +aO +ci +aO +cB +cU +fH +WI +sD +dN +ed +ey +eN +fa +fi +fv +fI +gb +ey +gw +gH +ZV +hh +kD +hy +hL +hY +bA +lb +lb +lb +lt +lb +lb +lb +lb +iD +ki +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 +"} +(73,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 +ab +ac +ak +aq +at +ax +aB +aJ +ac +aZ +bn +bz +bI +bO +bQ +bY +aO +ci +aO +cy +cR +cy +dr +dB +dO +dO +ez +dO +dO +dO +dO +fJ +gc +gk +fJ +fJ +gQ +cy +cC +cy +hI +wk +iq +is +is +is +lu +is +is +is +is +iE +ki +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 +"} +(74,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 +ab +ac +ac +ac +ac +ac +ac +ac +ac +ba +bg +bp +kK +oi +bQ +bQ +aO +ci +aO +cC +cQ +cy +iO +dC +dO +ee +eA +eO +fb +fj +dO +fK +gl +ks +gx +fJ +gR +gW +cy +hu +ia +kR +li +ll +lo +lo +jJ +kO +kJ +kx +cy +cy +ki +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 +"} +(75,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 +ab +ab +ab +ab +ab +ab +ab +ab +ac +bb +kK +bc +kK +bP +aY +aO +aP +ci +aO +cD +cQ +dh +dq +dD +dP +ef +eB +ef +ef +ef +fw +kt +fL +gm +gy +fJ +gS +gX +cz +hz +hN +ib +it +Bz +kE +iN +dL +wk +lB +ds +ds +lC +ki +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 +"} +(76,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 +ab +ac +kS +kK +xV +kK +ei +aY +aO +cd +cj +aO +cE +cV +dk +FJ +dE +dO +eg +eB +eP +ef +ef +fx +kt +fL +gn +gz +fJ +bZ +gY +gY +gY +gY +ic +iu +iF +iP +iP +iF +iF +iF +iF +iF +jY +jY +AM +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 +"} +(77,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 +ab +ac +kT +kL +kT +kN +kU +aY +aO +aP +vv +co +co +cW +co +co +bZ +dO +eh +eB +ef +ef +fk +dO +fM +fL +go +gA +fJ +aP +gY +hi +hA +gY +id +iv +iF +iQ +iQ +iQ +iQ +jF +jO +Im +kd +kj +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 +"} +(78,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 +aK +aO +aY +aY +aY +aY +aY +aY +aO +aP +vv +co +cF +cX +dl +co +aP +dO +kV +eC +eQ +fc +fl +dO +fN +fP +gp +gB +fJ +aP +gY +hj +hB +hO +ie +iv +iF +iR +jb +jb +jv +jG +jP +jW +ke +kj +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 +"} +(79,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 +aK +jp +bd +aP +XC +Fc +Fc +Fc +DQ +Fc +Xh +co +cG +cY +dm +co +dG +dO +dO +eD +dO +dO +dO +dO +fO +gq +Yt +gC +fJ +kk +kY +hk +hC +gY +if +iw +iF +iS +jc +jm +jb +YG +jP +jW +kf +jY +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 +"} +(80,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 +aK +aK +aK +aK +xk +bB +XO +aK +aK +aP +aP +cp +cH +cZ +dn +co +aP +dO +ej +ef +ZU +jV +fm +dO +fQ +kp +fP +PY +fJ +aP +gY +hl +xo +gY +ig +ix +iG +iT +jd +jn +jx +jH +jP +jW +ke +kj +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 +"} +(81,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 +nR +Ue +Ui +Hb +nR +aa +aK +aP +aP +co +cI +da +do +co +aP +dO +ek +kr +ef +ef +fn +dO +OF +fP +fP +kq +fJ +aP +gY +hm +hm +gY +ih +iy +iF +iU +je +jo +jy +jI +jQ +jX +kg +kj +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 +"} +(82,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 +vn +MW +yu +Dw +vn +aa +aK +aP +aP +co +co +co +co +co +bZ +dO +dO +dO +eR +dO +dO +dO +fJ +ge +fJ +fJ +fJ +bZ +gY +gY +gY +gY +dL +ij +iF +iF +jf +jY +jY +gT +gT +jY +jY +jY +AM +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 +"} +(83,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 +vn +vn +qT +vn +vn +aa +aK +aP +aP +aP +aO +db +aP +aP +aP +aP +el +aP +aP +bd +jq +aP +fR +gf +gf +gD +gf +gf +gf +gf +hD +hP +gf +iz +aP +aP +aP +bJ +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 +"} +(84,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 +DT +qM +CT +AP +XT +aa +aK +jp +aP +Fc +DQ +Fc +Fc +Fc +Fc +Fc +Fc +Fc +zC +aP +aP +aP +fS +sk +la +aK +aP +aP +aP +aP +aP +aP +bd +aP +aP +aP +aP +bJ +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 +"} +(85,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 +FB +pz +XQ +aa +aa +aK +aK +aK +aK +aK +aK +aK +aK +aK +aK +aK +aK +KN +bB +aK +aK +fT +aK +aK +aK +bB +bB +aK +aK +aK +aK +aK +aK +aK +aK +aK +aK +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 +"} +(86,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 +Bs +AE +OR +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +Za +Za +Za +yy +Za +Za +aK +fU +aK +Za +Za +Za +Za +Za +Za +Za +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 +"} +(87,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 +dt +dt +dt +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +Ji +Jk +NY +dR +Za +aK +fV +aK +Za +dR +dR +dR +dR +dR +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 +"} +(88,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 +dt +dt +dt +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +Bo +Gj +ry +dR +Za +km +fW +fy +Za +dR +dR +dR +dR +dR +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 +"} +(89,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 +dt +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +JJ +oQ +SJ +dR +dR +dR +ET +dR +dR +dR +dR +dR +dR +dR +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 +"} +(90,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 +dt +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +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 +"} +(91,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 +dt +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +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 +"} +(92,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 +dt +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +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 +"} +(93,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +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 +"} +(94,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +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 +"} +(95,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +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 +"} +(96,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +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 +"} +(97,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +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 +"} +(98,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +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 +"} +(99,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +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 +"} +(100,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +dR +dR +dR +dR +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 +"} +(101,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +dR +dR +dR +dR +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 +"} +(102,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +dR +dR +dR +dR +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 +"} +(103,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +dR +dR +dR +dR +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 +"} +(104,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +dR +dR +dR +dR +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 +"} +(105,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +dR +dR +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 +aa +"} +(106,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +dR +dR +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 +aa +"} +(107,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +dR +dR +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 +aa +"} +(108,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +dR +dR +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 +aa +"} +(109,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +dR +dR +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 +aa +"} +(110,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +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 +aa +aa +"} +(111,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +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 +aa +aa +"} +(112,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +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 +aa +aa +"} +(113,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +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 +aa +aa +"} +(114,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +dR +dR +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 +aa +aa +"} +(115,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +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 +aa +aa +aa +"} +(116,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +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 +aa +aa +aa +"} +(117,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +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 +aa +aa +aa +"} +(118,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +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 +aa +aa +aa +"} +(119,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dR +dR +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 +aa +aa +aa +"} +(120,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(121,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +KM +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 +aa +aa +aa +aa +"} +(122,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(123,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(124,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(125,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(126,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(127,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(128,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(129,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(130,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(131,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(132,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(133,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(134,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(135,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(136,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(137,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(138,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(139,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(140,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} diff --git a/maps/tether/submaps/offmap/talon2.dmm b/maps/tether/submaps/offmap/talon2.dmm new file mode 100644 index 00000000000..26981608f7b --- /dev/null +++ b/maps/tether/submaps/offmap/talon2.dmm @@ -0,0 +1,25477 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/space, +/area/space) +"ab" = ( +/turf/simulated/wall/rshull, +/area/talon/decktwo/bridge_upper) +"ac" = ( +/turf/simulated/wall, +/area/talon/decktwo/bridge_upper) +"ad" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/blast/regular/open{ + id = "talon_windows" + }, +/turf/simulated/floor/plating, +/area/talon/decktwo/bridge_upper) +"ae" = ( +/turf/simulated/open, +/area/talon/decktwo/bridge_upper) +"af" = ( +/obj/structure/railing, +/turf/simulated/open, +/area/talon/decktwo/bridge_upper) +"ag" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/railing, +/turf/simulated/open, +/area/talon/decktwo/bridge_upper) +"ah" = ( +/obj/machinery/computer/ship/navigation, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/decktwo/bridge_upper) +"ai" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing, +/turf/simulated/open, +/area/talon/decktwo/bridge_upper) +"aj" = ( +/obj/structure/railing, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/open, +/area/talon/decktwo/bridge_upper) +"ak" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/open, +/area/talon/decktwo/bridge_upper) +"al" = ( +/obj/structure/table/steel, +/obj/item/weapon/paper/dockingcodes, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/decktwo/bridge_upper) +"am" = ( +/obj/structure/bed/chair/bay/comfy/blue{ + icon_state = "bay_comfychair_preview"; + dir = 1; + pixel_y = 5 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/decktwo/bridge_upper) +"an" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/open, +/area/talon/decktwo/bridge_upper) +"ao" = ( +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"ap" = ( +/turf/simulated/wall/rshull, +/area/talon/decktwo/cap_room) +"aq" = ( +/obj/machinery/alarm/talon{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/decktwo/bridge_upper) +"ar" = ( +/turf/simulated/floor/tiled/techfloor, +/area/talon/decktwo/bridge_upper) +"as" = ( +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/decktwo/bridge_upper) +"at" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/camera/network/talon{ + icon_state = "camera"; + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/decktwo/bridge_upper) +"au" = ( +/obj/structure/cable/green{ + d2 = 8; + dir = 2; + icon_state = "0-8" + }, +/obj/machinery/power/apc/talon{ + dir = 2; + name = "south bump"; + pixel_y = -28; + req_access = list(67) + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/decktwo/bridge_upper) +"av" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/open, +/area/talon/decktwo/bridge_upper) +"aw" = ( +/turf/simulated/wall, +/area/talon/decktwo/bar) +"ax" = ( +/turf/simulated/wall/rshull, +/area/talon/decktwo/bar) +"ay" = ( +/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/wall, +/area/talon/decktwo/bridge_upper) +"az" = ( +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/bluedouble, +/turf/simulated/floor/carpet/blucarpet, +/area/talon/decktwo/cap_room) +"aA" = ( +/obj/structure/table/woodentable, +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 26 + }, +/turf/simulated/floor/carpet/blucarpet, +/area/talon/decktwo/cap_room) +"aB" = ( +/obj/effect/floor_decal/spline/plain, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/command{ + name = "Talon Secure Airlock"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/decktwo/cap_room) +"aC" = ( +/turf/simulated/wall, +/area/talon/decktwo/cap_room) +"aD" = ( +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled/techfloor, +/area/talon/decktwo/central_hallway) +"aE" = ( +/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/vending/nifsoft_shop, +/turf/simulated/floor/tiled/techfloor, +/area/talon/decktwo/central_hallway) +"aF" = ( +/obj/structure/bed/chair/bay/chair, +/turf/simulated/floor/wood, +/area/talon/decktwo/bar) +"aG" = ( +/obj/machinery/vending/wallmed1{ + emagged = 1; + pixel_y = 32; + shut_up = 0 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/bar) +"aH" = ( +/obj/item/weapon/stool/baystool/padded, +/obj/effect/floor_decal/spline/plain{ + dir = 8 + }, +/obj/machinery/camera/network/talon{ + icon_state = "camera"; + dir = 6 + }, +/turf/simulated/floor/lino, +/area/talon/decktwo/bar) +"aI" = ( +/obj/structure/table/standard, +/turf/simulated/floor/lino, +/area/talon/decktwo/bar) +"aJ" = ( +/obj/machinery/vending/boozeomat{ + density = 0; + pixel_y = 32; + req_access = list(301); + req_log_access = 301 + }, +/turf/simulated/floor/lino, +/area/talon/decktwo/bar) +"aK" = ( +/turf/simulated/floor/carpet/blucarpet, +/area/talon/decktwo/cap_room) +"aL" = ( +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 + }, +/obj/structure/closet/secure_closet/talon_captain, +/turf/simulated/floor/wood, +/area/talon/decktwo/cap_room) +"aM" = ( +/turf/simulated/floor/wood, +/area/talon/decktwo/cap_room) +"aN" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"aO" = ( +/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 = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"aP" = ( +/obj/machinery/alarm/talon{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/structure/table/standard, +/turf/simulated/floor/wood, +/area/talon/decktwo/bar) +"aQ" = ( +/turf/simulated/floor/wood, +/area/talon/decktwo/bar) +"aR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/item/weapon/stool/baystool/padded, +/obj/effect/floor_decal/spline/plain{ + dir = 8 + }, +/turf/simulated/floor/lino, +/area/talon/decktwo/bar) +"aS" = ( +/obj/structure/table/standard, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/item/weapon/storage/dicecup, +/turf/simulated/floor/lino, +/area/talon/decktwo/bar) +"aT" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/lino, +/area/talon/decktwo/bar) +"aU" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10; + icon_state = "borderfloorcorner2"; + pixel_x = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"aV" = ( +/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 = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"aW" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/talon/decktwo/bar) +"aX" = ( +/obj/structure/bed/chair/bay/chair{ + icon_state = "bay_chair_preview"; + dir = 1 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/bar) +"aY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/weapon/stool/baystool/padded, +/obj/effect/floor_decal/spline/plain{ + dir = 8 + }, +/turf/simulated/floor/lino, +/area/talon/decktwo/bar) +"aZ" = ( +/turf/simulated/floor/lino, +/area/talon/decktwo/bar) +"ba" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/regular/open{ + id = "talon_windows" + }, +/turf/simulated/floor/plating, +/area/talon/decktwo/cap_room) +"bb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/cap_room) +"bc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/cap_room) +"bd" = ( +/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{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/cap_room) +"be" = ( +/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{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/spline/plain{ + dir = 8 + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/command{ + id_tag = "talon_capdoor"; + name = "Talon Secure Airlock"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/decktwo/cap_room) +"bf" = ( +/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{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"bg" = ( +/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/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/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 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"bh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/item/weapon/stool/baystool/padded, +/obj/effect/floor_decal/spline/plain{ + dir = 8 + }, +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/turf/simulated/floor/lino, +/area/talon/decktwo/bar) +"bi" = ( +/obj/structure/table/standard, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/turf/simulated/floor/lino, +/area/talon/decktwo/bar) +"bj" = ( +/obj/machinery/chemical_dispenser/bar_alc/full{ + icon_state = "booze_dispenser"; + dir = 8 + }, +/obj/structure/table/marble, +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/turf/simulated/floor/lino, +/area/talon/decktwo/bar) +"bk" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/regular/open{ + id = "talon_windows" + }, +/turf/simulated/floor/plating, +/area/talon/decktwo/bar) +"bl" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/regular/open{ + id = "talon_windows" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_port) +"bm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/talon/decktwo/cap_room) +"bn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood, +/area/talon/decktwo/cap_room) +"bo" = ( +/obj/structure/cable/green{ + icon_state = "1-2"; + dir = 1 + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/cap_room) +"bp" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/structure/sign/department/commander{ + pixel_x = -28 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"bq" = ( +/obj/structure/table/standard, +/turf/simulated/floor/wood, +/area/talon/decktwo/bar) +"br" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/weapon/stool/baystool/padded, +/obj/effect/floor_decal/spline/plain{ + dir = 8 + }, +/turf/simulated/floor/lino, +/area/talon/decktwo/bar) +"bs" = ( +/obj/machinery/chemical_dispenser/bar_soft/full{ + dir = 8 + }, +/obj/structure/table/marble, +/turf/simulated/floor/lino, +/area/talon/decktwo/bar) +"bt" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/regular/open{ + id = "talon_windows" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_starboard) +"bu" = ( +/obj/machinery/light/small{ + dir = 8; + pixel_x = 0 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/cap_room) +"bv" = ( +/obj/structure/cable/green, +/obj/machinery/power/apc/talon{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/cap_room) +"bw" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"bx" = ( +/obj/structure/cable/green{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/talon{ + cell_type = /obj/item/weapon/cell/apc; + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/obj/structure/bed/chair/bay/chair{ + icon_state = "bay_chair_preview"; + dir = 1 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/bar) +"by" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/spline/plain{ + dir = 10 + }, +/turf/simulated/floor/lino, +/area/talon/decktwo/bar) +"bz" = ( +/obj/effect/floor_decal/spline/plain, +/turf/simulated/floor/lino, +/area/talon/decktwo/bar) +"bA" = ( +/obj/effect/floor_decal/spline/plain, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/lino, +/area/talon/decktwo/bar) +"bB" = ( +/obj/machinery/alarm/talon{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/cap_room) +"bC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/bed/chair/wood, +/turf/simulated/floor/carpet/blucarpet, +/area/talon/decktwo/cap_room) +"bD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/bed/chair/wood, +/turf/simulated/floor/carpet/blucarpet, +/area/talon/decktwo/cap_room) +"bE" = ( +/obj/structure/bed/chair/wood, +/turf/simulated/floor/carpet/blucarpet, +/area/talon/decktwo/cap_room) +"bF" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"bG" = ( +/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 = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/structure/sign/department/bar{ + pixel_x = 29 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"bH" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/bar) +"bI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood, +/area/talon/decktwo/bar) +"bJ" = ( +/obj/machinery/computer/ship/navigation/telescreen{ + pixel_x = 32 + }, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/turf/simulated/floor/wood, +/area/talon/decktwo/bar) +"bK" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/table/woodentable, +/obj/item/modular_computer/tablet/preset/custom_loadout/advanced, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/turf/simulated/floor/carpet/blucarpet, +/area/talon/decktwo/cap_room) +"bL" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/table/woodentable, +/turf/simulated/floor/carpet/blucarpet, +/area/talon/decktwo/cap_room) +"bM" = ( +/obj/item/modular_computer/console/preset/talon, +/turf/simulated/floor/carpet/blucarpet, +/area/talon/decktwo/cap_room) +"bN" = ( +/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; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"bO" = ( +/obj/effect/floor_decal/spline/plain{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/decktwo/bar) +"bP" = ( +/obj/structure/extinguisher_cabinet{ + dir = 8; + icon_state = "extinguisher_closed"; + pixel_x = 30 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/bar) +"bQ" = ( +/turf/simulated/wall/rshull, +/area/talon/maintenance/decktwo_starboard) +"bR" = ( +/obj/structure/bed/chair/office/light{ + dir = 1 + }, +/turf/simulated/floor/carpet/blucarpet, +/area/talon/decktwo/cap_room) +"bS" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + icon_state = "pipe-t"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"bT" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4, +/obj/structure/disposalpipe/junction, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"bU" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/spline/plain{ + dir = 4 + }, +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 2 + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/decktwo/bar) +"bV" = ( +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/bar) +"bW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/oxygen_pump{ + icon_state = "oxygen_tank"; + dir = 1; + pixel_y = -30 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/bar) +"bX" = ( +/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/spline/plain{ + dir = 9 + }, +/obj/machinery/vending/food{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel_ridged, +/area/talon/decktwo/bar) +"bY" = ( +/obj/machinery/vending/coffee{ + dir = 1 + }, +/obj/effect/floor_decal/spline/plain{ + icon_state = "spline_plain"; + dir = 1 + }, +/turf/simulated/floor/tiled/steel_ridged, +/area/talon/decktwo/bar) +"bZ" = ( +/obj/machinery/vending/dinnerware{ + icon_state = "dinnerware"; + dir = 1 + }, +/obj/effect/floor_decal/spline/plain{ + icon_state = "spline_plain"; + dir = 1 + }, +/turf/simulated/floor/tiled/steel_ridged, +/area/talon/decktwo/bar) +"ca" = ( +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_starboard) +"cb" = ( +/turf/simulated/wall/rshull, +/area/talon/maintenance/decktwo_port) +"cc" = ( +/turf/simulated/wall, +/area/talon/decktwo/central_hallway) +"cd" = ( +/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, +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/decktwo/central_hallway) +"ce" = ( +/obj/structure/cable/yellow{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/solar, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"cf" = ( +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/solar, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"cg" = ( +/obj/structure/cable/heavyduty{ + icon_state = "0-8" + }, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/wall/rshull, +/area/talon/maintenance/decktwo_port) +"ch" = ( +/obj/structure/lattice, +/obj/structure/cable/yellow{ + icon_state = "32-8" + }, +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/turf/simulated/open, +/area/talon/maintenance/decktwo_port) +"ci" = ( +/obj/structure/lattice, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/open, +/area/talon/maintenance/decktwo_port) +"cj" = ( +/obj/structure/lattice, +/obj/structure/cable/green{ + d1 = 32; + d2 = 8; + icon_state = "32-8" + }, +/turf/simulated/open, +/area/talon/maintenance/decktwo_port) +"ck" = ( +/obj/structure/lattice, +/turf/simulated/open, +/area/talon/decktwo/central_hallway) +"cl" = ( +/turf/simulated/open, +/area/talon/decktwo/central_hallway) +"cm" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/open, +/area/talon/decktwo/central_hallway) +"cn" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 1 + }, +/obj/structure/sign/deck2{ + pixel_y = 28 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"co" = ( +/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_decals_central4{ + icon_state = "steel_decals_central4"; + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"cp" = ( +/obj/structure/lattice, +/obj/structure/cable/green{ + d1 = 32; + d2 = 4; + icon_state = "32-4" + }, +/turf/simulated/open, +/area/talon/maintenance/decktwo_starboard) +"cq" = ( +/obj/structure/lattice, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/open, +/area/talon/maintenance/decktwo_starboard) +"cr" = ( +/obj/structure/lattice, +/obj/structure/cable/yellow{ + icon_state = "32-4" + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/turf/simulated/open, +/area/talon/maintenance/decktwo_starboard) +"cs" = ( +/obj/structure/cable/heavyduty{ + dir = 2; + icon_state = "0-4" + }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/wall/rshull, +/area/talon/maintenance/decktwo_starboard) +"ct" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/heavyduty{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"cu" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/heavyduty{ + icon_state = "4-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"cv" = ( +/obj/structure/cable/heavyduty{ + icon_state = "0-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"cw" = ( +/obj/structure/cable/heavyduty{ + dir = 2; + icon_state = "0-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"cx" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_port) +"cy" = ( +/obj/structure/railing, +/obj/structure/lattice, +/turf/simulated/open, +/area/talon/decktwo/central_hallway) +"cz" = ( +/obj/structure/railing, +/turf/simulated/open, +/area/talon/decktwo/central_hallway) +"cA" = ( +/obj/structure/railing, +/obj/structure/railing{ + icon_state = "railing0"; + dir = 4 + }, +/turf/simulated/open, +/area/talon/decktwo/central_hallway) +"cB" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"cC" = ( +/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_decals3{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals3, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"cD" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"cE" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/open, +/area/talon/decktwo/central_hallway) +"cF" = ( +/turf/simulated/wall, +/area/talon/maintenance/decktwo_starboard) +"cG" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_starboard) +"cH" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_port) +"cI" = ( +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"cJ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/machinery/camera/network/talon, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"cK" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass/talon/hidden, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + icon_state = "steel_decals5"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"cL" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4; + icon_state = "borderfloorcorner2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"cM" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"cN" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"cO" = ( +/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{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"cP" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"cQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"cR" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"cS" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"cT" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"cU" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass/talon/hidden{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + icon_state = "steel_decals5"; + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"cV" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/machinery/camera/network/talon, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"cW" = ( +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"cX" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 8; + pixel_x = 0 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_starboard) +"cY" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_port) +"cZ" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"da" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"db" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass/talon/hidden, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + icon_state = "steel_decals5"; + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"dc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/machinery/oxygen_pump{ + icon_state = "oxygen_tank"; + dir = 1; + pixel_y = -30 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"dd" = ( +/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/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"de" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"df" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green, +/obj/machinery/power/apc/talon{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"dg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/structure/sign/directions/evac{ + pixel_y = -38 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"dh" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"di" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/structure/sign/department/shield{ + pixel_y = -31 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"dj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"dk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/machinery/oxygen_pump{ + icon_state = "oxygen_tank"; + dir = 1; + pixel_y = -30 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"dl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass/talon/hidden{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + icon_state = "steel_decals5"; + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"dm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"dn" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"do" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_starboard) +"dp" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/structure/extinguisher_cabinet{ + dir = 4; + icon_state = "extinguisher_closed"; + pixel_x = -30 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"dq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/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 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"dr" = ( +/turf/simulated/wall, +/area/talon/decktwo/eng_room) +"ds" = ( +/turf/simulated/wall, +/area/talon/decktwo/tech) +"dt" = ( +/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/command{ + name = "Talon Secure Airlock"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/decktwo/tech) +"du" = ( +/turf/simulated/wall, +/area/talon/decktwo/pilot_room) +"dv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"dw" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + dir = 8; + icon_state = "extinguisher_closed"; + pixel_x = 30 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"dx" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"dy" = ( +/obj/structure/table/woodentable, +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/engineer, +/turf/simulated/floor/carpet, +/area/talon/decktwo/eng_room) +"dz" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/carpet, +/area/talon/decktwo/eng_room) +"dA" = ( +/obj/item/weapon/bedsheet, +/obj/structure/bed/padded, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/carpet, +/area/talon/decktwo/eng_room) +"dB" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/alarm/talon{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/structure/table/standard, +/obj/item/weapon/paper/talon_shields, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/tech) +"dC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/machinery/computer/ship/helm, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/tech) +"dD" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4{ + icon_state = "steel_decals_central4"; + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/tech) +"dE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4; + icon_state = "borderfloorcorner2"; + pixel_y = 0 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/tech) +"dF" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/railing, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/structure/table/standard, +/obj/item/device/bluespaceradio/talon_prelinked, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/tech) +"dG" = ( +/obj/item/weapon/bedsheet, +/obj/structure/bed/padded, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/carpet, +/area/talon/decktwo/pilot_room) +"dH" = ( +/obj/machinery/computer/ship/navigation/telescreen{ + pixel_y = 32 + }, +/turf/simulated/floor/carpet, +/area/talon/decktwo/pilot_room) +"dI" = ( +/obj/structure/table/woodentable, +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/pilot, +/turf/simulated/floor/carpet, +/area/talon/decktwo/pilot_room) +"dJ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/alarm/talon{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_port) +"dK" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"dL" = ( +/obj/structure/cable/green{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/talon{ + cell_type = /obj/item/weapon/cell/apc; + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/obj/structure/bed/chair/office/light{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/talon/decktwo/eng_room) +"dM" = ( +/turf/simulated/floor/carpet, +/area/talon/decktwo/eng_room) +"dN" = ( +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/effect/landmark/start{ + name = "Talon Engineer" + }, +/turf/simulated/floor/carpet, +/area/talon/decktwo/eng_room) +"dO" = ( +/obj/machinery/power/apc/talon{ + cell_type = /obj/item/weapon/cell/apc; + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/obj/structure/cable/green{ + icon_state = "0-4" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10; + icon_state = "borderfloorcorner2"; + pixel_x = 0 + }, +/obj/structure/table/standard, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/tech) +"dP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals6, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/tech) +"dQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/railing, +/obj/effect/floor_decal/steeldecal/steel_decals9, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/tech) +"dR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/tech) +"dS" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central4{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/tech) +"dT" = ( +/obj/machinery/alarm/talon{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/effect/landmark/start{ + name = "Talon Pilot" + }, +/turf/simulated/floor/carpet, +/area/talon/decktwo/pilot_room) +"dU" = ( +/turf/simulated/floor/carpet, +/area/talon/decktwo/pilot_room) +"dV" = ( +/obj/structure/cable/green{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/talon{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/bed/chair/office/light{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/talon/decktwo/pilot_room) +"dW" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"dX" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_starboard) +"dY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/structure/sign/directions/roomnum{ + icon_state = "roomnum"; + dir = 4; + pixel_x = 32; + pixel_y = -9 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"dZ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 8; + pixel_y = 0 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/eng_room) +"ea" = ( +/turf/simulated/floor/wood, +/area/talon/decktwo/eng_room) +"eb" = ( +/obj/machinery/door/airlock/command{ + id_tag = "talon_engdoor"; + name = "Talon Secure Airlock"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/decktwo/eng_room) +"ec" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/tech) +"ed" = ( +/obj/structure/cable/green, +/obj/machinery/power/shield_generator/charged, +/turf/simulated/floor/tiled/techfloor, +/area/talon/decktwo/tech) +"ee" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/tech) +"ef" = ( +/obj/machinery/camera/network/talon{ + icon_state = "camera"; + dir = 9 + }, +/obj/machinery/pointdefense_control{ + id_tag = "talon_pd" + }, +/turf/simulated/floor/bluegrid, +/area/talon/decktwo/tech) +"eg" = ( +/obj/machinery/light/small{ + dir = 8; + pixel_x = 0 + }, +/obj/machinery/suit_cycler/pilot{ + req_access = list(301) + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/pilot_room) +"eh" = ( +/turf/simulated/floor/wood, +/area/talon/decktwo/pilot_room) +"ei" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/pilot_room) +"ej" = ( +/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/borderfloor/corner2{ + dir = 10; + icon_state = "borderfloorcorner2"; + pixel_x = 0 + }, +/obj/structure/sign/directions/roomnum{ + pixel_x = -31; + pixel_y = -9 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"ek" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"el" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4{ + icon_state = "steel_decals_central4"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"em" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-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/spline/plain{ + dir = 4 + }, +/obj/machinery/door/airlock{ + id_tag = "talon_engdoor"; + name = "Engineer's Cabin"; + req_one_access = list(301) + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/decktwo/eng_room) +"en" = ( +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/eng_room) +"eo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/eng_room) +"ep" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/eng_room) +"eq" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/machinery/computer/ship/engines{ + dir = 1; + icon_state = "computer" + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/tech) +"er" = ( +/obj/machinery/light/small, +/turf/simulated/floor/carpet/blucarpet, +/area/talon/decktwo/cap_room) +"es" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable/green{ + icon_state = "1-4" + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 2; + pixel_y = -28 + }, +/obj/structure/sign/directions/evac{ + pixel_y = -38 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/tech) +"et" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/tech) +"eu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/light/small, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/tech) +"ev" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/pilot_room) +"ew" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/pilot_room) +"ex" = ( +/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 = 6 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/pilot_room) +"ey" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-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/spline/plain{ + dir = 8 + }, +/obj/machinery/door/airlock{ + id_tag = "talon_pilotdoor"; + name = "Pilot's Cabin"; + req_one_access = list(301) + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/decktwo/pilot_room) +"ez" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central4{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"eA" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"eB" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_port) +"eC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"eD" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/table/standard, +/obj/machinery/button/remote/airlock{ + dir = 8; + id = "talon_engdoor"; + name = "Door Bolts"; + pixel_x = -28; + specialfunctions = 4 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/eng_room) +"eE" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/turf/simulated/floor/wood, +/area/talon/decktwo/eng_room) +"eF" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/closet/secure_closet/talon_engineer, +/turf/simulated/floor/wood, +/area/talon/decktwo/eng_room) +"eH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + icon_state = "1-2"; + dir = 1 + }, +/obj/machinery/door/airlock/command{ + name = "Talon Secure Airlock"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/decktwo/tech) +"eI" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/closet/secure_closet/talon_pilot, +/turf/simulated/floor/wood, +/area/talon/decktwo/pilot_room) +"eJ" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/turf/simulated/floor/wood, +/area/talon/decktwo/pilot_room) +"eK" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/table/standard, +/obj/machinery/button/remote/airlock{ + dir = 4; + id = "talon_pilotdoor"; + name = "Door Bolts"; + pixel_x = 28; + specialfunctions = 4 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/pilot_room) +"eL" = ( +/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/borderfloor/corner2{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"eM" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_starboard) +"eN" = ( +/turf/simulated/wall/rpshull, +/area/talon/decktwo/lifeboat) +"eO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + icon_state = "1-2"; + dir = 1 + }, +/obj/machinery/door/airlock/glass_external, +/obj/effect/map_helper/airlock/door/simple, +/turf/simulated/floor/tiled/techfloor, +/area/talon/decktwo/lifeboat) +"eP" = ( +/obj/structure/cable/heavyduty{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"eQ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/catwalk, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_port) +"eR" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon/decktwo/central_hallway) +"eS" = ( +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"eT" = ( +/turf/simulated/wall, +/area/talon/decktwo/med_room) +"eU" = ( +/obj/structure/table/woodentable, +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/medical, +/turf/simulated/floor/carpet, +/area/talon/decktwo/med_room) +"eV" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/carpet, +/area/talon/decktwo/med_room) +"eW" = ( +/obj/item/weapon/bedsheet, +/obj/structure/bed/padded, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/carpet, +/area/talon/decktwo/med_room) +"eX" = ( +/obj/machinery/computer/shuttle_control/explore/talon_lifeboat{ + icon_state = "computer"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor/orange{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/decktwo/lifeboat) +"eY" = ( +/obj/machinery/vending/wallmed1{ + emagged = 1; + pixel_y = 32; + shut_up = 0 + }, +/obj/item/weapon/bedsheet, +/obj/structure/bed/padded, +/obj/effect/floor_decal/techfloor/orange{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/decktwo/lifeboat) +"eZ" = ( +/turf/simulated/wall, +/area/talon/decktwo/sec_room) +"fa" = ( +/obj/item/weapon/bedsheet, +/obj/structure/bed/padded, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/carpet, +/area/talon/decktwo/sec_room) +"fb" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/carpet, +/area/talon/decktwo/sec_room) +"fc" = ( +/obj/structure/table/woodentable, +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/security, +/turf/simulated/floor/carpet, +/area/talon/decktwo/sec_room) +"fd" = ( +/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/effect/floor_decal/borderfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"fe" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_starboard) +"ff" = ( +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/structure/catwalk, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_starboard) +"fg" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/heavyduty{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"fh" = ( +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/solar, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"fi" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/heavyduty{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"fj" = ( +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_port) +"fk" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"fl" = ( +/obj/structure/cable/green{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/talon{ + cell_type = /obj/item/weapon/cell/apc; + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/obj/structure/bed/chair/office/light{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/talon/decktwo/med_room) +"fm" = ( +/turf/simulated/floor/carpet, +/area/talon/decktwo/med_room) +"fn" = ( +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/effect/landmark/start{ + name = "Talon Doctor" + }, +/turf/simulated/floor/carpet, +/area/talon/decktwo/med_room) +"fo" = ( +/obj/machinery/power/apc/talon/hyper{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/closet/crate/plastic, +/obj/item/clothing/suit/space/emergency, +/obj/item/device/flashlight, +/obj/item/weapon/storage/briefcase/inflatable, +/obj/item/clothing/head/helmet/space/emergency, +/obj/item/device/flashlight/glowstick, +/obj/item/device/flashlight/glowstick, +/obj/item/device/flashlight/glowstick, +/obj/item/weapon/storage/box/metalfoam, +/obj/item/weapon/tank/oxygen, +/obj/effect/floor_decal/techfloor/orange{ + dir = 4 + }, +/obj/item/device/survivalcapsule/luxury, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/decktwo/lifeboat) +"fp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/decktwo/lifeboat) +"fq" = ( +/obj/machinery/alarm/talon{ + alarm_id = "anomaly_testing"; + breach_detection = 0; + dir = 8; + frequency = 1439; + pixel_x = 22; + pixel_y = 0; + report_danger_level = 0 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/powered/scrubber, +/obj/effect/floor_decal/techfloor/orange{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/decktwo/lifeboat) +"fr" = ( +/obj/machinery/alarm/talon{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/effect/landmark/start{ + name = "Talon Guard" + }, +/turf/simulated/floor/carpet, +/area/talon/decktwo/sec_room) +"fs" = ( +/turf/simulated/floor/carpet, +/area/talon/decktwo/sec_room) +"ft" = ( +/obj/structure/cable/green{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/talon{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/bed/chair/office/light{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/talon/decktwo/sec_room) +"fu" = ( +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 8; + pixel_x = 0 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_starboard) +"fv" = ( +/obj/machinery/power/solar, +/obj/structure/cable/yellow, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"fw" = ( +/obj/structure/cable/yellow, +/obj/machinery/power/solar, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"fx" = ( +/obj/structure/catwalk, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_port) +"fy" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"fz" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light_switch{ + dir = 4; + icon_state = "light1"; + pixel_x = -24 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/med_room) +"fA" = ( +/turf/simulated/floor/wood, +/area/talon/decktwo/med_room) +"fB" = ( +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/med_room) +"fC" = ( +/obj/machinery/camera/network/talon{ + icon_state = "camera"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor/orange{ + dir = 4 + }, +/obj/item/weapon/paper/talon_lifeboat, +/obj/structure/table/steel, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/decktwo/lifeboat) +"fD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/decktwo/lifeboat) +"fE" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/obj/effect/floor_decal/techfloor/orange{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/decktwo/lifeboat) +"fF" = ( +/obj/machinery/light/small{ + dir = 8; + pixel_x = 0 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/sec_room) +"fG" = ( +/turf/simulated/floor/wood, +/area/talon/decktwo/sec_room) +"fH" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/sec_room) +"fI" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_starboard) +"fJ" = ( +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_port) +"fK" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"fL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-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/spline/plain{ + dir = 4 + }, +/obj/machinery/door/airlock{ + id_tag = "talon_meddoor"; + name = "Doctor's Cabin"; + req_one_access = list(301) + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/decktwo/med_room) +"fM" = ( +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/med_room) +"fN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/med_room) +"fO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/med_room) +"fP" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 4 + }, +/obj/structure/table/steel, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/decktwo/lifeboat) +"fQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/embedded_controller/radio/simple_docking_controller{ + dir = 1; + frequency = 1380; + id_tag = "talonlifeboat_docker"; + pixel_x = -28; + pixel_y = -28; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/decktwo/lifeboat) +"fR" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 8 + }, +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/decktwo/lifeboat) +"fS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/sec_room) +"fT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/sec_room) +"fU" = ( +/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 = 6 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/sec_room) +"fV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-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/spline/plain{ + dir = 8 + }, +/obj/machinery/door/airlock{ + id_tag = "talon_secdoor"; + name = "Guard's Cabin"; + req_one_access = list(301) + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/decktwo/sec_room) +"fW" = ( +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"fX" = ( +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_starboard) +"fY" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/structure/extinguisher_cabinet{ + dir = 4; + icon_state = "extinguisher_closed"; + pixel_x = -30 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"fZ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/table/standard, +/obj/machinery/button/remote/airlock{ + dir = 8; + id = "talon_meddoor"; + name = "Door Bolts"; + pixel_x = -28; + specialfunctions = 4 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/med_room) +"ga" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/turf/simulated/floor/wood, +/area/talon/decktwo/med_room) +"gb" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/closet/secure_closet/talon_doctor, +/turf/simulated/floor/wood, +/area/talon/decktwo/med_room) +"gc" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/closet/secure_closet/talon_guard, +/turf/simulated/floor/wood, +/area/talon/decktwo/sec_room) +"gd" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/turf/simulated/floor/wood, +/area/talon/decktwo/sec_room) +"ge" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/table/standard, +/obj/machinery/button/remote/airlock{ + dir = 4; + id = "talon_secdoor"; + name = "Door Bolts"; + pixel_x = 28; + specialfunctions = 4 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/sec_room) +"gf" = ( +/obj/machinery/door/firedoor/glass/talon/hidden{ + dir = 2 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor/glass/talon/hidden{ + dir = 2 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/command{ + name = "Talon Secure Airlock"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/maintenance/decktwo_aft) +"gi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor/glass/talon/hidden{ + dir = 2 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gj" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass/talon/hidden{ + dir = 2 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gk" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/machinery/camera/network/talon{ + icon_state = "camera"; + dir = 9 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gm" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4; + icon_state = "borderfloorcorner2"; + pixel_y = 0 + }, +/obj/machinery/washing_machine, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gn" = ( +/turf/simulated/open, +/area/talon/maintenance/decktwo_aft) +"go" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 4 + }, +/turf/simulated/open, +/area/talon/maintenance/decktwo_aft) +"gp" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 6 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"gq" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"gt" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 5 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"gu" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/open, +/area/talon/maintenance/decktwo_aft) +"gv" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10; + icon_state = "borderfloorcorner2"; + pixel_x = 0 + }, +/obj/machinery/washing_machine, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gx" = ( +/obj/machinery/alarm/talon{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gz" = ( +/obj/machinery/door/firedoor/glass/talon/hidden, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + icon_state = "steel_decals5"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gA" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"gB" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/open, +/area/talon/maintenance/decktwo_aft) +"gC" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/open, +/area/talon/maintenance/decktwo_aft) +"gD" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 4 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/open, +/area/talon/maintenance/decktwo_aft) +"gE" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 10 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"gF" = ( +/obj/machinery/door/firedoor/glass/talon/hidden{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + icon_state = "steel_decals5"; + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gG" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/alarm/talon{ + alarm_id = "anomaly_testing"; + breach_detection = 0; + dir = 8; + frequency = 1439; + pixel_x = 22; + pixel_y = 0; + report_danger_level = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gH" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + icon_state = "pipe-t"; + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gI" = ( +/obj/structure/sign/deck2{ + pixel_y = 28 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/talon/decktwo/central_hallway) +"gJ" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/lattice, +/turf/simulated/open, +/area/talon/maintenance/decktwo_aft) +"gK" = ( +/obj/structure/lattice, +/turf/simulated/open, +/area/talon/maintenance/decktwo_aft) +"gL" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 4 + }, +/obj/structure/lattice, +/turf/simulated/open, +/area/talon/maintenance/decktwo_aft) +"gM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals3, +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 6 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gN" = ( +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gO" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gR" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gS" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gT" = ( +/obj/structure/railing, +/turf/simulated/open, +/area/talon/maintenance/decktwo_aft) +"gU" = ( +/obj/structure/railing, +/obj/structure/railing{ + icon_state = "railing0"; + dir = 4 + }, +/turf/simulated/open, +/area/talon/maintenance/decktwo_aft) +"gV" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/open, +/area/talon/maintenance/decktwo_aft) +"gW" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass, +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"gX" = ( +/obj/machinery/alarm/talon{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/structure/catwalk, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_port) +"gY" = ( +/obj/structure/catwalk, +/obj/structure/cable/green{ + d2 = 8; + dir = 2; + icon_state = "0-8" + }, +/obj/machinery/power/apc/talon{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_port) +"gZ" = ( +/turf/simulated/wall, +/area/talon/maintenance/decktwo_port) +"ha" = ( +/turf/simulated/floor/tiled/white, +/area/talon/decktwo/central_hallway) +"hb" = ( +/obj/structure/sink{ + pixel_y = 22 + }, +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/talon/decktwo/central_hallway) +"hc" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"hd" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 9 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"he" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"hf" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 5 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"hg" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"hh" = ( +/obj/machinery/cryopod/talon{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/decktwo/central_hallway) +"hi" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/landmark/talon, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/steel_ridged, +/area/talon/decktwo/central_hallway) +"hj" = ( +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/structure/catwalk, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_starboard) +"hk" = ( +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_starboard) +"hl" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_port) +"hm" = ( +/obj/structure/toilet{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/talon/decktwo/central_hallway) +"hn" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/lattice, +/turf/simulated/open, +/area/talon/maintenance/decktwo_aft) +"ho" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing{ + icon_state = "railing0"; + dir = 4 + }, +/turf/simulated/open, +/area/talon/maintenance/decktwo_aft) +"hp" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 6 + }, +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 8; + pixel_x = 0 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"hq" = ( +/obj/machinery/computer/cryopod{ + pixel_x = 32 + }, +/obj/machinery/light/small, +/obj/effect/landmark/talon, +/turf/simulated/floor/tiled/steel_ridged, +/area/talon/decktwo/central_hallway) +"hr" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_starboard) +"hs" = ( +/obj/structure/catwalk, +/obj/structure/cable/green{ + d2 = 8; + dir = 2; + icon_state = "0-8" + }, +/obj/machinery/power/apc/talon{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_starboard) +"ht" = ( +/turf/simulated/wall/rshull, +/area/talon/maintenance/decktwo_aft) +"hu" = ( +/turf/simulated/wall, +/area/talon/maintenance/decktwo_aft) +"hw" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/disposalpipe/segment, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"hx" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 6 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"hy" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing, +/turf/simulated/open, +/area/talon/maintenance/decktwo_aft) +"hz" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 4 + }, +/obj/structure/railing, +/turf/simulated/open, +/area/talon/maintenance/decktwo_aft) +"hB" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"hC" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"hD" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/catwalk, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"hE" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/zpipe/down/supply{ + icon_state = "down-supply"; + dir = 4 + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/open, +/area/talon/maintenance/decktwo_aft) +"hF" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/zpipe/down/scrubbers{ + icon_state = "down-scrubbers"; + dir = 8 + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/disposalpipe/down{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/zpipe/down/scrubbers{ + dir = 1 + }, +/turf/simulated/open, +/area/talon/maintenance/decktwo_aft) +"hG" = ( +/obj/structure/cable/heavyduty{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"hH" = ( +/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/heavyduty{ + icon_state = "1-2" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"hI" = ( +/obj/machinery/power/solar, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"hJ" = ( +/obj/structure/cable/heavyduty, +/obj/structure/cable/heavyduty{ + dir = 2; + icon_state = "0-4" + }, +/obj/structure/cable/heavyduty{ + icon_state = "0-2" + }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"hL" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 10 + }, +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"hM" = ( +/obj/structure/cable/heavyduty{ + icon_state = "4-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"hN" = ( +/obj/structure/cable/heavyduty{ + icon_state = "0-2" + }, +/obj/structure/cable/heavyduty{ + icon_state = "0-8" + }, +/obj/structure/cable/heavyduty, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"hO" = ( +/obj/effect/overmap/visitable/ship/talon, +/turf/space, +/area/space) +"hP" = ( +/obj/effect/landmark/map_data/talon, +/turf/space, +/area/space) +"hQ" = ( +/obj/structure/table/bench/wooden, +/turf/simulated/floor/wood, +/area/talon/decktwo/cap_room) +"hR" = ( +/obj/structure/ladder, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"hS" = ( +/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_decals3{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 5 + }, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 2 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"hT" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10, +/obj/structure/sign/deck2{ + pixel_y = 28 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"hU" = ( +/obj/structure/catwalk, +/obj/structure/loot_pile/maint/trash, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_port) +"hV" = ( +/obj/structure/catwalk, +/obj/structure/loot_pile/maint/trash, +/turf/simulated/floor/lino, +/area/talon/maintenance/decktwo_aft) +"hW" = ( +/obj/structure/loot_pile/maint/trash, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_starboard) +"hX" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/open, +/area/talon/maintenance/decktwo_aft) +"hY" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"hZ" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/cable/heavyduty{ + icon_state = "2-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_aft) +"ia" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/obj/structure/cable/green{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/talon{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"ib" = ( +/obj/structure/cable/heavyduty{ + icon_state = "2-4" + }, +/obj/machinery/camera/network/talon{ + icon_state = "camera"; + dir = 6 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_aft) +"ic" = ( +/obj/structure/lattice, +/obj/structure/railing, +/turf/simulated/open, +/area/talon/maintenance/decktwo_aft) +"id" = ( +/obj/machinery/airlock_sensor{ + dir = 4; + pixel_x = -28; + req_one_access = list(301) + }, +/obj/machinery/atmospherics/unary/vent_pump/aux{ + icon_state = "map_vent_aux"; + dir = 1 + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + dir = 8; + id_tag = "talon_aft_solar"; + pixel_x = 28; + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"ie" = ( +/obj/effect/map_helper/airlock/door/ext_door, +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"if" = ( +/obj/machinery/airlock_sensor{ + pixel_x = -28; + pixel_y = 28; + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/sensor/ext_sensor, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_aft) +"ig" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/obj/structure/sign/warning/falling{ + pixel_x = 31 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"ih" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 9 + }, +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 10 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"ii" = ( +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 6 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"ij" = ( +/obj/machinery/atmospherics/portables_connector/aux{ + icon_state = "map_connector-aux"; + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"ik" = ( +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"il" = ( +/obj/structure/catwalk, +/obj/machinery/airlock_sensor{ + dir = 1; + pixel_x = -28; + pixel_y = -28; + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/sensor/int_sensor, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 10 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"im" = ( +/obj/structure/catwalk, +/obj/machinery/light/small, +/obj/structure/sign/warning/airlock{ + pixel_y = -32 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"in" = ( +/obj/effect/map_helper/airlock/door/int_door, +/obj/machinery/atmospherics/pipe/simple/visible/aux, +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"ip" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 8; + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/decktwo/bridge_upper) +"iq" = ( +/obj/machinery/telecomms/allinone/talon{ + id = "talon_aio"; + network = "Talon" + }, +/turf/simulated/floor/bluegrid, +/area/talon/decktwo/tech) +"ir" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 5 + }, +/obj/structure/cable/green{ + icon_state = "1-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"is" = ( +/turf/simulated/open/vacuum, +/area/space) +"it" = ( +/obj/structure/cable/heavyduty{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"iu" = ( +/obj/structure/cable/heavyduty{ + icon_state = "1-2" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"iv" = ( +/obj/machinery/power/tracker, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/effect/floor_decal/industrial/warning/dust/corner{ + icon_state = "warningcorner_dust"; + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"iw" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"ix" = ( +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/heavyduty, +/obj/structure/cable/heavyduty{ + icon_state = "0-2" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"iy" = ( +/obj/structure/cable/heavyduty{ + icon_state = "0-2" + }, +/obj/structure/cable/heavyduty, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"iz" = ( +/obj/machinery/power/tracker, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"iA" = ( +/obj/structure/cable/heavyduty{ + icon_state = "1-4" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"iB" = ( +/obj/structure/cable/heavyduty{ + icon_state = "2-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"iC" = ( +/obj/structure/cable/heavyduty{ + icon_state = "2-4" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"iD" = ( +/obj/structure/cable/heavyduty{ + icon_state = "1-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"iE" = ( +/obj/structure/cable/heavyduty{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"iF" = ( +/obj/structure/cable/heavyduty{ + dir = 2; + icon_state = "0-4" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"iG" = ( +/obj/structure/cable/heavyduty{ + 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/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"iH" = ( +/obj/structure/cable/heavyduty{ + 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/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"iI" = ( +/obj/structure/cable/heavyduty{ + icon_state = "0-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"iJ" = ( +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 5 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"iK" = ( +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 9 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"iL" = ( +/turf/simulated/open/vacuum, +/area/talon/maintenance/decktwo_solars) +"iM" = ( +/obj/machinery/ntnet_relay, +/turf/simulated/floor/bluegrid, +/area/talon/decktwo/tech) +"jD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"kh" = ( +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/bar) +"kv" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/wall/rshull, +/area/talon/maintenance/decktwo_aft) +"mN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/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/machinery/oxygen_pump{ + icon_state = "oxygen_tank"; + dir = 4; + pixel_x = 30 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"nu" = ( +/obj/structure/table/bench/wooden, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/cap_room) +"nH" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"om" = ( +/obj/effect/floor_decal/industrial/warning/dust/corner, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"oo" = ( +/obj/structure/sign/poster, +/turf/simulated/wall, +/area/talon/decktwo/bar) +"pY" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/bar) +"qG" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/wall/rshull, +/area/talon/maintenance/decktwo_aft) +"rb" = ( +/obj/structure/disposalpipe/trunk, +/obj/machinery/disposal/deliveryChute{ + icon_state = "intake"; + dir = 4 + }, +/obj/effect/floor_decal/rust/steel_decals_rusted1{ + dir = 8 + }, +/obj/effect/floor_decal/rust/steel_decals_rusted1{ + icon_state = "steel_decals_rusted1"; + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/maintenance/decktwo_aft) +"rE" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 6 + }, +/obj/structure/catwalk, +/obj/machinery/embedded_controller/radio/simple_docking_controller{ + frequency = 1380; + id_tag = "talon_lifeboatbay"; + pixel_x = 8; + pixel_y = 28; + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"rQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + icon_state = "1-2"; + dir = 1 + }, +/obj/effect/overmap/visitable/ship/landable/talon_lifeboat, +/obj/effect/shuttle_landmark/shuttle_initializer/talon_lifeboat, +/turf/simulated/floor/tiled/techfloor, +/area/talon/decktwo/lifeboat) +"sx" = ( +/obj/machinery/button/remote/airlock{ + dir = 4; + id = "talon_capdoor"; + name = "Door Bolts"; + pixel_x = 28; + specialfunctions = 4 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/cap_room) +"sE" = ( +/obj/effect/floor_decal/industrial/warning/dust, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"tx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"tC" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/obj/structure/sign/directions/evac{ + dir = 1; + pixel_x = 1; + pixel_y = 32 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"uP" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/catwalk, +/obj/structure/sign/securearea{ + pixel_x = 0; + pixel_y = 30 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"vc" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/regular/open{ + id = "talon_windows" + }, +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon/decktwo/bar) +"vj" = ( +/obj/machinery/conveyor{ + dir = 8; + icon_state = "conveyor0"; + id = "talontrash" + }, +/obj/machinery/door/blast/regular{ + dir = 4; + id = "talontrashblast" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/maintenance/decktwo_aft) +"vB" = ( +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/bar) +"vM" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"vO" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"vS" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"wW" = ( +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/wall/rshull, +/area/talon/maintenance/decktwo_aft) +"xm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/structure/sign/department/telecoms{ + pixel_y = -31 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"yb" = ( +/obj/structure/table/steel, +/obj/machinery/button/remote/blast_door{ + dir = 8; + id = "talon_windows"; + name = "window blast shields" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon/decktwo/bridge_upper) +"ys" = ( +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"yF" = ( +/obj/structure/disposalpipe/trunk{ + icon_state = "pipe-t"; + dir = 1 + }, +/obj/structure/disposaloutlet{ + icon_state = "outlet"; + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/floor_decal/rust/steel_decals_rusted1{ + dir = 8 + }, +/obj/effect/floor_decal/rust/steel_decals_rusted1{ + icon_state = "steel_decals_rusted1"; + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/maintenance/decktwo_aft) +"zm" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_starboard) +"AC" = ( +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/bar) +"AT" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/dust/corner{ + icon_state = "warningcorner_dust"; + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"BC" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/machinery/camera/network/talon{ + icon_state = "camera"; + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"Dk" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/media/jukebox, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/bar) +"Dz" = ( +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"Em" = ( +/obj/structure/disposalpipe/trunk{ + icon_state = "pipe-t"; + dir = 4 + }, +/obj/structure/disposaloutlet, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"EA" = ( +/obj/machinery/conveyor{ + dir = 8; + icon_state = "conveyor0"; + id = "talontrash" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon/maintenance/decktwo_aft) +"FD" = ( +/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 = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/machinery/camera/network/talon{ + icon_state = "camera"; + dir = 9 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"Gk" = ( +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"Gq" = ( +/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/borderfloor/corner2{ + dir = 10; + icon_state = "borderfloorcorner2"; + pixel_x = 0 + }, +/obj/structure/sign/directions/roomnum{ + icon_state = "roomnum"; + dir = 1; + pixel_x = -31; + pixel_y = -9 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"Ib" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/glass_external, +/obj/effect/map_helper/airlock/door/simple, +/turf/simulated/floor/tiled/techfloor, +/area/talon/decktwo/lifeboat) +"Ie" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"IL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/machinery/oxygen_pump{ + icon_state = "oxygen_tank"; + dir = 8; + pixel_x = -30 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"Jf" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/regular/open{ + id = "talon_windows" + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/talon/decktwo/cap_room) +"JL" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 4; + layer = 3.3; + pixel_x = 26 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"MS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/structure/sign/directions/roomnum{ + icon_state = "roomnum"; + dir = 8; + pixel_x = 32; + pixel_y = -9 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"Nc" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "talontrash" + }, +/obj/structure/catwalk, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 10 + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"Nx" = ( +/obj/structure/cable/heavyduty{ + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"Ou" = ( +/obj/structure/cable/green{ + icon_state = "0-1"; + dir = 1 + }, +/obj/machinery/power/pointdefense{ + id_tag = "talon_pd" + }, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"Ow" = ( +/obj/structure/cable/green{ + icon_state = "0-1"; + dir = 1 + }, +/obj/structure/cable/green{ + icon_state = "0-1"; + dir = 1 + }, +/obj/machinery/power/pointdefense{ + id_tag = "talon_pd" + }, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"Pk" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"Px" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/regular/open{ + id = "talon_windows" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_port) +"Qm" = ( +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"QF" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/obj/machinery/button/remote/blast_door{ + id = "talontrashblast"; + pixel_y = 28 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"RK" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"Se" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon/decktwo/bridge_upper) +"SU" = ( +/obj/effect/landmark/start{ + name = "Talon Captain" + }, +/turf/simulated/floor/carpet/blucarpet, +/area/talon/decktwo/cap_room) +"Uf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-s"; + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/bar) +"UI" = ( +/obj/machinery/power/pointdefense{ + id_tag = "talon_pd" + }, +/obj/structure/cable/green{ + icon_state = "0-8" + }, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"VV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/wall/rshull, +/area/talon/maintenance/decktwo_aft) +"WZ" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood, +/area/talon/decktwo/cap_room) +"Xh" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/regular/open{ + id = "talon_windows" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_starboard) +"Xp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/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/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/tiled/steel, +/area/talon/decktwo/central_hallway) +"Yb" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"YQ" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"Zc" = ( +/obj/structure/cable/heavyduty{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"Zd" = ( +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/turf/simulated/floor/lino, +/area/talon/decktwo/bar) +"Zf" = ( +/obj/machinery/power/pointdefense{ + id_tag = "talon_pd" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) +"ZF" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/door/window/brigdoor/eastleft{ + dir = 2; + req_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/decktwo_aft) +"ZP" = ( +/obj/structure/cable/heavyduty{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/reinforced/airless, +/area/talon/maintenance/decktwo_solars) + +(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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +hP +"} +(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 +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 +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 +hO +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 +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 +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 +"} +(4,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(5,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(6,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(7,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(8,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(9,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(10,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(11,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(12,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(13,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(14,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(15,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(16,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(17,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(18,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(19,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(20,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(21,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +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 +aa +aa +aa +"} +(22,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +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 +aa +aa +aa +"} +(23,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +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 +aa +aa +aa +"} +(24,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +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 +aa +aa +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 +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 +is +is +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 +aa +aa +aa +"} +(26,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +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 +aa +aa +"} +(27,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +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 +aa +aa +"} +(28,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +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 +aa +aa +"} +(29,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +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 +aa +aa +"} +(30,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +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 +aa +aa +"} +(31,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +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 +aa +"} +(32,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +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 +aa +"} +(33,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +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 +aa +"} +(34,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +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 +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 +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 +is +is +is +is +is +is +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 +aa +"} +(36,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +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 +"} +(37,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +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 +"} +(38,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +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 +"} +(39,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +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 +"} +(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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +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 +"} +(41,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +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 +"} +(42,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +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 +"} +(43,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +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 +"} +(44,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +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 +"} +(45,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +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 +"} +(46,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +is +is +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 +"} +(47,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +is +is +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 +"} +(48,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 +is +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +is +is +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 +"} +(49,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 +is +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +is +is +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 +"} +(50,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 +is +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +is +is +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 +"} +(51,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 +is +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +is +is +is +is +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 +"} +(52,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 +is +is +is +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +is +is +is +is +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 +"} +(53,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 +is +is +is +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +Zf +Yb +ao +is +is +is +is +is +is +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 +"} +(54,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 +is +is +is +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +vS +iv +ao +is +is +is +is +is +is +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 +"} +(55,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 +is +is +is +aa +aa +ao +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +Ie +iw +ao +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +ao +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 +"} +(56,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 +is +is +is +is +is +aa +ce +ct +fi +hH +hJ +it +it +it +it +it +it +it +it +it +it +Nx +ix +iu +it +it +it +it +it +it +it +it +it +it +it +it +it +iA +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 +"} +(57,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 +is +is +is +is +is +aa +ce +cu +fv +fh +hM +fh +fh +fh +fh +fh +fh +fh +fh +fh +fh +Ie +ao +ao +fh +fh +fh +fh +fh +fh +fh +fh +fh +fh +fh +fh +fh +iB +iA +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 +"} +(58,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 +is +is +is +is +is +aa +ce +cu +fw +cb +cg +cb +cb +cb +cb +cb +cb +cb +cb +cb +cb +Px +bl +cb +cb +cb +cb +cb +cb +cb +cb +cb +cb +cb +ht +ht +ht +ht +iB +iA +ao +ao +ao +ao +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 +"} +(59,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 +is +is +is +is +is +aa +ce +cv +fw +cb +ch +cx +cH +cY +cY +cY +dJ +cY +cY +eB +cY +eQ +fj +fx +fJ +fx +fx +fx +fx +fx +fx +fx +gX +hl +hu +hV +hE +ht +ao +hM +ao +iF +ao +iL +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 +"} +(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 +ao +ao +ao +ao +ao +sE +Ow +vO +ao +ao +ao +ao +ao +cb +ci +cc +cc +cc +cc +cc +cc +cc +cc +cc +cc +eR +cc +cc +cc +cc +cc +cc +cc +cc +cc +cc +gY +hU +hu +gp +hd +ht +ce +iE +fw +iG +fw +iL +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 +"} +(61,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 +ao +ao +ao +ao +ao +Gk +Pk +AT +ao +ao +ao +ao +ao +cb +ci +cc +cI +cZ +dp +dx +dK +dx +ek +dx +dx +eS +fk +fy +fK +fY +gf +BC +gx +gH +gO +cc +gZ +gZ +hu +gq +he +ht +ce +iE +fw +iG +fw +ao +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 +"} +(62,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 +ao +ao +ap +ap +ap +ap +ap +Jf +ba +ap +ap +ap +ap +cb +cj +cc +cJ +da +dq +dq +dq +dY +el +eC +mN +Xp +dq +MS +el +eC +gg +gl +gy +gM +gP +gS +ha +ha +Qm +gq +he +ht +ce +iE +fw +iG +fw +iL +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 +"} +(63,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 +ap +aC +aC +aC +aC +nu +hQ +aC +aC +aC +aC +aC +cc +cc +cK +db +dr +dr +dr +dr +em +dr +dr +eT +eT +eT +fL +eT +eT +gm +gz +gz +gz +cc +hb +hm +hu +hx +ij +ht +ce +iE +fw +iG +fw +iL +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 +"} +(64,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 +ap +aC +az +SU +aM +WZ +aM +bu +bB +aM +aM +aC +ck +cy +cL +dc +dr +dy +dL +dZ +en +eD +dr +eU +fl +fz +fM +fZ +eT +cc +cc +gI +cc +cc +cc +cc +hu +hY +hu +ht +ce +iE +fw +iG +fw +ao +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 +"} +(65,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 +ab +ab +ab +ab +ab +ab +ab +ab +aC +aA +aK +aM +bb +bm +bm +bC +bK +aK +aC +cl +cz +cM +dd +dr +dz +dM +ea +eo +eE +dr +eV +fm +fA +fN +ga +eT +gn +gn +gn +gn +gT +hp +hc +hc +ih +iJ +ht +ce +iE +fw +iG +fw +ao +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 +"} +(66,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 +ab +ac +ac +ac +ac +ac +ac +ac +ac +aC +aL +aM +bc +bn +bn +bD +bL +bR +aC +cl +cz +cN +de +dr +dA +dN +ea +ep +eF +dr +eW +fn +fB +fO +gb +eT +gn +gn +gn +gn +gT +gq +gB +gu +hy +ik +ht +ce +iE +fw +iG +fw +ao +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 +"} +(67,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 +ab +ac +ae +ae +ae +ae +aj +aq +Se +aB +aM +sx +bd +bo +bv +bE +bM +er +aC +cm +cz +cO +df +dr +dr +dr +eb +dr +dr +dr +eT +eT +eT +eT +eT +eT +go +go +go +go +gU +gq +gC +gn +hX +ik +ht +ce +iE +fw +iG +fw +ao +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 +"} +(68,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 +ab +ac +ae +ae +ae +ae +ak +ip +ac +aC +aC +aC +be +aC +aC +aC +aC +aC +aC +cl +cA +cN +jD +ds +dB +dO +dS +eq +ds +eN +eN +eN +eN +eN +eN +hu +rE +hc +hc +hc +hc +hd +hn +ic +ii +iK +ht +ce +iE +fw +iG +fw +ao +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 +"} +(69,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 +ad +ae +ae +ae +ag +al +ar +ac +aD +aN +aU +bf +bp +bw +bF +bw +bS +cc +cn +cB +cP +dg +ds +dC +dP +ec +es +ds +eN +eX +fo +fC +fP +eN +hu +tC +gB +gJ +gu +gV +he +gC +gT +ik +ht +ht +ht +hZ +iu +iD +ao +ao +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 +"} +(70,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 +ad +ae +ae +af +ah +am +as +ay +aE +aO +aV +bg +aV +FD +bG +bN +bT +cd +co +cC +cQ +dh +dt +dD +dQ +ed +et +eH +eO +rQ +fp +fD +fQ +Ib +gh +gt +gC +gK +gn +gT +he +gC +gT +il +in +id +ie +if +ao +ao +ao +Em +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 +"} +(71,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 +ad +ae +ae +ae +ai +yb +at +aw +aw +aw +aW +aW +aW +aw +aw +bO +bU +aw +hT +cD +cR +di +ds +dE +dR +ee +eu +ds +eN +eY +fq +fE +fR +eN +hu +uP +gD +gL +go +gU +he +gC +gT +im +ht +VV +kv +ib +Zc +ZP +YQ +vM +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 +"} +(72,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 +ab +ac +ae +ae +ae +ae +ai +au +aw +aF +aP +aX +aF +bq +bx +Dk +pY +bV +aw +cl +cE +cN +xm +ds +dF +iq +ef +iM +ds +eN +eN +eN +eN +eN +eN +hu +gE +hg +hg +hg +hg +hf +hn +ic +he +he +wW +ce +eP +fw +iH +fw +ao +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 +"} +(73,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 +ab +ac +ae +ae +ae +ae +an +av +aw +aG +aQ +aQ +kh +bH +bH +AC +vB +bW +aw +cm +cz +cN +de +du +du +du +du +du +du +du +eZ +eZ +eZ +eZ +eZ +eZ +gu +gu +gu +gu +gV +gA +gC +gn +gV +he +wW +ce +eP +fw +iH +fw +ao +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 +"} +(74,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 +ab +ac +ac +ac +ac +ac +ac +aw +aw +aH +aR +aY +bh +br +by +bI +Uf +bX +aw +cl +cz +cN +de +du +dG +dT +eg +ev +eI +du +fa +fr +fF +fS +gc +eZ +gn +gn +gn +gn +gT +gA +ho +go +hz +he +wW +ce +eP +fw +iH +fw +ao +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 +"} +(75,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 +ab +ab +ab +ab +ab +ab +ab +ax +oo +aI +aS +aI +bi +aI +bz +aQ +vB +bY +aw +cl +cz +cS +dj +du +dH +dU +eh +ew +eJ +du +fb +fs +fG +fT +gd +eZ +gn +gn +gn +gn +gT +hL +ia +ig +ir +hR +wW +ce +eP +fw +iH +fw +ao +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 +"} +(76,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 +ax +aw +aJ +aT +aZ +Zd +aZ +bA +bJ +bP +bZ +aw +ck +cy +cT +dk +du +dI +dV +ei +ex +eK +du +fc +ft +fH +fU +ge +eZ +cc +cc +gI +cc +cc +cc +cc +hu +hB +hu +wW +ce +eP +fw +iH +fw +ao +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 +"} +(77,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 +ax +aw +aw +aw +aw +bj +bs +aw +aw +aw +aw +aw +cc +cc +cU +dl +du +du +du +du +ey +du +du +eZ +eZ +eZ +fV +eZ +eZ +gv +gF +gF +gF +cc +hh +hh +hu +hC +rb +qG +ce +eP +fw +iH +fw +iL +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 +"} +(78,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 +ax +ax +ax +ax +ax +vc +bk +ax +ax +bQ +hW +ca +cp +cc +cV +dm +dv +dv +dv +ej +ez +eL +IL +dv +dv +Gq +ez +eL +gi +gw +tx +hS +gQ +gW +hi +hq +hu +QF +vj +ht +ce +eP +fw +iH +fw +iL +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 +"} +(79,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 +ao +ao +ao +om +RK +ys +ao +ao +ao +bQ +ca +ca +cq +cc +cW +dn +dw +dn +dW +dn +eA +JL +dn +fd +dW +dn +fW +dw +gj +gk +gG +gN +gR +cF +zm +cF +hu +ZF +EA +ht +ce +eP +fw +iH +fw +ao +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 +"} +(80,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 +ao +ao +ao +sE +Ou +Dz +ao +ao +ao +bQ +bQ +bQ +cq +cF +cF +cF +cF +cF +cF +cF +cF +cF +cF +fe +cF +cF +cF +cF +cF +cF +cF +cF +cF +cF +hj +hr +hw +hD +yF +ht +ce +eP +fw +iH +fw +iL +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 +"} +(81,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 +is +is +is +is +is +aa +ce +cw +fw +bQ +cr +cG +cX +do +do +do +dX +do +do +eM +do +ff +fu +fI +fX +fI +fI +fI +fI +fI +fI +fI +hk +hs +hu +Nc +hF +ht +ao +hM +ao +iI +ao +iL +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 +"} +(82,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 +is +is +is +is +is +aa +ce +eP +fw +bQ +cs +bQ +bQ +bQ +bQ +bQ +bQ +bQ +bQ +bQ +bQ +Xh +bt +bQ +bQ +bQ +bQ +bQ +bQ +bQ +bQ +bQ +bQ +bQ +ht +ht +ht +ht +iC +iD +ao +ao +ao +ao +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 +"} +(83,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 +is +is +is +is +is +aa +ce +eP +fv +hI +hM +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +Ie +ao +ao +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +iC +iD +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 +"} +(84,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 +is +is +is +is +is +aa +ce +fg +hG +hG +hN +it +it +it +it +it +it +it +it +it +it +Nx +iy +iu +it +it +it +it +it +it +it +it +it +it +it +it +it +iD +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 +"} +(85,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 +is +is +is +aa +aa +ao +fh +fh +fh +fh +fh +fh +fh +fh +fh +fh +fh +fh +fh +fh +Ie +iw +ao +fh +fh +fh +fh +fh +fh +fh +fh +fh +fh +fh +fh +fh +ao +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 +"} +(86,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 +is +is +is +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +nH +iz +ao +is +is +is +is +is +is +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 +"} +(87,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 +is +is +is +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +UI +Yb +ao +is +is +is +is +is +is +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 +"} +(88,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 +is +is +is +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +is +is +is +is +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 +"} +(89,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 +is +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +is +is +is +is +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 +"} +(90,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 +is +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +is +is +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 +"} +(91,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 +is +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +is +is +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 +"} +(92,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 +is +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +is +is +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 +"} +(93,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +is +is +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 +"} +(94,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +is +is +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 +"} +(95,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +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 +"} +(96,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +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 +"} +(97,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +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 +"} +(98,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +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 +"} +(99,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +is +is +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 +"} +(100,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +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 +"} +(101,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +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 +"} +(102,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +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 +"} +(103,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +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 +"} +(104,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +is +is +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 +"} +(105,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +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 +aa +"} +(106,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +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 +aa +"} +(107,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +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 +aa +"} +(108,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +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 +aa +"} +(109,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +is +is +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 +aa +"} +(110,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +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 +aa +aa +"} +(111,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +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 +aa +aa +"} +(112,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +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 +aa +aa +"} +(113,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +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 +aa +aa +"} +(114,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +is +is +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 +aa +aa +"} +(115,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +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 +aa +aa +aa +"} +(116,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +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 +aa +aa +aa +"} +(117,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +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 +aa +aa +aa +"} +(118,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +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 +aa +aa +aa +"} +(119,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +is +is +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 +aa +aa +aa +"} +(120,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(121,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(122,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(123,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(124,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(125,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(126,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(127,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(128,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(129,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(130,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(131,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(132,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(133,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(134,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(135,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(136,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(137,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(138,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(139,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(140,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} diff --git a/maps/tether/submaps/offmap/talon_areas.dm b/maps/tether/submaps/offmap/talon_areas.dm new file mode 100644 index 00000000000..36aee1dd2ef --- /dev/null +++ b/maps/tether/submaps/offmap/talon_areas.dm @@ -0,0 +1,73 @@ +/area/talon/maintenance/deckone_port + name = "\improper Deck One - Port Maintenance" +/area/talon/maintenance/deckone_starboard + name = "\improper Deck One - Starboard Maintenance" + +/area/talon/maintenance/deckone_port_aft_wing + name = "\improper Deck One - Aft Port Wing" +/area/talon/maintenance/deckone_starboard_aft_wing + name = "\improper Deck One - Aft Starboard Wing" +/area/talon/maintenance/deckone_port_fore_wing + name = "\improper Deck One - Fore Port Wing" +/area/talon/maintenance/deckone_starboard_fore_wing + name = "\improper Deck One - Fore Starboard Wing" + +/area/talon/maintenance/decktwo_port + name = "\improper Deck Two - Port Maintenance" +/area/talon/maintenance/decktwo_starboard + name = "\improper Deck Two - Starboard Maintenance" +/area/talon/maintenance/decktwo_aft + name = "\improper Deck Two - Aft Maintenance" +/area/talon/maintenance/decktwo_solars + name = "\improper Deck Two - Ext Solars" + + +/area/talon/deckone/central_hallway + name = "\improper Deck One - Central Hallway" +/area/talon/deckone/bridge_hallway + name = "\improper Deck One - Bridge Hallway" +/area/talon/deckone/medical + name = "\improper Deck One - Medical" +/area/talon/deckone/workroom + name = "\improper Deck One - Workroom" +/area/talon/deckone/brig + name = "\improper Deck One - Brig" +/area/talon/deckone/port_eng + name = "\improper Deck One - Port Engineering" +/area/talon/deckone/port_eng_store + name = "\improper Deck One - Port Eng. Storage" +/area/talon/deckone/starboard_eng + name = "\improper Deck One - Starboard Engineering" +/area/talon/deckone/starboard_eng_store + name = "\improper Deck One - Starboard Eng. Storage" +/area/talon/deckone/armory + name = "\improper Deck One - Armory" +/area/talon/deckone/secure_storage + name = "\improper Deck One - Secure Storage" +/area/talon/deckone/bridge + name = "\improper Deck One - Bridge" +/area/talon/deckone/port_solar + name = "\improper Deck One - Port Solar Control" +/area/talon/deckone/starboard_solar + name = "\improper Deck One - Starboard Solar Control" + +/area/talon/decktwo/central_hallway + name = "\improper Deck Two - Central Hallway" +/area/talon/decktwo/pilot_room + name = "\improper Deck Two - Pilot Cabin" +/area/talon/decktwo/med_room + name = "\improper Deck Two - Doctor Cabin" +/area/talon/decktwo/eng_room + name = "\improper Deck Two - Engineer Cabin" +/area/talon/decktwo/sec_room + name = "\improper Deck Two - Guard Cabin" +/area/talon/decktwo/cap_room + name = "\improper Deck Two - Captain Cabin" +/area/talon/decktwo/bar + name = "\improper Deck Two - Bar" +/area/talon/decktwo/tech + name = "\improper Deck Two - Tech Room" +/area/talon/decktwo/lifeboat + name = "\improper Deck Two - Lifeboat" +/area/talon/decktwo/bridge_upper + name = "\improper Deck Two - Upper Bridge" \ No newline at end of file diff --git a/maps/tether/submaps/om_ships/aro.dm b/maps/tether/submaps/om_ships/aro.dm index c0382f01d54..b88ba0928b6 100644 --- a/maps/tether/submaps/om_ships/aro.dm +++ b/maps/tether/submaps/om_ships/aro.dm @@ -53,8 +53,8 @@ /obj/effect/overmap/visitable/ship/aro/get_skybox_representation() var/image/I = image('aro.dmi', "skybox") - I.pixel_x = 200 - I.pixel_y = 200 + I.pixel_x = 150 + I.pixel_y = 150 return I // The shuttle's 'shuttle' computer diff --git a/maps/tether/submaps/om_ships/aro.dmm b/maps/tether/submaps/om_ships/aro.dmm index 4e7ae07f3c8..65903eee224 100644 --- a/maps/tether/submaps/om_ships/aro.dmm +++ b/maps/tether/submaps/om_ships/aro.dmm @@ -1911,14 +1911,6 @@ icon_state = "railing0"; dir = 4 }, -/obj/machinery/shield_capacitor/advanced{ - active = 1; - anchored = 1; - stored_charge = 1.2e+007 - }, -/obj/structure/cable/cyan{ - icon_state = "0-4" - }, /obj/structure/railing{ dir = 1 }, @@ -1970,26 +1962,20 @@ icon_state = "railing0"; dir = 4 }, -/obj/machinery/shield_gen/external/advanced{ - anchored = 1; - field_radius = 35; - id = "aroship_shields"; - target_field_strength = 7 - }, /obj/structure/cable/cyan{ icon_state = "0-4" }, +/obj/machinery/power/shield_generator/charged{ + field_radius = 35; + initial_shield_modes = 2113; + target_radius = 35 + }, /turf/simulated/floor/bluegrid, /area/ship/aro/centralarea) "dV" = ( /obj/machinery/light{ dir = 4 }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, /obj/structure/cable/cyan{ d1 = 1; d2 = 8; @@ -2040,15 +2026,6 @@ icon_state = "railing0"; dir = 4 }, -/obj/machinery/shield_capacitor/advanced{ - active = 1; - anchored = 1; - dir = 1; - stored_charge = 1.2e+007 - }, -/obj/structure/cable/cyan{ - icon_state = "0-4" - }, /obj/structure/railing, /turf/simulated/floor/bluegrid, /area/ship/aro/centralarea) @@ -3487,11 +3464,11 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/aro/midshipshangars) "vQ" = ( -/obj/machinery/telecomms/relay/preset/houseboat, /obj/structure/railing{ icon_state = "railing0"; dir = 4 }, +/obj/machinery/telecomms/allinone, /turf/simulated/floor/greengrid, /area/ship/aro/centralarea) "wC" = ( @@ -3517,11 +3494,6 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, /turf/simulated/floor/tiled/techfloor, /area/ship/aro/centralarea) "Bj" = ( @@ -3529,6 +3501,12 @@ /obj/effect/floor_decal/industrial/outline/blue, /turf/simulated/floor/tiled/techfloor, /area/ship/aro/midshipshangars) +"CT" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/technomancer_core/universal, +/obj/item/weapon/technomancer_catalog/universal, +/turf/simulated/floor/tiled/techfloor, +/area/ship/aro/centralarea) "GH" = ( /obj/effect/floor_decal/techfloor/orange{ icon_state = "techfloororange_edges"; @@ -3556,11 +3534,6 @@ d2 = 2; icon_state = "1-2" }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, /turf/simulated/floor/tiled/techfloor, /area/ship/aro/centralarea) "HK" = ( @@ -12738,7 +12711,7 @@ ds bv dG dP -Rs +CT cH si ek diff --git a/maps/tether/submaps/om_ships/cruiser.dm b/maps/tether/submaps/om_ships/cruiser.dm index 5cfae746ca5..76cbba44349 100644 --- a/maps/tether/submaps/om_ships/cruiser.dm +++ b/maps/tether/submaps/om_ships/cruiser.dm @@ -131,3 +131,9 @@ vessel_mass = 15000 vessel_size = SHIP_SIZE_LARGE initial_generic_waypoints = list("cruiser_fore", "cruiser_aft", "cruiser_port", "cruiser_starboard", "ws_port_dock_1", "ws_port_dock_2", "ws_starboard_dock_1", "ws_starboard_dock_2") + +/obj/effect/overmap/visitable/ship/cruiser/get_skybox_representation() + var/image/I = image('cruiser.dmi', "skybox") + I.pixel_x = 350 + I.pixel_y = 350 + return I \ No newline at end of file diff --git a/maps/tether/submaps/om_ships/cruiser.dmi b/maps/tether/submaps/om_ships/cruiser.dmi new file mode 100644 index 00000000000..6a383f4c12e Binary files /dev/null and b/maps/tether/submaps/om_ships/cruiser.dmi differ diff --git a/maps/tether/submaps/om_ships/cruiser.dmm b/maps/tether/submaps/om_ships/cruiser.dmm index f4d2cf35ced..c689224f696 100644 --- a/maps/tether/submaps/om_ships/cruiser.dmm +++ b/maps/tether/submaps/om_ships/cruiser.dmm @@ -2127,29 +2127,18 @@ pixel_y = 26 }, /obj/structure/cable/cyan{ - d1 = 4; + d1 = 2; d2 = 8; - icon_state = "4-8" - }, -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 4 + icon_state = "2-8" }, +/obj/effect/floor_decal/industrial/warning/corner, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/teleporter) "eh" = ( -/obj/structure/cable/cyan{ - d2 = 2; - icon_state = "0-2" +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 }, -/obj/machinery/shield_capacitor/advanced{ - anchored = 1 - }, -/obj/structure/cable/cyan{ - d2 = 8; - icon_state = "0-8" - }, -/obj/effect/floor_decal/industrial/hatch/yellow, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/teleporter) "ei" = ( @@ -2368,18 +2357,19 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/teleporter) "eA" = ( -/obj/structure/cable/cyan, -/obj/structure/cable/cyan{ - d2 = 2; - icon_state = "0-2" - }, -/obj/machinery/shield_gen/external/advanced{ - anchored = 1 - }, /obj/machinery/light{ dir = 4 }, /obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/cable/cyan{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/shield_generator/charged{ + field_radius = 49; + initial_shield_modes = 2113; + target_radius = 49 + }, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/teleporter) "eB" = ( @@ -2600,21 +2590,11 @@ icon_state = "alarm0"; pixel_y = -22 }, -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; +/obj/effect/floor_decal/industrial/warning/corner{ dir = 4 }, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/teleporter) -"eS" = ( -/obj/structure/cable/cyan, -/obj/machinery/shield_capacitor/advanced{ - anchored = 1; - dir = 1 - }, -/obj/effect/floor_decal/industrial/hatch/yellow, -/turf/simulated/floor/tiled/techfloor/grid, -/area/mothership/teleporter) "eT" = ( /turf/simulated/shuttle/wall/voidcraft/blue{ hard_corner = 1; @@ -3409,7 +3389,10 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/vault) "gk" = ( -/obj/machinery/power/fractal_reactor/fluff/converter, +/obj/machinery/power/fractal_reactor/fluff/converter{ + mapped_in = 1; + power_generation_rate = 2e+006 + }, /obj/structure/cable, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/vault) @@ -3436,7 +3419,7 @@ /obj/structure/closet/crate/secure/gear{ req_one_access = list(108) }, -/obj/item/device/subspaceradio, +/obj/item/device/bluespaceradio, /obj/item/weapon/storage/firstaid/insiderepair, /obj/item/weapon/storage/firstaid/combat, /obj/item/weapon/storage/toolbox/syndicate/powertools, @@ -6396,14 +6379,14 @@ /turf/simulated/floor/tiled/steel_grid, /area/mothership/armory) "lF" = ( -/obj/item/weapon/gun/energy/frontier/locked/carbine, -/obj/item/weapon/gun/energy/frontier/locked/carbine, -/obj/item/weapon/gun/energy/frontier/locked/carbine, -/obj/item/weapon/gun/energy/frontier/locked/carbine, -/obj/item/weapon/gun/energy/frontier/locked/holdout, -/obj/item/weapon/gun/energy/frontier/locked/holdout, -/obj/item/weapon/gun/energy/frontier/locked/holdout, -/obj/item/weapon/gun/energy/frontier/locked/holdout, +/obj/item/weapon/gun/energy/locked/frontier/carbine/unlocked, +/obj/item/weapon/gun/energy/locked/frontier/carbine/unlocked, +/obj/item/weapon/gun/energy/locked/frontier/carbine/unlocked, +/obj/item/weapon/gun/energy/locked/frontier/carbine/unlocked, +/obj/item/weapon/gun/energy/locked/frontier/holdout/unlocked, +/obj/item/weapon/gun/energy/locked/frontier/holdout/unlocked, +/obj/item/weapon/gun/energy/locked/frontier/holdout/unlocked, +/obj/item/weapon/gun/energy/locked/frontier/holdout/unlocked, /obj/structure/closet/secure_closet/guncabinet{ req_one_access = list(103) }, @@ -7145,8 +7128,8 @@ /obj/item/weapon/cell/device/weapon, /obj/item/weapon/cell/device/weapon, /obj/item/weapon/cell/device/weapon, -/obj/item/weapon/gun/energy/protector, -/obj/item/weapon/gun/energy/protector, +/obj/item/weapon/gun/energy/gun/protector, +/obj/item/weapon/gun/energy/gun/protector, /turf/simulated/floor/tiled/steel_grid, /area/mothership/armory) "nc" = ( @@ -8642,7 +8625,7 @@ /turf/simulated/floor/tiled/techmaint, /area/mothership/telecomms2) "pO" = ( -/obj/machinery/telecomms/server/presets/centcomm, +/obj/machinery/telecomms/allinone, /turf/simulated/floor/greengrid, /area/mothership/telecomms2) "pP" = ( @@ -10085,7 +10068,7 @@ /turf/simulated/floor/wood, /area/mothership/breakroom) "uh" = ( -/obj/machinery/pointdefense{ +/obj/machinery/power/pointdefense{ id_tag = "warship_pd" }, /turf/simulated/floor/reinforced/airless{ @@ -10609,6 +10592,11 @@ icon_state = "warning"; dir = 4 }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/teleporter) "Hs" = ( @@ -21439,9 +21427,9 @@ cr QH JJ dP -eh +ex eA -eS +eh fd fA fU diff --git a/maps/tether/submaps/om_ships/generic_shuttle.dm b/maps/tether/submaps/om_ships/generic_shuttle.dm new file mode 100644 index 00000000000..53d3df1fd37 --- /dev/null +++ b/maps/tether/submaps/om_ships/generic_shuttle.dm @@ -0,0 +1,52 @@ +// Compile in the map for CI testing if we're testing compileability of all the maps +#if MAP_TEST +#include "generic_shuttle.dmm" +#endif + +// Map template for spawning the shuttle +/datum/map_template/om_ships/hybrid + name = "OM Ship - Generic Shuttle" + desc = "A small privately-owned vessel." + mappath = 'generic_shuttle.dmm' + annihilate = TRUE + +// The shuttle's area(s) +/area/shuttle/generic_shuttle/eng + name = "\improper Private Vessel - Engineering" + icon_state = "shuttle2" + requires_power = 1 + +/area/shuttle/generic_shuttle/gen + name = "\improper Private Vessel - General" + icon_state = "shuttle2" + requires_power = 1 + +// The shuttle's 'shuttle' computer +/obj/machinery/computer/shuttle_control/explore/generic_shuttle + name = "short jump console" + shuttle_tag = "Private Vessel" + req_one_access = list(access_pilot) + +// A shuttle lateloader landmark +/obj/effect/shuttle_landmark/shuttle_initializer/generic_shuttle + name = "Origin - Private Vessel" + base_area = /area/space + base_turf = /turf/space + landmark_tag = "omship_spawn_generic_shuttle" + shuttle_type = /datum/shuttle/autodock/overmap/generic_shuttle + +// The 'shuttle' +/datum/shuttle/autodock/overmap/generic_shuttle + name = "Private Vessel" + current_location = "omship_spawn_generic_shuttle" + docking_controller_tag = "generic_shuttle_docker" + shuttle_area = list(/area/shuttle/generic_shuttle/eng, /area/shuttle/generic_shuttle/gen) + defer_initialisation = TRUE //We're not loaded until an admin does it + +// The 'ship' +/obj/effect/overmap/visitable/ship/landable/generic_shuttle + name = "Private Vessel" + desc = "A small privately-owned vessel." + vessel_mass = 1000 + vessel_size = SHIP_SIZE_TINY + shuttle = "Private Vessel" \ No newline at end of file diff --git a/maps/tether/submaps/om_ships/generic_shuttle.dmm b/maps/tether/submaps/om_ships/generic_shuttle.dmm new file mode 100644 index 00000000000..5f7902932c0 --- /dev/null +++ b/maps/tether/submaps/om_ships/generic_shuttle.dmm @@ -0,0 +1,1165 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/template_noop, +/area/template_noop) +"ab" = ( +/turf/simulated/wall/shull, +/area/shuttle/generic_shuttle/gen) +"ac" = ( +/obj/machinery/shipsensors{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor/orange{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor/orange{ + dir = 8 + }, +/turf/simulated/shuttle/plating/airless, +/area/shuttle/generic_shuttle/gen) +"ad" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/gen) +"ae" = ( +/obj/structure/fitness/weightlifter, +/turf/simulated/floor/wood, +/area/shuttle/generic_shuttle/gen) +"af" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet, +/obj/structure/closet/walllocker/emerglocker/east, +/turf/simulated/floor/wood, +/area/shuttle/generic_shuttle/gen) +"ag" = ( +/obj/structure/flora/pottedplant{ + icon_state = "plant-21" + }, +/turf/simulated/floor/wood, +/area/shuttle/generic_shuttle/gen) +"ah" = ( +/obj/structure/table/standard, +/obj/machinery/recharger, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/shuttle/generic_shuttle/gen) +"ai" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/wood, +/area/shuttle/generic_shuttle/gen) +"aj" = ( +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + icon_state = "map_vent_out"; + dir = 8 + }, +/turf/simulated/floor/wood, +/area/shuttle/generic_shuttle/gen) +"ak" = ( +/obj/machinery/light/small{ + dir = 8; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + icon_state = "map_vent_out"; + dir = 4 + }, +/turf/simulated/floor/wood, +/area/shuttle/generic_shuttle/gen) +"al" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 6 + }, +/turf/simulated/floor/wood, +/area/shuttle/generic_shuttle/gen) +"am" = ( +/obj/structure/table/standard, +/obj/machinery/recharger, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 8 + }, +/turf/simulated/floor/wood, +/area/shuttle/generic_shuttle/gen) +"an" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/voidcraft, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"ao" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/voidcraft, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"ap" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled{ + icon_state = "techmaint" + }, +/area/shuttle/generic_shuttle/gen) +"aq" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"ar" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"as" = ( +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"at" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"au" = ( +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 9 + }, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"av" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + icon_state = "map_vent_out"; + dir = 8 + }, +/turf/simulated/floor/tiled{ + icon_state = "techmaint" + }, +/area/shuttle/generic_shuttle/gen) +"aw" = ( +/obj/machinery/light{ + dir = 8; + icon_state = "tube1" + }, +/turf/simulated/floor/tiled{ + icon_state = "techmaint" + }, +/area/shuttle/generic_shuttle/gen) +"ax" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"ay" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/generic_shuttle/gen) +"az" = ( +/obj/machinery/computer/ship/helm{ + req_one_access = newlist() + }, +/obj/effect/floor_decal/techfloor/orange{ + icon_state = "techfloororange_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/generic_shuttle/gen) +"aA" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/generic_shuttle/gen) +"aB" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central6{ + icon_state = "steel_decals_central6"; + dir = 4 + }, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"aC" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/structure/fitness/punchingbag, +/turf/simulated/floor/tiled{ + icon_state = "techmaint" + }, +/area/shuttle/generic_shuttle/gen) +"aD" = ( +/obj/structure/bed/chair/bay/chair, +/turf/simulated/floor/tiled{ + icon_state = "techmaint" + }, +/area/shuttle/generic_shuttle/gen) +"aE" = ( +/obj/effect/floor_decal/steeldecal/steel_decals3, +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central6, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"aF" = ( +/obj/machinery/computer/ship/sensors{ + icon_state = "computer"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor/orange{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/generic_shuttle/gen) +"aG" = ( +/obj/structure/bed/chair/bay/comfy/green{ + icon_state = "bay_comfychair_preview"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/generic_shuttle/gen) +"aH" = ( +/obj/machinery/computer/ship/engines{ + icon_state = "computer"; + dir = 8 + }, +/obj/effect/floor_decal/techfloor/orange{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/generic_shuttle/gen) +"aI" = ( +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 4 + }, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"aJ" = ( +/turf/simulated/floor/tiled{ + icon_state = "techmaint" + }, +/area/shuttle/generic_shuttle/gen) +"aK" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/gen) +"aL" = ( +/obj/item/modular_computer/tablet/preset/custom_loadout/standard, +/obj/structure/table/standard, +/turf/simulated/floor/tiled{ + icon_state = "techmaint" + }, +/area/shuttle/generic_shuttle/gen) +"aM" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"aN" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/generic_shuttle/gen) +"aO" = ( +/obj/effect/floor_decal/techfloor/orange, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/generic_shuttle/gen) +"aP" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/generic_shuttle/gen) +"aQ" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"aR" = ( +/obj/machinery/computer/shuttle_control/explore/generic_shuttle{ + req_one_access = newlist() + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"aS" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/gen) +"aT" = ( +/obj/structure/bed/chair/bay/chair{ + icon_state = "bay_chair_preview"; + dir = 1 + }, +/turf/simulated/floor/tiled{ + icon_state = "techmaint" + }, +/area/shuttle/generic_shuttle/gen) +"aU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"aV" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"aW" = ( +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 1 + }, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"aX" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"aY" = ( +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"aZ" = ( +/obj/structure/bed/chair/bay/chair{ + icon_state = "bay_chair_preview"; + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"ba" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central1, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"bb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"bc" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central5, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"bd" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central7, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -28 + }, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"be" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/obj/effect/floor_decal/industrial/outline, +/turf/simulated/floor/tiled{ + icon_state = "techmaint" + }, +/area/shuttle/generic_shuttle/gen) +"bf" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + icon_state = "map_vent_out"; + dir = 4 + }, +/turf/simulated/floor/tiled{ + icon_state = "techmaint" + }, +/area/shuttle/generic_shuttle/gen) +"bg" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"bh" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 8 + }, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/gen) +"bi" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 8 + }, +/turf/simulated/floor/tiled{ + icon_state = "techmaint" + }, +/area/shuttle/generic_shuttle/gen) +"bj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/turf/simulated/wall/shull, +/area/shuttle/generic_shuttle/gen) +"bk" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/turf/simulated/wall/shull, +/area/shuttle/generic_shuttle/gen) +"bl" = ( +/obj/machinery/smartfridge{ + density = 0; + pixel_y = -32 + }, +/turf/simulated/floor/tiled{ + icon_state = "techmaint" + }, +/area/shuttle/generic_shuttle/gen) +"bm" = ( +/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{ + icon_state = "techmaint" + }, +/area/shuttle/generic_shuttle/gen) +"bn" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled{ + icon_state = "techmaint" + }, +/area/shuttle/generic_shuttle/gen) +"bo" = ( +/obj/machinery/door/airlock/glass_external, +/obj/effect/map_helper/airlock/door/int_door, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/gen) +"bp" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "expshuttle_vent" + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + frequency = 1380; + id_tag = "generic_shuttle_docker"; + pixel_y = 28 + }, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/gen) +"bq" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "expshuttle_vent" + }, +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/airlock_sensor{ + pixel_y = 28 + }, +/obj/effect/shuttle_landmark/shuttle_initializer/generic_shuttle, +/obj/effect/overmap/visitable/ship/landable/generic_shuttle, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/gen) +"br" = ( +/obj/machinery/door/airlock/glass_external, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/effect/map_helper/airlock/door/ext_door, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/gen) +"bs" = ( +/turf/simulated/wall/shull, +/area/shuttle/generic_shuttle/eng) +"bt" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/voidcraft, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/generic_shuttle/eng) +"bu" = ( +/obj/machinery/power/terminal, +/obj/structure/cable, +/turf/simulated/wall/shull, +/area/shuttle/generic_shuttle/eng) +"bv" = ( +/obj/machinery/atmospherics/pipe/simple/visible/blue{ + icon_state = "intact"; + dir = 6 + }, +/obj/structure/table/standard, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/fiftyspawner/steel, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/eng) +"bw" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/eng) +"bx" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/visible/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/eng) +"by" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/eng) +"bz" = ( +/obj/machinery/computer/ship/navigation/telescreen{ + pixel_y = 28 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/eng) +"bA" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/eng) +"bB" = ( +/obj/machinery/power/smes/buildable/point_of_interest, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/eng) +"bC" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/eng) +"bD" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/eng) +"bE" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/eng) +"bF" = ( +/obj/machinery/recharge_station, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/eng) +"bG" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + icon_state = "map_vent_out"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/eng) +"bH" = ( +/obj/structure/table/standard, +/obj/machinery/cell_charger, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/eng) +"bI" = ( +/obj/structure/sign/atmos/air{ + pixel_x = -32 + }, +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/tiled/monofloor{ + dir = 1 + }, +/area/shuttle/generic_shuttle/eng) +"bJ" = ( +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/eng) +"bK" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/eng) +"bL" = ( +/obj/machinery/light/small{ + dir = 8; + pixel_y = 0 + }, +/obj/structure/table/standard, +/obj/item/weapon/storage/box/metalfoam, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/eng) +"bM" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/eng) +"bN" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/structure/sign/atmos/phoron{ + pixel_x = 32 + }, +/obj/machinery/portable_atmospherics/canister/phoron, +/turf/simulated/floor/tiled/monofloor{ + dir = 1 + }, +/area/shuttle/generic_shuttle/eng) +"bO" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/structure/sign/atmos/co2{ + pixel_x = -32 + }, +/obj/machinery/portable_atmospherics/canister/empty, +/turf/simulated/floor/tiled/monofloor, +/area/shuttle/generic_shuttle/eng) +"bP" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/eng) +"bQ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/eng) +"bR" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow, +/turf/simulated/floor/plating, +/area/shuttle/generic_shuttle/eng) +"bS" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/phoron, +/turf/simulated/floor/tiled/monofloor, +/area/shuttle/generic_shuttle/eng) +"bT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 6 + }, +/turf/simulated/wall/shull, +/area/shuttle/generic_shuttle/eng) +"bU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/turf/simulated/wall/shull, +/area/shuttle/generic_shuttle/eng) +"bV" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/yellow, +/turf/simulated/wall/shull, +/area/shuttle/generic_shuttle/eng) +"bW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 10 + }, +/turf/simulated/wall/shull, +/area/shuttle/generic_shuttle/eng) +"bX" = ( +/obj/machinery/atmospherics/unary/engine{ + dir = 1 + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/generic_shuttle/eng) + +(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 +"} +(2,1,1) = {" +aa +aa +aa +ab +ab +ab +ab +ab +ab +aK +aK +ab +ab +ab +bs +bs +bs +bs +bs +bs +aa +aa +"} +(3,1,1) = {" +aa +ab +ab +ab +ah +ab +ap +aw +aD +aL +aT +aJ +bf +bl +bs +bv +bC +bI +bO +bs +bs +aa +"} +(4,1,1) = {" +aa +aa +ad +ae +ai +an +aq +ax +aE +aM +aU +ba +bg +aJ +bs +bw +bD +bJ +bP +bT +bX +aa +"} +(5,1,1) = {" +aa +aa +ad +af +aj +ab +ar +ay +aF +aN +aV +bb +bh +bm +bt +bx +bE +bK +bQ +bU +bs +aa +"} +(6,1,1) = {" +aa +ac +ab +ab +ab +ab +as +az +aG +aO +aW +bc +bi +bn +bs +by +bs +bs +bM +bV +aa +aa +"} +(7,1,1) = {" +aa +aa +ad +ag +ak +ab +at +aA +aH +aP +aX +bd +ab +bo +bs +bz +bF +bL +bP +bU +bs +aa +"} +(8,1,1) = {" +aa +aa +ad +af +al +ao +au +aB +aI +aQ +aY +aY +bj +bp +bs +bA +bG +bM +bR +bW +bX +aa +"} +(9,1,1) = {" +aa +ab +ab +ab +am +ab +av +aC +aJ +aR +aZ +be +bk +bq +bu +bB +bH +bN +bS +bs +bs +aa +"} +(10,1,1) = {" +aa +aa +aa +ab +ab +ab +ab +ab +ab +aS +aS +ab +ab +br +bs +bs +bs +bs +bs +bs +aa +aa +"} +(11,1,1) = {" +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/tether/submaps/om_ships/mercenarybase.dm b/maps/tether/submaps/om_ships/mercenarybase.dm new file mode 100644 index 00000000000..2dd9c067133 --- /dev/null +++ b/maps/tether/submaps/om_ships/mercenarybase.dm @@ -0,0 +1,47 @@ +// Compile in the map for CI testing if we're testing compileability of all the maps +#if MAP_TEST +#include "mercenarybase.dmm" +#endif + +//The mercenary base's areas +/area/mercbase/ + name = "\improper Asteroid Base" + lightswitch = 1 + icon_state = "red" + +/area/mercbase/roid + name = "\improper Mercenary Base Exterior" +/area/mercbase/hall + name = "\improper Mercenary Base Hallway" +/area/mercbase/eqroom + name = "\improper Mercenary Base Equipment Room" +/area/mercbase/barracks + name = "\improper Mercenary Base Barracks" +/area/mercbase/solar + name = "\improper Mercenary Base Solar Control" +/area/mercbase/medical + name = "\improper Mercenary Base Medical" +/area/mercbase/medicalOR + name = "\improper Mercenary Base Medical - Operating Room" +/area/mercbase/medicalstorage + name = "\improper Mercenary Base Medical Storage" +/area/mercbase/airlock1 + name = "\improper Mercenary Base Airlock" +/area/mercbase/airlock + name = "\improper Mercenary Base Airlock" +/area/mercbase/atmos + name = "\improper Mercenary Base Atmospherics" +/area/mercbase/command + name = "\improper Mercenary Base Command Center" +/area/mercbase/panels + name = "\improper Mercenary Base Solar Panels" +/area/mercbase/power + name = "\improper Mercenary Base SMES Room" +/area/mercbase/engineering + name = "\improper Mercenary Base Engineering" +/area/mercbase/fuel + name = "\improper Mercenary Base Fuel Storage" +/area/mercbase/dock + name = "\improper Mercenary Base Boat Dock" +/area/mercbase/cafeteria + name = "\improper Mercenary Base Boat Cafeteria" \ No newline at end of file diff --git a/maps/tether/submaps/om_ships/mercenarybase.dmm b/maps/tether/submaps/om_ships/mercenarybase.dmm new file mode 100644 index 00000000000..8c7c0ac77b0 --- /dev/null +++ b/maps/tether/submaps/om_ships/mercenarybase.dmm @@ -0,0 +1,23633 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + frequency = 1200; + id_tag = "westpump" + }, +/turf/simulated/floor, +/area/mercbase/airlock) +"ab" = ( +/turf/simulated/wall/rshull, +/area/space) +"ac" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + frequency = 1201; + id_tag = "eastpump" + }, +/turf/simulated/floor/plating, +/area/mercbase/airlock) +"ad" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor, +/area/mercbase/airlock) +"ae" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/obj/machinery/atmospherics/portables_connector/aux{ + icon_state = "map_connector-aux"; + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor, +/area/mercbase/airlock) +"af" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + icon_state = "map-aux"; + dir = 1 + }, +/turf/simulated/floor, +/area/mercbase/airlock) +"ag" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/turf/simulated/floor, +/area/mercbase/airlock) +"ah" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/turf/simulated/floor, +/area/mercbase/airlock) +"ai" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 10 + }, +/turf/simulated/floor, +/area/mercbase/airlock) +"aj" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/binary/passive_gate{ + icon_state = "map"; + dir = 1 + }, +/turf/simulated/floor, +/area/mercbase/airlock) +"ak" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/mercbase/airlock) +"al" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 8 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/mercbase/airlock) +"am" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + icon_state = "map-aux"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/mercbase/airlock) +"an" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 5 + }, +/turf/simulated/floor/plating, +/area/mercbase/airlock) +"ao" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/mercbase/airlock) +"ap" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + icon_state = "map_universal"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/mercbase/airlock) +"aq" = ( +/obj/structure/cable, +/turf/space, +/area/space) +"ar" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/mercbase/airlock) +"as" = ( +/obj/machinery/atmospherics/binary/passive_gate{ + icon_state = "map"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/mercbase/airlock) +"at" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 5 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/mercbase/airlock) +"au" = ( +/obj/machinery/airlock_sensor/airlock_exterior{ + frequency = 1200; + id_tag = "westairlock"; + master_tag = "westexteriorsensor"; + pixel_w = 26 + }, +/turf/simulated/mineral/floor, +/area/mercbase/roid) +"av" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + frequency = 1200; + id_tag = "westpump" + }, +/obj/machinery/airlock_sensor/airlock_interior{ + frequency = 1200; + id_tag = "westairlock"; + master_tag = "westchambersensor"; + pixel_z = 23 + }, +/turf/simulated/floor, +/area/mercbase/airlock) +"aw" = ( +/obj/machinery/airlock_sensor/airlock_interior{ + frequency = 1200; + id_tag = "westairlock"; + master_tag = "westinteriorsensor"; + pixel_z = 23 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"aH" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/space, +/area/space) +"aK" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/space, +/area/space) +"aL" = ( +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/turf/space, +/area/space) +"aM" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/space, +/area/space) +"aN" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/space, +/area/space) +"aO" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/space, +/area/space) +"aP" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/space, +/area/space) +"bx" = ( +/obj/machinery/power/tracker{ + id = "syndsol" + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/mercbase/panels) +"cQ" = ( +/obj/machinery/power/solar, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/simulated/floor/plating, +/area/mercbase/panels) +"de" = ( +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"dD" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"fq" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/barracks) +"fK" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/power) +"fM" = ( +/turf/simulated/mineral/floor, +/area/mercbase/roid) +"fN" = ( +/turf/simulated/mineral, +/area/mercbase/roid) +"fO" = ( +/turf/simulated/floor/plating, +/area/mercbase/roid) +"fP" = ( +/turf/simulated/floor/plating, +/area/mercbase/panels) +"fQ" = ( +/turf/simulated/floor, +/area/mercbase/roid) +"fR" = ( +/turf/simulated/wall/r_wall, +/area/mercbase/command) +"fS" = ( +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"fT" = ( +/turf/simulated/wall/r_wall, +/area/mercbase/barracks) +"fU" = ( +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"fW" = ( +/turf/simulated/floor/tiled/dark, +/area/mercbase/barracks) +"fX" = ( +/obj/machinery/atmospherics/pipe/tank/air, +/turf/simulated/floor, +/area/mercbase/atmos) +"fY" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"fZ" = ( +/turf/simulated/floor/plating, +/area/mercbase/airlock) +"ga" = ( +/turf/simulated/wall/r_wall, +/area/mercbase/airlock) +"gb" = ( +/turf/simulated/floor, +/area/mercbase/atmos) +"gc" = ( +/turf/simulated/wall/r_wall, +/area/mercbase/hall) +"gd" = ( +/turf/simulated/wall/r_wall, +/area/mercbase/medical) +"ge" = ( +/turf/simulated/wall/r_wall, +/area/mercbase/engineering) +"gf" = ( +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"gg" = ( +/turf/simulated/wall/r_wall, +/area/mercbase/fuel) +"gh" = ( +/turf/simulated/wall/r_wall, +/area/mercbase/eqroom) +"gi" = ( +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"gj" = ( +/turf/simulated/floor/tiled/dark, +/area/mercbase/solar) +"gk" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"gl" = ( +/turf/simulated/wall/r_wall, +/area/mercbase/atmos) +"gm" = ( +/turf/simulated/floor, +/area/mercbase/fuel) +"gn" = ( +/obj/machinery/atmospherics/pipe/tank/phoron, +/turf/simulated/floor, +/area/mercbase/fuel) +"go" = ( +/obj/machinery/atmospherics/portables_connector/fuel, +/turf/simulated/floor, +/area/mercbase/fuel) +"gp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/obj/machinery/meter, +/turf/simulated/floor, +/area/mercbase/fuel) +"gq" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/machinery/computer/operating, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalOR) +"gr" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel, +/turf/simulated/floor, +/area/mercbase/fuel) +"gs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 9 + }, +/turf/simulated/floor, +/area/mercbase/fuel) +"gt" = ( +/obj/machinery/atmospherics/binary/pump/fuel, +/turf/simulated/floor, +/area/mercbase/fuel) +"gu" = ( +/obj/machinery/atmospherics/binary/pump/fuel{ + icon_state = "map_off-fuel"; + dir = 1 + }, +/turf/simulated/floor, +/area/mercbase/fuel) +"gv" = ( +/obj/structure/window/reinforced{ + icon_state = "rwindow"; + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/phoron, +/turf/simulated/floor, +/area/mercbase/fuel) +"gw" = ( +/obj/machinery/portable_atmospherics/canister/phoron, +/turf/simulated/floor, +/area/mercbase/fuel) +"gx" = ( +/obj/machinery/atmospherics/binary/pump, +/turf/simulated/floor, +/area/mercbase/atmos) +"gy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + icon_state = "map_universal"; + dir = 4 + }, +/turf/simulated/floor, +/area/mercbase/atmos) +"gz" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/black, +/turf/simulated/floor, +/area/mercbase/atmos) +"gA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + icon_state = "intact"; + dir = 9 + }, +/turf/simulated/floor, +/area/mercbase/atmos) +"gB" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/power) +"gC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor, +/area/mercbase/atmos) +"gD" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/power) +"gE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/turf/simulated/floor, +/area/mercbase/atmos) +"gF" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor, +/area/mercbase/atmos) +"gG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor, +/area/mercbase/atmos) +"gH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + icon_state = "intact"; + dir = 6 + }, +/turf/simulated/floor, +/area/mercbase/atmos) +"gI" = ( +/obj/machinery/atmospherics/binary/pump{ + icon_state = "map_off"; + dir = 4 + }, +/turf/simulated/floor, +/area/mercbase/atmos) +"gJ" = ( +/obj/machinery/atmospherics/portables_connector{ + icon_state = "map_connector"; + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/empty, +/turf/simulated/floor, +/area/mercbase/atmos) +"gK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor, +/area/mercbase/atmos) +"gL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/turf/simulated/floor, +/area/mercbase/atmos) +"gM" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor, +/area/mercbase/atmos) +"gN" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/black, +/obj/machinery/meter, +/turf/simulated/floor, +/area/mercbase/atmos) +"gO" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/mercbase/command) +"gQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 5 + }, +/turf/simulated/floor, +/area/mercbase/airlock) +"gR" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"gS" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -32 + }, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"gT" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"gU" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/mercbase/engineering) +"gV" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/power) +"gW" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/barracks) +"gX" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"gY" = ( +/turf/simulated/floor/tiled/dark, +/area/mercbase/power) +"gZ" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -32 + }, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalOR) +"ha" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalOR) +"hb" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"hc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"hd" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Modified Security Airlock"; + req_one_access = list(150) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"he" = ( +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/mercbase/engineering) +"hf" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/aux, +/turf/simulated/floor, +/area/mercbase/airlock) +"hg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"hh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"hi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"hj" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"hk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 5 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/barracks) +"hl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/barracks) +"hm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/barracks) +"hn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"ho" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/barracks) +"hp" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Modified Security Airlock"; + req_one_access = list(150) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"hq" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"hr" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/dispenser/oxygen, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"hs" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/suit_cycler/syndicate, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"hu" = ( +/obj/machinery/atmospherics/portables_connector/aux, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor/plating, +/area/mercbase/airlock) +"hv" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"hw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/turf/simulated/floor, +/area/mercbase/airlock) +"hy" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"hz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/turf/simulated/floor, +/area/mercbase/airlock) +"hB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 10 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"hC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"hD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"hE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"hF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"hG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 9 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"hH" = ( +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalOR) +"hI" = ( +/turf/simulated/wall/r_wall, +/area/mercbase/medicalstorage) +"hJ" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalstorage) +"hK" = ( +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"hL" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/structure/closet/hydrant{ + pixel_w = -32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/solar) +"hM" = ( +/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/tiled/dark, +/area/mercbase/medical) +"hN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"hO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalstorage) +"hP" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/obj/structure/closet/syndicate{ + desc = "Contains uniforms, boots and assorted apparel."; + name = "armoury closet" + }, +/obj/item/clothing/under/syndicate, +/obj/item/clothing/shoes/boots/tactical, +/obj/item/clothing/shoes/boots/jackboots, +/obj/item/clothing/head/beret, +/obj/item/clothing/gloves/black, +/obj/item/clothing/glasses/sunglasses/aviator, +/obj/item/clothing/accessory/permit/gun, +/obj/item/clothing/accessory/holster/leg, +/obj/item/device/flashlight/maglight, +/obj/item/device/flash, +/obj/item/device/gps/syndie, +/obj/item/weapon/storage/belt/security/tactical, +/obj/item/weapon/storage/backpack/dufflebag/syndie, +/obj/item/clothing/accessory/storage/black_vest, +/obj/item/clothing/accessory/storage/black_drop_pouches, +/turf/simulated/floor/tiled/dark, +/area/mercbase/barracks) +"hQ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"hR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalOR) +"hS" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + icon_state = "map_vent_out"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"hT" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"hU" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"hV" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"hW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalOR) +"hX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/mercbase/airlock) +"hY" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/aux, +/turf/simulated/floor/plating, +/area/mercbase/airlock) +"hZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 9 + }, +/turf/simulated/floor/plating, +/area/mercbase/airlock) +"ia" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"ib" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"id" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/closet/hydrant{ + pixel_w = -32 + }, +/turf/simulated/floor, +/area/mercbase/airlock) +"ie" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/mercbase/airlock) +"if" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/atmos{ + name = "Modified Atmospherics Airlock"; + req_one_access = list(150) + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/airlock) +"ig" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"ih" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"ii" = ( +/obj/structure/closet/syndicate{ + desc = "Contains uniforms, boots and assorted apparel."; + name = "armoury closet" + }, +/obj/item/clothing/under/syndicate, +/obj/item/clothing/shoes/boots/tactical, +/obj/item/clothing/shoes/boots/jackboots, +/obj/item/clothing/head/beret, +/obj/item/clothing/gloves/black, +/obj/item/clothing/glasses/sunglasses/aviator, +/obj/item/clothing/accessory/permit/gun, +/obj/item/clothing/accessory/holster/leg, +/obj/item/device/flashlight/maglight, +/obj/item/device/flash, +/obj/item/device/gps/syndie, +/obj/item/weapon/storage/belt/security/tactical, +/obj/item/weapon/storage/backpack/dufflebag/syndie, +/obj/item/clothing/accessory/storage/black_vest, +/obj/item/clothing/accessory/storage/black_drop_pouches, +/turf/simulated/floor/tiled/dark, +/area/mercbase/barracks) +"ij" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalstorage) +"ik" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 5 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalstorage) +"il" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalOR) +"im" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/power) +"in" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/solar) +"io" = ( +/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" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/power) +"ip" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/power) +"iq" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalstorage) +"is" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -32 + }, +/obj/machinery/power/terminal, +/obj/structure/cable, +/turf/simulated/floor/tiled/dark, +/area/mercbase/barracks) +"iw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/solar) +"ix" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/power) +"iy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/door/airlock/glass_security{ + name = "Modified Security Airlock"; + req_one_access = list(150) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"iB" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + icon_state = "map_vent_out"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"iC" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/dark, +/area/mercbase/barracks) +"iD" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/dark, +/area/mercbase/barracks) +"iE" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/solar) +"iF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/closet/hydrant{ + pixel_w = -32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalstorage) +"iG" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/power) +"iH" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/power) +"iI" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/solar) +"iJ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 8 + }, +/obj/structure/closet/hydrant{ + pixel_w = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalOR) +"iK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/door/airlock/glass_security{ + name = "Modified Security Airlock"; + req_one_access = list(150) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"iL" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + icon_state = "map_vent_out"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"iM" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"iN" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + icon_state = "map_vent_out"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"iO" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"iP" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalstorage) +"iQ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalstorage) +"iR" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"iS" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"iU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/closet/hydrant{ + pixel_w = -32 + }, +/turf/simulated/floor, +/area/mercbase/atmos) +"iV" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"iW" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor, +/area/mercbase/airlock) +"iX" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"iY" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"iZ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor, +/area/mercbase/atmos) +"ja" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor, +/area/mercbase/fuel) +"jb" = ( +/obj/machinery/atmospherics/portables_connector, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"jc" = ( +/obj/structure/closet/hydrant{ + pixel_w = -32 + }, +/obj/structure/bed/roller, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"jd" = ( +/obj/machinery/atmospherics/unary/cryo_cell, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"je" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/purple{ + icon_state = "intact"; + dir = 5 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"jf" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/purple, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"jg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/purple{ + icon_state = "intact"; + dir = 9 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"jh" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalstorage) +"ji" = ( +/obj/machinery/door/airlock/security{ + name = "Modified Security Airlock"; + req_one_access = list(150) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"jj" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalstorage) +"jk" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"jl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"jm" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"jn" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"jo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"jp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"jq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"jr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"js" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"ju" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 1 + }, +/turf/simulated/floor, +/area/mercbase/fuel) +"jw" = ( +/obj/machinery/power/solar, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/mercbase/panels) +"jx" = ( +/obj/machinery/power/solar, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/mercbase/panels) +"jy" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/mercbase/panels) +"jz" = ( +/obj/machinery/power/solar, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/mercbase/panels) +"jA" = ( +/obj/machinery/power/solar_control/config_start{ + dir = 8; + icon_state = "solar"; + id = "syndsol" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/solar) +"jB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"jC" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"jE" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/mercbase/roid) +"jF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/mercbase/panels) +"jG" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/mercbase/panels) +"jH" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/mercbase/panels) +"jI" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/mercbase/panels) +"jJ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/mercbase/panels) +"jK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"jL" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/mercbase/panels) +"jM" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/mercbase/atmos) +"jN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 1; + pixel_y = 25 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"jP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/security{ + name = "Modified Security Airlock"; + req_one_access = list(150) + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"jQ" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"jS" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + icon_state = "map_vent_out"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor, +/area/mercbase/fuel) +"jT" = ( +/obj/machinery/door/airlock/glass_external, +/turf/simulated/floor, +/area/mercbase/airlock) +"jU" = ( +/obj/machinery/door/airlock/glass_external, +/turf/simulated/floor/plating, +/area/mercbase/hall) +"jV" = ( +/obj/machinery/door/airlock/glass_external, +/turf/simulated/floor/plating, +/area/mercbase/airlock) +"jW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/obj/machinery/door/airlock/glass_external, +/turf/simulated/floor, +/area/mercbase/airlock) +"jX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/obj/machinery/door/airlock/glass_external, +/turf/simulated/floor/plating, +/area/mercbase/hall) +"jY" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"jZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor, +/area/mercbase/fuel) +"ka" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"kb" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"kc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"kd" = ( +/obj/structure/sign/department/dock, +/turf/simulated/wall/r_wall, +/area/mercbase/command) +"ke" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"kf" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"kg" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/mercbase/airlock) +"kh" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/mercbase/fuel) +"ki" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/mercbase/roid) +"kj" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/mercbase/roid) +"kk" = ( +/obj/machinery/power/smes, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"kl" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"km" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 5 + }, +/obj/machinery/light, +/turf/simulated/floor, +/area/mercbase/airlock) +"kn" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/mercbase/roid) +"ko" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"kp" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"kq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"kr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 6 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"ks" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/door/airlock/security{ + name = "Modified Security Airlock"; + req_one_access = list(150) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/mercbase/barracks) +"kx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/mercbase/atmos) +"ky" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/mercbase/atmos) +"kz" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor, +/area/mercbase/atmos) +"kA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 1; + pixel_y = 25 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"kB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/medical{ + name = "Modified Medical Airlock"; + req_one_access = list(150) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"kC" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/closet/hydrant{ + pixel_w = -32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"kD" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"kE" = ( +/obj/machinery/light, +/obj/structure/closet/syndicate{ + desc = "Contains uniforms, boots and assorted apparel."; + name = "armoury closet" + }, +/obj/item/clothing/accessory/armband/med/cross, +/obj/item/clothing/accessory/armband/med/cross, +/obj/item/clothing/accessory/armband/engine, +/obj/item/clothing/accessory/armband/engine, +/obj/item/clothing/accessory/armband, +/obj/item/clothing/accessory/armband, +/turf/simulated/floor/tiled/dark, +/area/mercbase/barracks) +"kF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"kG" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -25 + }, +/obj/structure/closet/syndicate{ + desc = "Contains uniforms, boots and assorted apparel."; + name = "armoury closet" + }, +/obj/item/clothing/under/syndicate, +/obj/item/clothing/shoes/boots/tactical, +/obj/item/clothing/shoes/boots/jackboots, +/obj/item/clothing/head/beret, +/obj/item/clothing/gloves/black, +/obj/item/clothing/glasses/sunglasses/aviator, +/obj/item/clothing/accessory/permit/gun, +/obj/item/clothing/accessory/holster/leg, +/obj/item/device/flashlight/maglight, +/obj/item/device/flash, +/obj/item/device/gps/syndie, +/obj/item/weapon/storage/belt/security/tactical, +/obj/item/weapon/storage/backpack/dufflebag/syndie, +/obj/item/clothing/accessory/storage/black_vest, +/obj/item/clothing/accessory/storage/black_drop_pouches, +/turf/simulated/floor/tiled/dark, +/area/mercbase/barracks) +"kH" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"kI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 1; + pixel_y = 25 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"kJ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"kK" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"kL" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"kM" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/turf/simulated/floor, +/area/mercbase/airlock) +"kN" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"kO" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/mercbase/airlock) +"kP" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/power) +"kQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/solar) +"kR" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"kS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"kT" = ( +/obj/machinery/atmospherics/unary/freezer, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"kU" = ( +/obj/structure/table/rack, +/obj/item/roller/adv, +/obj/item/roller/adv, +/obj/item/roller/adv, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalstorage) +"kV" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"kW" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/turf/simulated/floor, +/area/mercbase/atmos) +"kX" = ( +/obj/machinery/atmospherics/portables_connector/fuel, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor, +/area/mercbase/fuel) +"kY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/light, +/turf/simulated/floor, +/area/mercbase/atmos) +"kZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + icon_state = "intact"; + dir = 8 + }, +/obj/machinery/meter, +/obj/machinery/light, +/turf/simulated/floor, +/area/mercbase/atmos) +"lB" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 32 + }, +/obj/structure/closet/secure_closet/chemical{ + req_access = list(150) + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalstorage) +"lC" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -32 + }, +/obj/machinery/power/terminal, +/obj/structure/cable, +/obj/structure/table/reinforced, +/obj/item/device/healthanalyzer/advanced, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"lD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -25 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"lE" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"lF" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"lG" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/mercbase/airlock) +"lH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/mercbase/atmos) +"lJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 5 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/mercbase/fuel) +"lK" = ( +/obj/structure/bed/padded, +/turf/simulated/floor/tiled/dark, +/area/mercbase/barracks) +"lL" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/obj/structure/bed/padded, +/turf/simulated/floor/tiled/dark, +/area/mercbase/barracks) +"lM" = ( +/obj/machinery/light, +/obj/structure/bed/padded, +/turf/simulated/floor/tiled/dark, +/area/mercbase/barracks) +"lN" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/clothing/suit/armor/combat, +/obj/item/clothing/shoes/leg_guard/combat, +/obj/item/clothing/gloves/arm_guard/combat, +/obj/item/clothing/head/helmet/merc, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"lO" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/firstaid/combat, +/obj/item/weapon/storage/firstaid/combat, +/obj/item/weapon/storage/firstaid/combat, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"lP" = ( +/obj/structure/table/rack, +/obj/item/clothing/head/helmet/space/void/merc, +/obj/item/clothing/head/helmet/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, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"lQ" = ( +/obj/structure/closet/syndicate{ + desc = "Contains uniforms, boots and assorted apparel."; + name = "armoury closet" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/clothing/suit/armor/pcarrier/merc, +/obj/item/clothing/glasses/night, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/accessory/armor/armguards/merc, +/obj/item/clothing/accessory/armor/legguards/merc, +/obj/item/clothing/head/helmet/merc, +/obj/item/weapon/gun/energy/gun, +/obj/item/weapon/grenade/flashbang, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"lR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 1; + pixel_y = 25 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"lS" = ( +/obj/structure/closet/syndicate{ + desc = "Contains uniforms, boots and assorted apparel."; + name = "armoury closet" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/clothing/suit/armor/pcarrier/merc, +/obj/item/clothing/glasses/night, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/accessory/armor/armguards/merc, +/obj/item/clothing/accessory/armor/legguards/merc, +/obj/item/clothing/head/helmet/merc, +/obj/item/weapon/gun/energy/gun, +/obj/item/weapon/grenade/flashbang, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"lT" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -25 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"lU" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/toolbox/syndicate, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"lV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 1; + pixel_y = 25 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"lW" = ( +/obj/machinery/sleep_console, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"lX" = ( +/obj/machinery/bodyscanner, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"lY" = ( +/obj/machinery/body_scanconsole, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"lZ" = ( +/obj/structure/bed/padded, +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/barracks) +"ma" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/firstaid/surgery, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalOR) +"mb" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"mc" = ( +/turf/space, +/area/space) +"md" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/tiled/dark, +/area/mercbase/solar) +"me" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"mf" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/obj/structure/table/reinforced, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"mm" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"mp" = ( +/turf/simulated/wall/r_wall, +/area/mercbase/dock) +"mq" = ( +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"mr" = ( +/turf/simulated/floor/plating, +/area/mercbase/dock) +"ms" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"mt" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -32 + }, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"mu" = ( +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"mv" = ( +/turf/simulated/wall/r_wall, +/area/mercbase/roid) +"mx" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/mercbase/roid) +"my" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"mz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"mA" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"mB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/medical{ + name = "Modified Medical Airlock"; + req_one_access = list(150) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalstorage) +"mC" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"mD" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + icon_state = "map_vent_out"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"mE" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"mF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"mG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"mH" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"mI" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"mJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"mK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"mL" = ( +/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/mercbase/dock) +"mM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"mN" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"mO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"mP" = ( +/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/dark, +/area/mercbase/dock) +"mQ" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"mR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"mS" = ( +/obj/effect/shuttle_landmark{ + base_area = /area/mercbase/dock; + base_turf = /turf/simulated/floor/plating; + landmark_tag = "base_dock"; + name = "base dock" + }, +/turf/simulated/floor/plating, +/area/mercbase/dock) +"mT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"mU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"mV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"mW" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"mX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"mY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"mZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/engineering{ + name = "Modified Engineering Airlock"; + req_one_access = list(150) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"na" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/engineering{ + name = "Modified Engineering Airlock"; + req_one_access = list(150) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"nb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/door/airlock/security{ + name = "Modified Security Airlock"; + req_one_access = list(150) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"nc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"nd" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/closet/secure_closet/freezer/meat{ + req_one_access = list(150) + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"ne" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/closet/crate/freezer/rations, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"nf" = ( +/obj/structure/table/standard, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"ng" = ( +/obj/structure/bed/chair/backed_red, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"nh" = ( +/obj/structure/table/rack, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"ni" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/table/rack, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"nj" = ( +/obj/structure/closet/secure_closet/freezer/fridge{ + req_one_access = list(150) + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"nk" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 1 + }, +/obj/structure/table/standard, +/obj/item/pizzabox/pineapple, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"nl" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + icon_state = "map_vent_out"; + dir = 1 + }, +/obj/structure/table/standard, +/obj/item/pizzabox/pineapple, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"nm" = ( +/obj/machinery/cooker/oven, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"nn" = ( +/obj/machinery/cooker/grill, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"no" = ( +/obj/machinery/cooker/fryer, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"np" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"nq" = ( +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"nr" = ( +/obj/machinery/optable, +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalOR) +"ns" = ( +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/power) +"nt" = ( +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/solar) +"nu" = ( +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"nv" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"nw" = ( +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor, +/area/mercbase/atmos) +"nx" = ( +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"ny" = ( +/obj/machinery/door/airlock/medical{ + name = "Modified Medical Airlock"; + req_one_access = list(150) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"nz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/engineering{ + name = "Modified Engineering Airlock"; + req_one_access = list(150) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"nA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/atmos{ + name = "Modified Atmospherics Airlock"; + req_one_access = list(150) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"nB" = ( +/obj/structure/sign/department/dock, +/turf/simulated/wall/r_wall, +/area/mercbase/dock) +"nC" = ( +/obj/structure/sign/department/conference_room, +/turf/simulated/wall/r_wall, +/area/mercbase/barracks) +"nD" = ( +/obj/structure/sign/department/conference_room, +/turf/simulated/wall/r_wall, +/area/mercbase/hall) +"nE" = ( +/obj/structure/sign/department/commander{ + name = "BARRACKS" + }, +/turf/simulated/wall/r_wall, +/area/mercbase/barracks) +"nF" = ( +/obj/structure/sign/department/armory, +/turf/simulated/wall/r_wall, +/area/mercbase/eqroom) +"nG" = ( +/obj/structure/sign/department/medbay, +/turf/simulated/wall/r_wall, +/area/mercbase/hall) +"nH" = ( +/obj/structure/sign/department/eng, +/turf/simulated/wall/r_wall, +/area/mercbase/hall) +"nI" = ( +/obj/structure/sign/department/atmos, +/turf/simulated/wall/r_wall, +/area/mercbase/hall) +"nJ" = ( +/obj/structure/sign/department/bar, +/turf/simulated/wall/r_wall, +/area/mercbase/hall) +"nK" = ( +/obj/structure/sign/department/eva, +/turf/simulated/wall/r_wall, +/area/mercbase/eqroom) +"nL" = ( +/obj/structure/sign/vacuum, +/turf/simulated/wall/r_wall, +/area/mercbase/hall) +"nM" = ( +/obj/structure/sign/vacuum{ + pixel_x = 0; + pixel_y = 30 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"nN" = ( +/obj/structure/sign/poster, +/turf/simulated/wall/r_wall, +/area/mercbase/barracks) +"nO" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"nP" = ( +/obj/structure/table/rack, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"nQ" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"nR" = ( +/obj/structure/table/standard, +/obj/machinery/microwave, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"nS" = ( +/obj/structure/table/standard, +/obj/item/weapon/soap/syndie, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"nT" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"nU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/glass{ + name = "Secure Glass Airlock"; + req_one_access = list(150) + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"nV" = ( +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"nW" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"nZ" = ( +/obj/structure/closet/secure_closet/medical1{ + req_access = list(150) + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"oa" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalstorage) +"ob" = ( +/obj/machinery/chem_master, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalstorage) +"oc" = ( +/obj/machinery/chemical_analyzer, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalstorage) +"od" = ( +/obj/structure/table/reinforced, +/obj/machinery/chemical_dispenser/biochemistry, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalstorage) +"oe" = ( +/obj/structure/table/reinforced, +/obj/machinery/chemical_dispenser, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalstorage) +"of" = ( +/obj/structure/closet/hydrant{ + pixel_w = -32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) +"og" = ( +/obj/structure/closet/hydrant{ + pixel_w = -32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"oh" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/obj/structure/bed/roller, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"oi" = ( +/obj/structure/closet/hydrant{ + pixel_w = -32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/barracks) +"oj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/obj/machinery/meter, +/obj/structure/closet/hydrant{ + pixel_w = -32 + }, +/turf/simulated/floor, +/area/mercbase/fuel) +"ok" = ( +/obj/structure/closet/hydrant{ + pixel_w = -32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"ol" = ( +/obj/structure/closet/hydrant{ + pixel_w = -32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/dock) +"om" = ( +/obj/structure/closet/hydrant{ + pixel_w = -32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/power) +"on" = ( +/obj/structure/closet/syndicate{ + desc = "Contains uniforms, boots and assorted apparel."; + name = "armoury closet" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/clothing/suit/armor/pcarrier/merc, +/obj/item/clothing/glasses/night, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/accessory/armor/armguards/merc, +/obj/item/clothing/accessory/armor/legguards/merc, +/obj/item/clothing/head/helmet/merc, +/obj/item/weapon/gun/energy/gun, +/obj/item/weapon/grenade/flashbang, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"oo" = ( +/obj/structure/bed/roller, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medical) +"op" = ( +/obj/structure/bed/chair/office/light{ + icon_state = "officechair_white"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalstorage) +"oq" = ( +/obj/item/weapon/gun/projectile/automatic/bullpup, +/obj/item/weapon/gun/projectile/automatic/bullpup, +/obj/item/weapon/gun/projectile/automatic/bullpup, +/obj/item/weapon/gun/projectile/automatic/p90, +/obj/item/weapon/gun/projectile/automatic/p90, +/obj/item/weapon/gun/projectile/automatic/p90, +/obj/structure/closet/secure_closet/guncabinet{ + req_one_access = list(150) + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"or" = ( +/obj/structure/closet/syndicate{ + desc = "Contains uniforms, boots and assorted apparel."; + name = "armoury closet" + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/clothing/suit/armor/pcarrier/merc, +/obj/item/clothing/glasses/night, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/accessory/armor/armguards/merc, +/obj/item/clothing/accessory/armor/legguards/merc, +/obj/item/clothing/head/helmet/merc, +/obj/item/weapon/gun/energy/gun, +/obj/item/weapon/grenade/flashbang, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"os" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/toolbox/electrical, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"ot" = ( +/obj/item/weapon/gun/energy/laser, +/obj/item/weapon/gun/energy/laser, +/obj/item/weapon/gun/energy/laser, +/obj/item/weapon/gun/energy/laser, +/obj/item/weapon/gun/energy/laser, +/obj/item/weapon/gun/energy/laser, +/obj/structure/closet/secure_closet/guncabinet{ + req_one_access = list(150) + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/eqroom) +"ou" = ( +/obj/structure/table/reinforced, +/obj/structure/closet/hydrant{ + pixel_w = -32 + }, +/obj/item/weapon/storage/toolbox/syndicate, +/turf/simulated/floor/tiled/dark, +/area/mercbase/engineering) +"ov" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/firstaid/insiderepair, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalOR) +"ow" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/clotting, +/obj/item/weapon/storage/firstaid/clotting, +/turf/simulated/floor/tiled/dark, +/area/mercbase/medicalstorage) +"ox" = ( +/obj/structure/table/standard, +/obj/item/pizzabox/margherita, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"oy" = ( +/obj/structure/table/standard, +/obj/item/pizzabox/meat, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"oz" = ( +/obj/structure/table/standard, +/obj/item/pizzabox/vegetable, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"oA" = ( +/obj/structure/table/standard, +/obj/item/pizzabox/mushroom, +/turf/simulated/floor/tiled/dark, +/area/mercbase/roid) +"oJ" = ( +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/mercbase/command) +"oK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/atmos{ + name = "Modified Atmospherics Airlock"; + req_one_access = list(150) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/mercbase/hall) + +(1,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(2,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(3,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(4,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(5,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(6,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(7,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(8,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(9,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(10,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(11,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(12,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(13,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(14,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(15,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(16,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(17,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(18,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(19,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(20,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(21,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(22,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(23,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(24,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(25,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(26,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(27,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(28,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(29,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(30,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(31,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(32,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(33,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(34,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(35,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(36,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(37,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(38,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(39,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(40,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(41,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(42,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +fQ +fQ +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(43,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +fM +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fM +fQ +fQ +fM +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(44,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +au +fQ +fQ +fM +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(45,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +fN +fN +fT +fT +fT +fT +fT +fT +gh +gh +gh +gh +gh +gh +jT +jT +ga +ga +ga +ga +ga +ga +ga +gg +gg +gg +gg +gg +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(46,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +fM +fM +fN +fN +fN +fN +fN +fN +fN +fN +nN +lK +oi +fq +is +fT +hU +kC +lN +lN +lN +gh +aa +gQ +ga +ae +lG +iW +id +km +ga +gn +gt +oj +lJ +gg +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(47,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +ab +ab +ab +ab +ab +ab +mc +mc +mc +mc +mc +fM +fM +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fT +hP +fW +gW +kE +fT +kH +kD +gi +gi +kK +gh +kM +hw +ga +af +ag +aj +ah +ad +ga +gn +gt +gp +gr +gg +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(48,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +ab +aq +aL +aO +mc +ab +mc +mc +mc +mc +mc +fM +fM +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +nN +lK +fW +gW +lK +fT +hr +gi +mb +gi +oq +gh +av +hf +ga +ai +hz +hz +hz +ie +ga +go +gu +gp +gr +gg +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(49,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +ab +aH +aM +aP +mc +ab +mc +mc +mc +mc +mc +fM +fM +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fT +ii +fW +gW +ii +fT +hs +gi +mb +gi +ot +gh +jT +jW +nL +gc +gc +gc +gc +oK +gc +kX +gu +gp +gs +gg +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(50,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +ab +aK +aN +mc +mc +ab +mc +mc +mc +mc +mc +fM +fM +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +nN +lK +iC +hk +lK +fT +jN +iL +gi +gi +gi +gh +aw +hh +fU +iY +iN +fU +fU +ig +gc +kh +jS +gm +gm +gg +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(51,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +ab +mc +mc +mc +mc +ab +mc +mc +mc +mc +mc +fM +fM +fN +fN +fN +fN +fN +fN +fR +fR +fR +fR +fT +ii +iD +hl +ii +fT +kA +iM +lP +lP +lP +gh +fU +hB +hi +hj +hy +hi +hi +iX +nz +ja +jZ +ju +gm +gg +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(52,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +ab +ab +ab +ab +ab +ab +mc +mc +mc +mc +mc +fM +fM +fN +fN +fN +fN +fR +fR +fR +oJ +fS +fS +fT +lZ +fW +hm +lK +fT +kI +gi +lQ +on +on +gh +kN +jl +gc +gc +gc +gc +gc +gc +gc +gv +gv +gv +gm +gg +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(53,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +fN +fN +fR +fR +fR +og +hq +fS +fS +fS +fT +ii +fW +hm +kG +fT +kI +gi +gi +gi +lT +gh +fU +jm +nA +gC +iU +lH +gG +gK +gl +gw +gw +gw +gm +gg +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(54,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +fR +fR +fR +gS +fY +fS +gk +hC +fS +fS +nN +lL +fW +hm +lM +fT +lR +gi +gi +gi +kK +gh +fU +jl +nI +kW +kx +gE +gb +kY +gl +gg +gg +gg +gg +gg +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(55,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +fR +fS +hq +dD +fS +fS +fS +hE +iB +fS +fT +ii +fW +ho +ii +fT +lV +gi +lS +or +or +gh +nv +jp +gc +gb +kx +gE +gb +gL +gl +fN +fN +fN +fN +fN +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(56,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +gO +fS +fS +dD +fS +fS +fS +hD +fS +fS +nC +fT +fT +ks +nE +fT +nb +nF +nK +gh +gh +gh +iS +jq +gc +gb +kx +gE +gb +gL +gl +fN +fN +fN +fN +fN +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(57,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +gO +fS +fS +dD +fS +fS +fS +hD +fS +fS +ji +fU +fU +js +fU +of +js +iN +iY +fU +fU +lF +fU +jl +gc +nw +ky +gF +iZ +gM +gl +fN +fN +fM +fM +fM +fM +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(58,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +gO +fS +fS +gR +gX +gX +gX +hb +hc +mN +jP +hg +kF +hv +hg +hg +hv +ib +kJ +hg +ih +kF +hg +jY +gc +jM +kz +gE +gb +gL +gl +fN +fN +fM +fM +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(59,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +gO +fS +fS +fS +fS +fS +fS +hD +fS +mz +nD +gc +gc +gc +gc +gc +gc +gc +nG +fU +jl +gc +jk +kq +gc +gb +gb +gE +gb +gL +gl +fN +fN +fM +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(60,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +fR +fS +iV +fS +fS +fS +fS +hF +iB +mz +gd +jc +jQ +oo +jQ +gf +gf +nZ +gd +fU +jl +kL +fU +jl +gc +gb +gb +gE +gb +gy +gl +fN +fN +fM +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(61,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +fR +fR +fR +fS +fS +fS +gk +hG +fS +mz +gd +oh +lW +oo +lW +gf +hV +lC +gd +fU +jl +fU +fU +jl +gc +kW +gb +gE +gb +kZ +gl +fN +fN +fM +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(62,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +fN +fN +fR +fR +fR +fS +iV +fS +fS +mz +gd +nq +gf +gf +gf +gf +hQ +lO +gd +ny +kB +nG +fU +jl +gc +gb +gb +gy +gH +gz +gl +fN +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(63,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +fM +fM +fM +fM +fM +fN +fN +fN +fN +fR +fR +fR +fS +fS +mz +gd +gf +gf +gf +gf +gf +hS +iO +kV +gf +lD +gc +fU +jl +gc +fX +gx +gN +gI +gI +gl +fN +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(64,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +fM +fM +fM +fN +fN +fN +fN +fN +fN +fN +fN +fN +fR +kd +hd +iy +gd +lX +gf +gf +hM +hn +hT +ia +hn +hn +jr +gc +fU +jl +gc +fX +gx +gA +gJ +gJ +gl +fN +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(65,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +mp +mq +nc +gd +lY +gf +gf +hN +hI +hI +hI +hI +hI +hI +gc +kN +jl +gc +gl +gl +gl +gl +gl +gl +fN +fM +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(66,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +nB +hp +iK +gd +jb +je +gf +gT +mB +hO +iF +ij +ik +kU +gc +fU +jl +gc +nx +mu +ok +mu +mu +mv +fN +fM +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(67,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +mp +mq +mq +nV +mq +mq +mq +mQ +ms +mI +mt +ol +nV +mq +mq +nc +gd +kT +jf +gf +hN +hI +hJ +iq +iP +iQ +kU +gc +fU +jl +gc +mC +mT +mD +mu +mu +mv +fM +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(68,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +mp +de +mq +mq +mq +mq +mq +mq +mF +mJ +mL +my +my +my +my +nT +gd +jd +jg +gf +hN +hI +jj +jh +od +op +oa +gc +fU +jl +gc +np +mV +mE +ng +ox +mx +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(69,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +mp +mq +mq +mr +mr +mr +mr +mr +mr +mr +mr +mr +mr +mr +mq +mO +gd +gd +gd +gd +kB +hI +lB +ow +oe +ob +oc +gc +fU +mA +nU +mR +mW +mu +ng +oy +mx +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(70,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +mp +mq +mq +mr +mr +mr +mr +mr +mr +mr +mr +mr +mr +mr +mq +mO +gd +gq +il +gZ +hW +ge +ge +ge +ge +ge +ge +gc +fU +jl +nJ +nO +mX +mu +mu +nQ +mv +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(71,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +mp +mq +mq +mr +mr +mr +mr +mr +mr +mr +mr +mr +mr +mr +mq +mO +gd +nr +hH +ha +hR +ge +me +me +lU +lU +ou +gc +fU +jl +gc +ne +mX +mu +mu +mu +mv +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(72,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +mp +mq +mq +mr +mr +mr +mr +mr +mr +mr +mr +mr +mr +mr +mq +mO +gd +ma +ov +hH +iJ +ge +nu +hK +hK +hK +hK +gc +fU +jl +gc +nh +mX +mu +ng +oz +mx +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(73,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +mp +mq +mq +mr +mr +mr +mr +mr +mr +mr +mr +mr +mr +mr +mq +mO +ge +ge +ge +ge +ge +ge +jn +jC +jC +jC +jK +nz +ke +kf +gc +nh +mX +mu +ng +oA +mx +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(74,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +mp +mq +mq +mr +mr +mr +mr +mS +mr +mr +mr +mr +mr +mr +mq +mO +ge +gD +kP +om +gY +ge +kR +hK +hK +hK +kS +nH +kN +js +gc +ni +mX +mu +mu +mu +mv +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(75,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +mp +mq +mq +mr +mr +mr +mr +mr +mr +mr +mr +mr +mr +mr +mq +mO +ge +ns +gY +iG +gY +ge +hK +hK +hK +hK +ka +gc +fU +js +gc +nd +mX +mu +mu +nQ +mv +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(76,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +mp +mq +mq +mr +mr +mr +mr +mr +mr +mr +mr +mr +mr +mr +mq +mO +ge +fK +gY +ix +io +mZ +jo +jo +jo +jo +kb +gc +iR +jp +gc +nj +mY +nk +nS +nR +mx +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(77,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +mp +mq +mq +mq +mq +mq +mq +mq +mG +mK +mM +mM +mM +mM +mM +mP +ge +gB +gY +iH +gB +ge +me +hK +hK +os +ka +gc +iS +jq +gc +nP +mU +nl +mu +mu +mx +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(78,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +mp +mq +mq +nW +mq +mq +mq +mq +mH +mm +mq +mq +nW +mq +mq +mq +ge +gV +im +im +ip +ge +me +hK +hK +os +ka +gc +fU +js +gc +ni +mu +mu +mu +mu +mv +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(79,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +ge +ge +ge +ge +ge +ge +mf +hK +hK +os +kS +gc +fU +js +gc +nf +mu +nm +nn +no +mv +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(80,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +fN +ge +hL +kQ +in +iw +na +jB +jB +jB +ko +kc +gc +fU +js +ga +ga +ga +ga +ga +mv +mv +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(81,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +fM +fM +fM +fM +fM +fM +fM +fN +fN +fN +fN +fN +fN +fN +fN +ge +nt +iE +iI +gj +ge +hK +kk +jC +kp +hK +gc +nM +kr +if +ak +an +at +ga +fN +fM +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(82,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +fM +fM +fM +fM +fM +fN +fN +fN +fN +fN +ge +jA +md +md +md +ge +hK +kl +hK +hK +lE +gc +jU +jX +ga +al +ao +ap +ga +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(83,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +ge +gU +gU +gU +gU +ge +ge +he +gU +gU +ge +ga +ac +hY +ga +kg +ar +as +ga +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(84,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +fM +ki +kj +kj +kj +kn +fO +fO +fO +ga +kO +hX +ga +fZ +hX +ap +ga +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(85,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +jE +fO +mc +mc +mc +mc +mc +fO +ga +ac +hZ +ga +hu +am +hZ +ga +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(86,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +jE +fO +mc +mc +mc +mc +mc +fO +ga +jV +jV +ga +ga +ga +ga +ga +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(87,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fP +cQ +cQ +cQ +cQ +cQ +cQ +cQ +cQ +cQ +cQ +cQ +cQ +cQ +cQ +jF +fP +cQ +cQ +cQ +cQ +mc +fO +fO +fO +fO +fO +fO +fN +fN +fN +fN +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(88,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fP +jx +jx +jx +jx +jx +jx +jx +jx +jx +jx +jx +jx +jx +jx +jF +fP +jx +jx +jx +jx +mc +mc +mc +mc +mc +mc +fM +fM +fM +fM +fM +fM +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(89,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fP +jx +jx +jx +jx +jx +jx +jx +jx +jx +jx +jx +jx +jx +jx +jF +fP +jx +jx +jx +jx +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(90,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fP +jx +jx +jx +jx +jx +jx +jx +jx +jx +jx +jx +jx +jx +jx +jF +fP +jx +jx +jx +jx +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(91,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +bx +jy +jy +jy +jy +jy +jy +jy +jy +jy +jy +jy +jy +jy +jy +jG +jI +jJ +jJ +jJ +jL +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(92,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fP +jz +jz +jz +jz +jz +jz +jz +jz +jz +jz +jz +jz +jz +jz +jF +fP +jz +jz +jz +jz +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(93,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fP +jz +jz +jz +jz +jz +jz +jz +jz +jz +jz +jz +jz +jz +jz +jF +fP +jz +jz +jz +jz +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(94,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fP +jz +jz +jz +jz +jz +jz +jz +jz +jz +jz +jz +jz +jz +jz +jF +fP +jz +jz +jz +jz +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(95,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +fP +jw +jw +jw +jw +jw +jw +jw +jw +jw +jw +jw +jw +jw +jw +jH +fP +jw +jw +jw +jw +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(96,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(97,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(98,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(99,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(100,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(101,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(102,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(103,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(104,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(105,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(106,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(107,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(108,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(109,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(110,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(111,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(112,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(113,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(114,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(115,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(116,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(117,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(118,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(119,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(120,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(121,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(122,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(123,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(124,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(125,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(126,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(127,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(128,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(129,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(130,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(131,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(132,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(133,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(134,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(135,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(136,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(137,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(138,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(139,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} +(140,1,1) = {" +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +mc +"} diff --git a/maps/tether/submaps/om_ships/mercship.dm b/maps/tether/submaps/om_ships/mercship.dm new file mode 100644 index 00000000000..b6ae03ad72c --- /dev/null +++ b/maps/tether/submaps/om_ships/mercship.dm @@ -0,0 +1,102 @@ +// Compile in the map for CI testing if we're testing compileability of all the maps +#if MAP_TEST +#include "mercship.dmm" +#endif + + +// Map template for spawning the shuttle +/datum/map_template/om_ships/syndicatecarrier + name = "OM Ship - Mercenary Ship (New Z)" + desc = "Mercenary Ship." + mappath = 'mercship.dmm' + + // The ship's area(s) +/area/ship/mercenary + name = "\improper Mercenary Ship (Use a Subtype!)" + icon_state = "shuttle2" + requires_power = 1 + dynamic_lighting = 1 + +/area/ship/mercenary/engineering + name = "\improper Mercenary Ship - Engineering" +/area/ship/mercenary/engineeringcntrl + name = "\improper Mercenary Ship - Engineering Power Room" +/area/ship/mercenary/bridge + name = "\improper Mercenary Ship - Cockpit" +/area/ship/mercenary/atmos + name = "\improper Mercenary Ship - Atmospherics" +/area/ship/mercenary/air + name = "\improper Mercenary Ship - Engineering Systems" +/area/ship/mercenary/engine + name = "\improper Mercenary Ship - Engine" +/area/ship/mercenary/engine1 + name = "\improper Mercenary Ship - Engine" +/area/ship/mercenary/armoury + name = "\improper Mercenary Ship - Armoury" +/area/ship/mercenary/hangar + name = "\improper Mercenary Ship - Hangar" +/area/ship/mercenary/barracks + name = "\improper Mercenary Ship - Barracks" +/area/ship/mercenary/fighter + name = "\improper Mercenary Ship - Fighter Maintenance" +/area/ship/mercenary/med + name = "\improper Mercenary Ship - Medical" +/area/ship/mercenary/med1 + name = "\improper Mercenary Ship - Medical" +/area/ship/mercenary/hall1 + name = "\improper Mercenary Ship - Corridor" +/area/ship/mercenary/hall2 + name = "\improper Mercenary Ship - Corridor" +/area/ship/mercenary/southairlock + name = "\improper Mercenary Ship - Southern Airlock" +/area/ship/mercenary/northairlock + name = "\improper Mercenary Ship - Northern Airlock" + +// The 'shuttle' of the excursion shuttle +// /datum/shuttle/autodock/overmap/mercenaryship +// name = "Unknown Vessel" +// warmup_time = 0 +// current_location = "tether_excursion_hangar" +// docking_controller_tag = "expshuttle_docker" +// shuttle_area = list(/area/ship/mercenary/engineering, /area/ship/mercenary/engineeringcntrl, /area/ship/mercenary/bridge, /area/ship/mercenary/atmos, /area/ship/mercenary/air, /area/ship/mercenary/engine, /area/ship/mercenary/engine1, /area/ship/mercenary/armoury, /area/ship/mercenary/hangar, /area/ship/mercenary/barracks, /area/ship/mercenary/fighter, /area/ship/mercenary/med, /area/ship/mercenary/med1, /area/ship/mercenary/hall1, /area/ship/mercenary/hall2) +// fuel_consumption = 3 + +// The 'ship' +/obj/effect/overmap/visitable/ship/mercship + name = "Unknown Vessel" + desc = "An unknown vessel, of unknown design." + color = "#f23000" //Red + vessel_mass = 8000 + vessel_size = SHIP_SIZE_SMALL + initial_generic_waypoints = list("carrier_fore", "carrier_aft", "carrier_port", "carrier_starboard", "base_dock") + initial_restricted_waypoints = list("Carrier's Ship's Boat" = list("omship_spawn_mercboat")) + + +//The boat's area +/area/shuttle/mercboat + name = "\improper Carrier's Ship's Boat" + icon_state = "shuttle" + requires_power = 0 + +// The shuttle's 'shuttle' computer +/obj/machinery/computer/shuttle_control/explore/mercboat + name = "boat control console" + shuttle_tag = "Carrier's Ship's Boat" + +// A shuttle lateloader landmark +/obj/effect/shuttle_landmark/shuttle_initializer/mercboat + name = "Carrier's Boat Bay" + base_area = /area/ship/mercenary/hangar + base_turf = /turf/simulated/floor/plating + landmark_tag = "omship_spawn_mercboat" + docking_controller = "merc_boatbay" + shuttle_type = /datum/shuttle/autodock/overmap/mercboat + +// The 'shuttle' +/datum/shuttle/autodock/overmap/mercboat + name = "Carrier's Ship's Boat" + current_location = "omship_spawn_mercboat" + docking_controller_tag = "mercboat_docker" + shuttle_area = /area/shuttle/mercboat + fuel_consumption = 0 + defer_initialisation = TRUE \ No newline at end of file diff --git a/maps/tether/submaps/om_ships/mercship.dmm b/maps/tether/submaps/om_ships/mercship.dmm new file mode 100644 index 00000000000..6df253bb2fc --- /dev/null +++ b/maps/tether/submaps/om_ships/mercship.dmm @@ -0,0 +1,23980 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/space, +/area/space) +"ab" = ( +/turf/simulated/wall/rshull, +/area/ship/mercenary/engine1) +"ac" = ( +/obj/machinery/atmospherics/unary/engine{ + icon_state = "nozzle"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine1) +"ad" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine1) +"ae" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/turf/simulated/wall/r_wall, +/area/ship/mercenary/engine1) +"af" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine1) +"ag" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ + icon_state = "map-fuel"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine1) +"ah" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ + icon_state = "map-fuel"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine1) +"ai" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 10 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine1) +"aj" = ( +/turf/simulated/wall/rshull, +/area/ship/mercenary/northairlock) +"ak" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1313; + id_tag = "northinteriordoor"; + name = "Modified External Airlock"; + req_one_access = list(150) + }, +/obj/effect/floor_decal/borderfloorblack/full, +/turf/simulated/floor, +/area/ship/mercenary/northairlock) +"al" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine1) +"am" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ + icon_state = "map-fuel"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine1) +"an" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine1) +"ao" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine1) +"ap" = ( +/turf/simulated/wall/rshull, +/area/ship/mercenary/med) +"aq" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 4; + frequency = 1313; + icon_state = "map_vent_aux"; + id_tag = "northpump" + }, +/turf/simulated/floor, +/area/ship/mercenary/northairlock) +"ar" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 10 + }, +/obj/machinery/airlock_sensor{ + pixel_z = 0; + pixel_w = 28; + id_tag = "northchambersensor"; + frequency = 1313 + }, +/turf/simulated/floor, +/area/ship/mercenary/northairlock) +"as" = ( +/turf/simulated/wall/rshull, +/area/ship/mercenary/barracks) +"at" = ( +/obj/machinery/shipsensors{ + dir = 1 + }, +/turf/simulated/floor/plating/external, +/area/ship/mercenary/bridge) +"au" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine1) +"av" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -32 + }, +/obj/machinery/power/terminal, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 9 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine1) +"aw" = ( +/obj/machinery/atmospherics/binary/pump/fuel{ + icon_state = "map_off-fuel"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine1) +"ax" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + icon_state = "map-aux"; + dir = 4 + }, +/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller{ + frequency = 1313; + id_tag = "northairlock"; + name = "North Airlock Controller"; + pixel_w = 27; + tag_airpump = "northpump"; + tag_chamber_sensor = "northchambersensor"; + tag_exterior_door = "northexteriordoor"; + tag_exterior_sensor = "northexteriorsensor"; + tag_interior_door = "northinteriordoor"; + tag_interior_sensor = "northinteriorsensor" + }, +/turf/simulated/floor, +/area/ship/mercenary/northairlock) +"ay" = ( +/turf/simulated/wall/rshull, +/area/ship/mercenary/bridge) +"az" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/blast/regular{ + id = "mercblast"; + name = "window blast doors" + }, +/turf/simulated/floor, +/area/ship/mercenary/bridge) +"aA" = ( +/turf/simulated/wall/rshull, +/area/ship/mercenary/hangar) +"aB" = ( +/obj/machinery/door/airlock/hatch{ + name = "Secure Airtight Hatch"; + req_one_access = list(150) + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"aC" = ( +/obj/machinery/atmospherics/portables_connector/fuel{ + icon_state = "map_connector-fuel"; + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine1) +"aD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/machinery/door/airlock/glass_external{ + frequency = 1313; + id_tag = "northinteriordoor"; + name = "Modified External Airlock"; + req_one_access = list(150) + }, +/obj/effect/floor_decal/borderfloorblack/full, +/turf/simulated/floor, +/area/ship/mercenary/northairlock) +"aE" = ( +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"aF" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 9 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"aG" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloorblack/corner{ + icon_state = "borderfloorcorner_black"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"aH" = ( +/turf/simulated/wall/r_wall, +/area/ship/mercenary/engine1) +"aI" = ( +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"aJ" = ( +/obj/machinery/autolathe{ + hacked = 1; + name = "unlocked autolathe" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 9 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"aK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"aL" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 4; + frequency = 1313; + icon_state = "map_vent_aux"; + id_tag = "northpump" + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/ship/mercenary/northairlock) +"aM" = ( +/obj/machinery/atmospherics/portables_connector/aux{ + icon_state = "map_connector-aux"; + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor, +/area/ship/mercenary/barracks) +"aN" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/simulated/floor, +/area/ship/mercenary/barracks) +"aO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 6 + }, +/obj/machinery/meter, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor, +/area/ship/mercenary/barracks) +"aP" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 9 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"aQ" = ( +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"aR" = ( +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"aS" = ( +/obj/structure/closet/secure_closet{ + req_one_access = list(150) + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + icon_state = "rwindow"; + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/window/brigdoor/southleft{ + req_access = newlist(); + req_one_access = list(150) + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/item/device/flashlight/maglight, +/obj/item/weapon/storage/belt/security/tactical, +/obj/item/weapon/storage/backpack/dufflebag/syndie, +/obj/item/weapon/gun/projectile/silenced, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"aT" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"aU" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 9 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"aV" = ( +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"aW" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 5 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"aX" = ( +/turf/simulated/wall/rshull, +/area/shuttle/mercboat) +"aY" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/blast/regular{ + id = "mercboatshutters"; + name = "Shuttle Blast Door" + }, +/obj/structure/fans/hardlight, +/turf/simulated/floor/tiled/dark, +/area/shuttle/mercboat) +"aZ" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"ba" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"bb" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloorblack{ + dir = 5 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"bc" = ( +/obj/machinery/airlock_sensor/airlock_interior{ + pixel_w = -25; + id_tag = "northinteriorsensor"; + master_tag = "northairlock"; + frequency = 1313 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/northairlock) +"bd" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/machinery/meter, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/northairlock) +"be" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"bf" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"bg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"bh" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"bi" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/structure/closet/firecloset, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"bj" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + icon_state = "map-aux"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack/corner{ + icon_state = "borderfloorcorner_black"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"bk" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + icon_state = "map-aux"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor, +/area/ship/mercenary/barracks) +"bl" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"bm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"bn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"bo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"bp" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"bq" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/hatch{ + name = "Secure Airtight Hatch"; + req_one_access = list(150) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack/full, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med1) +"br" = ( +/obj/effect/floor_decal/borderfloorblack/corner{ + icon_state = "borderfloorcorner_black"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"bs" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"bt" = ( +/obj/structure/bed/chair/bay/comfy/brown{ + icon_state = "bay_comfychair_preview"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack/corner, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"bu" = ( +/obj/structure/table/reinforced, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 5 + }, +/obj/machinery/button/remote/blast_door{ + id = "mercblast" + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"bv" = ( +/obj/machinery/computer/shuttle_control/explore/mercboat, +/turf/simulated/floor/tiled/dark, +/area/shuttle/mercboat) +"bw" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/remote/blast_door{ + id = "mercboatshutters" + }, +/turf/simulated/floor/tiled/dark, +/area/shuttle/mercboat) +"bx" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med1) +"by" = ( +/obj/structure/cable{ + 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/dark, +/area/ship/mercenary/med1) +"bz" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med1) +"bA" = ( +/obj/structure/table/rack, +/obj/effect/floor_decal/borderfloorblack{ + dir = 9 + }, +/obj/item/weapon/storage/toolbox/syndicate, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med1) +"bB" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"bC" = ( +/obj/structure/closet/emcloset, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"bD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor, +/area/ship/mercenary/barracks) +"bE" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + icon_state = "map_vent_out"; + dir = 4 + }, +/turf/simulated/floor, +/area/ship/mercenary/barracks) +"bF" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloorblack/corner{ + icon_state = "borderfloorcorner_black"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"bG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"bH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/structure/bed/chair/comfy/red{ + icon_state = "comfychair"; + dir = 4 + }, +/obj/structure/window/reinforced{ + icon_state = "rwindow"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"bI" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/obj/structure/closet/secure_closet{ + req_one_access = list(150) + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + icon_state = "rwindow"; + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/window/brigdoor/southleft{ + req_access = newlist(); + req_one_access = list(150) + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/item/device/flashlight/maglight, +/obj/item/weapon/storage/belt/security/tactical, +/obj/item/weapon/storage/backpack/dufflebag/syndie, +/obj/item/weapon/gun/projectile/silenced, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"bJ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 8 + }, +/obj/structure/bed/chair/comfy/red{ + icon_state = "comfychair"; + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"bK" = ( +/obj/structure/window/reinforced{ + icon_state = "rwindow"; + dir = 8 + }, +/obj/structure/bed/chair/comfy/red{ + icon_state = "comfychair"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"bL" = ( +/obj/structure/table/standard, +/obj/machinery/recharger, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"bM" = ( +/obj/structure/bed/chair/comfy/red{ + icon_state = "comfychair"; + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"bN" = ( +/obj/structure/bed/chair/comfy/red{ + icon_state = "comfychair"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"bO" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"bP" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/bed/chair/bay/comfy/captain{ + icon_state = "capchair_preview"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"bQ" = ( +/obj/structure/closet/secure_closet{ + req_one_access = list(150) + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + icon_state = "rwindow"; + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/window/brigdoor/southleft{ + req_access = newlist(); + req_one_access = list(150) + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 5 + }, +/obj/item/device/flashlight/maglight, +/obj/item/weapon/storage/belt/security/tactical, +/obj/item/weapon/storage/backpack/dufflebag/syndie, +/obj/item/weapon/gun/projectile/silenced, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"bR" = ( +/obj/structure/bed/chair/bay/comfy/brown{ + icon_state = "bay_comfychair_preview"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack/corner{ + icon_state = "borderfloorcorner_black"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"bS" = ( +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/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/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"bT" = ( +/obj/structure/bed/chair/backed_red{ + icon_state = "onestar_chair_red"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/shuttle/mercboat) +"bU" = ( +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/structure/bed/chair/backed_red{ + icon_state = "onestar_chair_red"; + dir = 4 + }, +/obj/machinery/recharger/wallcharger{ + pixel_z = -2; + pixel_w = -23 + }, +/turf/simulated/floor/tiled/dark, +/area/shuttle/mercboat) +"bV" = ( +/obj/structure/closet/crate/freezer/rations, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"bW" = ( +/obj/machinery/pointdefense_control, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"bX" = ( +/obj/structure/table/rack, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/item/weapon/storage/secure/briefcase, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med1) +"bY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/structure/table/standard, +/obj/machinery/recharger, +/obj/item/modular_computer/laptop/preset/custom_loadout/elite, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"bZ" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + 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/effect/floor_decal/borderfloorblack{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"ca" = ( +/obj/structure/table/standard, +/obj/machinery/recharger, +/obj/item/modular_computer/laptop/preset/custom_loadout/elite, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"cb" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 8 + }, +/obj/structure/table/reinforced, +/obj/item/modular_computer/tablet/preset/custom_loadout/elite, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"cc" = ( +/obj/effect/floor_decal/borderfloorblack/corner{ + icon_state = "borderfloorcorner_black"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"cd" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"ce" = ( +/obj/structure/table/rack, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/item/weapon/storage/belt/utility, +/obj/item/weapon/storage/belt/utility, +/obj/item/weapon/storage/belt/utility, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med1) +"cf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor, +/area/ship/mercenary/barracks) +"cg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/ship/mercenary/barracks) +"ch" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/turf/simulated/floor, +/area/ship/mercenary/barracks) +"ci" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/atmos{ + name = "Modified Atmospherics Airlock"; + req_one_access = list(150) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"cj" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med1) +"ck" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + icon_state = "map_vent_out"; + dir = 4 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"cl" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"cm" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"cn" = ( +/obj/machinery/computer/ship/engines{ + dir = 8; + throwpass = 1 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 5 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"co" = ( +/turf/simulated/floor/tiled/dark, +/area/shuttle/mercboat) +"cp" = ( +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/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/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"cq" = ( +/obj/machinery/door/airlock/hatch{ + name = "Secure Airtight Hatch"; + req_one_access = list(150) + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"cr" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -32 + }, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/northairlock) +"cs" = ( +/obj/machinery/door/airlock/hatch{ + name = "Secure Airtight Hatch"; + req_one_access = list(150) + }, +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack/full, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"ct" = ( +/obj/machinery/door/airlock/glass{ + name = "Secure Glass Airlock"; + req_one_access = list(150) + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack/full, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"cu" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + icon_state = "map_vent_out"; + dir = 4 + }, +/obj/machinery/recharger/wallcharger{ + pixel_z = 0; + pixel_w = -25 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"cv" = ( +/obj/machinery/door/airlock/hatch{ + name = "Secure Airtight Hatch"; + req_one_access = list(150) + }, +/obj/structure/fans/hardlight, +/turf/simulated/floor/tiled/dark, +/area/shuttle/mercboat) +"cw" = ( +/obj/effect/shuttle_landmark/shuttle_initializer/mercboat, +/turf/simulated/floor/tiled/dark, +/area/shuttle/mercboat) +"cx" = ( +/obj/machinery/door/airlock/hatch{ + name = "Secure Airtight Hatch"; + req_one_access = list(150) + }, +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"cy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/northairlock) +"cz" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack/corner{ + icon_state = "borderfloorcorner_black"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"cA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"cB" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"cC" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"cD" = ( +/obj/structure/table/rack, +/obj/effect/floor_decal/borderfloorblack{ + dir = 5 + }, +/obj/item/weapon/storage/secure/briefcase, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med1) +"cE" = ( +/obj/structure/table/rack, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/item/weapon/storage/toolbox/syndicate, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med1) +"cF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/borderfloorblack/corner, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"cG" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"cH" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"cI" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"cJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"cK" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/embedded_controller/radio/simple_docking_controller{ + pixel_x = 27; + pixel_y = -4; + id_tag = "merc_boatbay" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"cL" = ( +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med1) +"cM" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 5 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med1) +"cN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med1) +"cO" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/structure/bed/chair/backed_red{ + icon_state = "onestar_chair_red"; + dir = 8 + }, +/obj/machinery/recharger/wallcharger{ + pixel_w = 32; + pixel_z = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/shuttle/mercboat) +"cP" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"cQ" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack/corner, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"cR" = ( +/obj/machinery/door/airlock/hatch{ + name = "Secure Airtight Hatch"; + req_one_access = list(150) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall2) +"cS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack/corner{ + icon_state = "borderfloorcorner_black"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"cT" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"cU" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + icon_state = "map_vent_out"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"cV" = ( +/obj/machinery/door/airlock/glass{ + name = "Secure Glass Airlock"; + req_one_access = list(150) + }, +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack/full, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"cW" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"cX" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -32 + }, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"cY" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"cZ" = ( +/obj/structure/bed/chair/comfy/red{ + icon_state = "comfychair"; + dir = 4 + }, +/obj/structure/window/reinforced{ + icon_state = "rwindow"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack/corner, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"da" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 9 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"db" = ( +/obj/structure/table/standard, +/obj/machinery/light, +/obj/machinery/recharger, +/obj/effect/floor_decal/borderfloorblack, +/obj/item/modular_computer/laptop/preset/custom_loadout/elite, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"dc" = ( +/obj/machinery/door/airlock/hatch{ + name = "Secure Airtight Hatch"; + req_one_access = list(150) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"dd" = ( +/obj/machinery/computer/ship/helm{ + icon_state = "computer"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"de" = ( +/obj/machinery/recharger/wallcharger{ + pixel_z = 0; + pixel_w = -25 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"df" = ( +/obj/structure/bed/chair/comfy/red{ + icon_state = "comfychair"; + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"dg" = ( +/obj/structure/window/reinforced{ + icon_state = "rwindow"; + dir = 8 + }, +/obj/structure/bed/chair/comfy/red{ + icon_state = "comfychair"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"dh" = ( +/turf/simulated/wall/r_wall, +/area/ship/mercenary/med) +"di" = ( +/turf/simulated/wall/rshull, +/area/ship/mercenary/armoury) +"dj" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"dk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"dl" = ( +/turf/simulated/wall/rshull, +/area/ship/mercenary/atmos) +"dm" = ( +/obj/machinery/door/airlock/hatch{ + name = "Secure Airtight Hatch"; + req_one_access = list(150) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall2) +"dn" = ( +/obj/machinery/door/airlock/hatch{ + name = "Secure Airtight Hatch"; + req_one_access = list(150) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack/full, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"do" = ( +/turf/simulated/wall/rshull, +/area/ship/mercenary/engineering) +"dp" = ( +/turf/simulated/wall/rshull, +/area/ship/mercenary/engineeringcntrl) +"dq" = ( +/obj/structure/table/reinforced, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/glass, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"dr" = ( +/obj/structure/table/standard, +/obj/machinery/recharger, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"ds" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"dt" = ( +/obj/machinery/door/airlock/hatch{ + name = "Secure Airtight Hatch"; + req_one_access = list(150) + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack/full, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/armoury) +"du" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/fighter) +"dv" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/hatch{ + name = "Secure Airtight Hatch"; + req_one_access = list(150) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack/full, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"dw" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/effect/floor_decal/borderfloorblack{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"dx" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"dy" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"dz" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"dA" = ( +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"dB" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -32 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/southairlock) +"dC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/southairlock) +"dD" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 5 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall2) +"dE" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"dF" = ( +/obj/machinery/atmospherics/pipe/tank/air, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/atmos) +"dG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"dH" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 32 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/air) +"dI" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall2) +"dJ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"dK" = ( +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"dL" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"dM" = ( +/turf/simulated/wall/r_wall, +/area/ship/mercenary/med1) +"dN" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/empty, +/obj/effect/floor_decal/borderfloorblack{ + dir = 9 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/atmos) +"dO" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"dP" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"dQ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"dR" = ( +/obj/structure/table/rack, +/obj/effect/floor_decal/borderfloorblack{ + dir = 9 + }, +/obj/item/roller/adv, +/obj/item/roller/adv, +/obj/item/roller/adv, +/obj/item/roller/adv, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/fighter) +"dS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"dT" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/fighter) +"dU" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/fighter) +"dV" = ( +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/fighter) +"dW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"dX" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"dY" = ( +/turf/simulated/wall/r_wall, +/area/ship/mercenary/fighter) +"dZ" = ( +/obj/machinery/atmospherics/binary/pump{ + icon_state = "map_off"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/atmos) +"ea" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/atmos) +"eb" = ( +/obj/machinery/atmospherics/binary/pump, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/atmos) +"ec" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall2) +"ed" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/air) +"ee" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -32 + }, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"ef" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/table/reinforced, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"eg" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + icon_state = "map_vent_out"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"eh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"ei" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 10 + }, +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor, +/area/ship/mercenary/barracks) +"ej" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor, +/area/ship/mercenary/engineeringcntrl) +"ek" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/smes/buildable/hybrid, +/obj/effect/floor_decal/borderfloorblack{ + dir = 5 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"el" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"em" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"en" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"eo" = ( +/obj/structure/closet/crate, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"ep" = ( +/obj/structure/shuttle/engine/propulsion/burst/left, +/turf/simulated/floor/plating, +/area/shuttle/mercboat) +"eq" = ( +/obj/structure/shuttle/engine/propulsion/burst/right, +/turf/simulated/floor/plating, +/area/shuttle/mercboat) +"er" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"es" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/sleep_console{ + icon_state = "sleeperconsole"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"et" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall2) +"eu" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 9 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall2) +"ev" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall2) +"ew" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/black, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/atmos) +"ex" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/atmos) +"ey" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall2) +"ez" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack/corner{ + icon_state = "borderfloorcorner_black"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/air) +"eA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"eB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"eC" = ( +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"eD" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"eE" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"eF" = ( +/turf/simulated/wall/rshull, +/area/ship/mercenary/engine) +"eG" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorblack{ + dir = 5 + }, +/obj/item/weapon/storage/firstaid/combat, +/obj/item/weapon/storage/firstaid/combat, +/obj/item/weapon/storage/firstaid/combat, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"eH" = ( +/obj/machinery/sleeper, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"eI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"eJ" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall2) +"eK" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/structure/table/rack, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/item/weapon/storage/secure/briefcase, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med1) +"eL" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall2) +"eM" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/atmos) +"eN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/atmos) +"eO" = ( +/obj/machinery/door/airlock/glass{ + name = "Secure Glass Airlock"; + req_one_access = list(150) + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack/full, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/air) +"eP" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/air) +"eQ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/air) +"eR" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"eS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"eT" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall1) +"eU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall2) +"eV" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall2) +"eW" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall2) +"eX" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"eY" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/smes/buildable/hybrid, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"eZ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"fa" = ( +/obj/machinery/atmospherics/portables_connector/fuel, +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine) +"fb" = ( +/obj/structure/table/rack, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/item/weapon/storage/belt/medical, +/obj/item/weapon/storage/belt/medical, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/fighter) +"fc" = ( +/obj/structure/table/reinforced, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"fd" = ( +/obj/machinery/airlock_sensor/airlock_interior{ + frequency = 1414; + id_tag = "southinteriorsensor"; + master_tag = "southairlock"; + pixel_w = -25 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/southairlock) +"fe" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall2) +"ff" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/atmos) +"fg" = ( +/turf/simulated/wall/rshull, +/area/ship/mercenary/air) +"fh" = ( +/obj/machinery/atmospherics/unary/engine{ + icon_state = "nozzle"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine) +"fi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine) +"fj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/turf/simulated/wall/r_wall, +/area/ship/mercenary/engine) +"fk" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine) +"fl" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 10 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine) +"fm" = ( +/obj/machinery/atmospherics/binary/pump/fuel, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine) +"fn" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 4; + frequency = 1414; + icon_state = "map_vent_aux"; + id_tag = "southpump" + }, +/turf/simulated/floor, +/area/ship/mercenary/southairlock) +"fo" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + icon_state = "map-aux"; + dir = 4 + }, +/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller{ + frequency = 1414; + id_tag = "southairlock"; + name = "South Airlock Controller"; + pixel_w = 22; + tag_airpump = "southpump"; + tag_chamber_sensor = "southchambersensor"; + tag_exterior_door = "southexteriordoor"; + tag_exterior_sensor = "southexteriorsensor"; + tag_interior_door = "southinteriordoor"; + tag_interior_sensor = "southinteriorsensor" + }, +/turf/simulated/floor, +/area/ship/mercenary/southairlock) +"fp" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine) +"fq" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ + icon_state = "map-fuel"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine) +"fr" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine) +"fs" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine) +"ft" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 9 + }, +/obj/machinery/airlock_sensor{ + frequency = 1414; + id_tag = "southchambersensor"; + pixel_w = 28; + pixel_z = 0 + }, +/turf/simulated/floor, +/area/ship/mercenary/southairlock) +"fu" = ( +/turf/simulated/wall/rshull, +/area/space) +"fv" = ( +/turf/simulated/floor/plating/external, +/area/space) +"fw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 5 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine) +"fx" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine) +"fy" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine) +"fz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 9 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/ship/mercenary/engine) +"fA" = ( +/turf/simulated/wall/rshull, +/area/ship/mercenary/southairlock) +"fB" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 4 + }, +/turf/simulated/floor, +/area/ship/mercenary/barracks) +"fC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/atmos) +"fD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor, +/area/ship/mercenary/barracks) +"fE" = ( +/obj/machinery/atmospherics/binary/passive_gate{ + icon_state = "map"; + dir = 1 + }, +/turf/simulated/floor, +/area/ship/mercenary/barracks) +"fF" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/atmos) +"fG" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall2) +"fH" = ( +/obj/machinery/airlock_sensor/airlock_exterior{ + pixel_z = -25; + id_tag = "northairlock"; + master_tag = "northexteriorsensor"; + frequency = 1313 + }, +/turf/space, +/area/space) +"fI" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hall2) +"fJ" = ( +/obj/machinery/door/airlock/glass{ + name = "Secure Glass Airlock"; + req_one_access = list(150) + }, +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack/full, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/air) +"fK" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/machinery/meter, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/southairlock) +"fL" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"fM" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"fN" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"fO" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/door/airlock/atmos{ + name = "Modified Atmospherics Airlock"; + req_one_access = list(150) + }, +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack/full, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/atmos) +"fP" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/door/airlock/engineering{ + name = "Modified Engineering Airlock"; + req_one_access = list(150) + }, +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack/full, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"fQ" = ( +/obj/machinery/door/airlock/hatch{ + name = "Secure Airtight Hatch"; + req_one_access = list(150) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"fR" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + icon_state = "map_vent_out"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"fS" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"fT" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/fighter) +"fU" = ( +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"fV" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/fighter) +"fW" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/fighter) +"fX" = ( +/obj/machinery/autolathe{ + hacked = 1; + name = "unlocked autolathe" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"fY" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1313; + id_tag = "northexteriordoor"; + name = "Modified External Airlock"; + req_one_access = list(150) + }, +/turf/simulated/floor, +/area/ship/mercenary/northairlock) +"fZ" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1414; + id_tag = "southexteriordoor"; + name = "Modified External Airlock"; + req_one_access = list(150) + }, +/turf/simulated/floor, +/area/ship/mercenary/southairlock) +"ga" = ( +/obj/machinery/airlock_sensor/airlock_exterior{ + frequency = 1414; + id_tag = "southairlock"; + master_tag = "southexteriorsensor"; + pixel_z = 24 + }, +/turf/space, +/area/space) +"gb" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"gc" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 4; + frequency = 1414; + icon_state = "map_vent_aux"; + id_tag = "southpump" + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/ship/mercenary/southairlock) +"gd" = ( +/obj/effect/overmap/visitable/ship/mercship{ + fore_dir = 4 + }, +/turf/space, +/area/space) +"ge" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"gf" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"gg" = ( +/obj/machinery/shield_gen/advanced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/turf/simulated/floor, +/area/ship/mercenary/med) +"gh" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"gi" = ( +/obj/structure/table/rack, +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"gj" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 8 + }, +/obj/structure/table/rack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"gk" = ( +/turf/simulated/wall/r_wall, +/area/ship/mercenary/armoury) +"gl" = ( +/turf/simulated/wall/r_wall, +/area/ship/mercenary/atmos) +"gm" = ( +/turf/simulated/wall/r_wall, +/area/ship/mercenary/engine) +"gn" = ( +/turf/simulated/wall/r_wall, +/area/ship/mercenary/barracks) +"go" = ( +/turf/simulated/wall/r_wall, +/area/ship/mercenary/bridge) +"gp" = ( +/turf/simulated/wall/r_wall, +/area/ship/mercenary/engineering) +"gq" = ( +/turf/simulated/wall/r_wall, +/area/ship/mercenary/engineeringcntrl) +"gr" = ( +/turf/simulated/wall/r_wall, +/area/ship/mercenary/air) +"gs" = ( +/turf/simulated/wall/r_wall, +/area/ship/mercenary/hangar) +"gt" = ( +/obj/machinery/computer/ship/navigation{ + icon_state = "computer"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"gu" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"gv" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/atmos) +"gw" = ( +/obj/machinery/pointdefense, +/turf/simulated/floor/plating/external, +/area/ship/mercenary/med) +"gx" = ( +/obj/machinery/pointdefense, +/turf/simulated/floor/plating/external, +/area/ship/mercenary/barracks) +"gy" = ( +/obj/machinery/pointdefense, +/turf/simulated/floor/plating/external, +/area/ship/mercenary/armoury) +"gz" = ( +/obj/machinery/pointdefense, +/turf/simulated/floor/plating/external, +/area/ship/mercenary/engineering) +"gA" = ( +/obj/machinery/pointdefense, +/turf/simulated/floor/plating/external, +/area/ship/mercenary/bridge) +"gB" = ( +/obj/machinery/pointdefense, +/turf/simulated/floor/plating/external, +/area/ship/mercenary/engineeringcntrl) +"gC" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/air) +"gD" = ( +/obj/structure/bed/chair/backed_red{ + icon_state = "onestar_chair_red"; + dir = 4 + }, +/obj/machinery/recharger/wallcharger{ + pixel_z = -2; + pixel_w = -23 + }, +/turf/simulated/floor/tiled/dark, +/area/shuttle/mercboat) +"gE" = ( +/obj/structure/bed/chair/backed_red{ + icon_state = "onestar_chair_red"; + dir = 8 + }, +/obj/machinery/recharger/wallcharger{ + pixel_w = 32; + pixel_z = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/shuttle/mercboat) +"gF" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister/phoron, +/obj/structure/window/reinforced, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"gG" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"gH" = ( +/obj/structure/table/rack, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"gI" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 1 + }, +/obj/machinery/suit_cycler/syndicate, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"gJ" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/item/weapon/storage/firstaid/insiderepair, +/obj/item/weapon/storage/firstaid/insiderepair, +/obj/item/weapon/storage/firstaid/insiderepair, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"gK" = ( +/obj/structure/table/rack, +/obj/effect/floor_decal/borderfloorblack{ + dir = 10 + }, +/obj/item/weapon/storage/toolbox/syndicate, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med1) +"gL" = ( +/obj/machinery/sleep_console{ + icon_state = "sleeperconsole"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"gM" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/air) +"gN" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"gO" = ( +/obj/effect/floor_decal/borderfloorblack/corner{ + icon_state = "borderfloorcorner_black"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"gP" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"gQ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + icon_state = "map_vent_out"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/fighter) +"gR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/computer/operating{ + icon_state = "computer"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/fighter) +"gS" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 8 + }, +/obj/machinery/optable, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/fighter) +"gT" = ( +/obj/machinery/sleeper, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"gU" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack/corner{ + icon_state = "borderfloorcorner_black"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/air) +"gV" = ( +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"gW" = ( +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"gX" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/hangar) +"gY" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + icon_state = "map_vent_out"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"gZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"ha" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"hb" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + icon_state = "map_scrubber_on"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/armoury) +"hc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"hd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"he" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"hf" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"hg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/atmos) +"hh" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1414; + id_tag = "southinteriordoor"; + name = "Modified External Airlock"; + req_one_access = list(150) + }, +/obj/effect/floor_decal/borderfloorblack/full, +/turf/simulated/floor, +/area/ship/mercenary/southairlock) +"hi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/machinery/door/airlock/glass_external{ + frequency = 1414; + id_tag = "southinteriordoor"; + name = "Modified External Airlock"; + req_one_access = list(150) + }, +/obj/effect/floor_decal/borderfloorblack/full, +/turf/simulated/floor, +/area/ship/mercenary/southairlock) +"hj" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/item/weapon/storage/box/freezer, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/fighter) +"hk" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med1) +"hl" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"hm" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 5 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/med) +"hn" = ( +/obj/structure/bed/chair/comfy/red{ + icon_state = "comfychair"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/barracks) +"ho" = ( +/obj/machinery/portable_atmospherics/canister/phoron, +/obj/structure/window/reinforced, +/obj/effect/floor_decal/borderfloorblack{ + dir = 9 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"hp" = ( +/obj/structure/closet/crate, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 9 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"hq" = ( +/obj/structure/table/rack, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"hr" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"hs" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"ht" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineering) +"hu" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"hv" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"hw" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"hx" = ( +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/engineeringcntrl) +"hy" = ( +/obj/machinery/computer/ship/sensors{ + icon_state = "computer"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"hz" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"hA" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorblack, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"hB" = ( +/obj/structure/table/reinforced, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/obj/machinery/button/remote/blast_door{ + id = "mercblast" + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"hC" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"hD" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 9 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"hE" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloorblack/corner, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"hF" = ( +/obj/effect/floor_decal/borderfloorblack/corner{ + icon_state = "borderfloorcorner_black"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/mercenary/bridge) +"hG" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/obj/item/weapon/storage/firstaid/surgery, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/fighter) +"hH" = ( +/obj/structure/table/rack, +/obj/effect/floor_decal/borderfloorblack{ + dir = 10 + }, +/obj/item/weapon/storage/box/bodybags, +/turf/simulated/floor/tiled/white, +/area/ship/mercenary/fighter) + +(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 +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 +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 +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 +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 +"} +(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 +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 +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 +"} +(4,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(5,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(6,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(7,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(8,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(9,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(10,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(11,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(12,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(13,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(14,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(15,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(16,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(17,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(18,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(19,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(20,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(21,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(22,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(23,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(24,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +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 +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 +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 +"} +(26,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(27,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(28,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(29,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(30,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(31,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(32,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(33,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(34,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +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 +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 +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 +"} +(36,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(37,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(38,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(39,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(41,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(42,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(43,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(44,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(45,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(46,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 +aa +aa +aa +aa +aA +aA +aF +cB +cB +cB +cB +cB +cB +cB +cB +gN +aA +aA +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gd +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 +"} +(47,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 +ab +aa +aa +aa +aA +aF +cc +aX +aX +aX +cv +aX +aX +aX +aX +gO +gN +aA +aa +aa +aa +eF +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 +"} +(48,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 +ab +ab +aa +aa +aa +aA +aR +aX +aX +gD +gD +co +bU +gD +gD +aX +ep +gV +aA +aa +aa +aa +eF +eF +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 +"} +(49,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 +ab +aH +aa +aa +aa +aA +aT +aY +bv +bT +co +co +co +co +co +aX +aX +gW +aA +aa +aa +aa +gm +eF +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 +"} +(50,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 +ab +aH +aa +aa +aa +aA +aT +aY +bw +bT +co +co +co +co +co +aX +aX +gW +aA +aa +aa +aa +gm +eF +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 +"} +(51,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 +ab +aH +ac +ac +ac +gs +aR +aX +aX +gE +gE +cw +cO +gE +gE +aX +eq +gV +gs +fh +fh +fh +gm +eF +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 +"} +(52,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 +ab +aH +ad +ad +ad +gs +aT +aE +aX +aX +aX +cv +aX +aX +aX +aX +aE +gW +gs +fi +fi +fi +gm +eF +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 +"} +(53,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 +ab +aH +ae +ae +ae +gs +ba +aZ +fU +fR +fS +aE +aE +fS +fR +fU +aE +gW +gs +fj +fj +fj +gm +eF +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 +"} +(54,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 +ab +aH +af +al +au +aB +bb +cd +cC +cK +ds +aG +cQ +ds +fL +cC +gP +gX +aB +fk +fp +fw +gm +eF +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 +"} +(55,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 +ab +aH +ag +am +av +aH +dM +dM +dM +dM +dM +cx +dc +dY +dY +dY +dY +gm +gm +fl +fq +fx +gm +eF +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 +"} +(56,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 +ab +aH +ah +an +aw +aC +dM +bA +cE +gK +dM +dy +eR +dY +dR +fb +hH +gm +fa +fm +fr +fy +gm +eF +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 +"} +(57,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 +ab +aH +ai +ao +aw +aC +dM +ce +bx +cL +dM +dz +eR +dY +fT +dT +gQ +gm +fa +fm +fs +fz +gm +eF +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 +"} +(58,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 +ab +aH +aH +aH +aH +aH +dM +cj +by +cM +dM +dy +eR +dY +fV +dU +gR +gm +gm +gm +gm +gm +gm +eF +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 +"} +(59,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 +ab +ab +ab +ab +ab +dM +bX +bz +cN +dM +dE +eR +dY +fW +dV +gS +gm +eF +eF +eF +eF +eF +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 +"} +(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 +aa +aa +aa +aa +ap +dM +cD +eK +hk +dM +dG +eR +dY +du +hj +hG +gk +di +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 +aa +aa +"} +(61,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 +aa +aa +gw +ap +dh +dM +dM +dM +bq +dM +dG +eR +gk +dv +gk +gk +gk +gk +di +gy +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 +"} +(62,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 +aa +aa +ap +ap +dh +aJ +ck +cH +bZ +cq +dJ +eT +dt +dw +gL +gT +fM +gk +di +di +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 +"} +(63,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 +aa +aa +ap +ap +dh +dq +be +aI +cP +dh +dS +eR +gk +ge +dA +dA +gY +gk +di +di +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 +"} +(64,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 +aa +aa +ap +ap +dh +dL +bf +bB +cT +dh +dW +eR +gk +gf +er +eI +gZ +gk +di +di +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 +"} +(65,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 +aa +aa +aa +ap +dh +fX +bg +aI +cW +dh +dX +eR +gk +gh +es +eH +ha +gk +di +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 +aa +"} +(66,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 +aa +aa +gw +ap +dh +dq +bh +aI +cW +dh +dy +eR +gk +gu +dA +dA +ha +gk +di +gy +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 +"} +(67,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 +aa +aa +ap +ap +dh +hl +aI +aI +cW +dh +dy +eR +gk +gu +dA +dA +hb +gk +di +di +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 +"} +(68,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 +aa +aa +ap +ap +dh +hm +bi +bC +gg +dh +dy +eR +gk +eG +gJ +fc +fN +gk +di +di +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 +"} +(69,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 +aa +aj +ap +ap +dh +dh +dh +dh +dh +dh +cG +dj +gk +gk +gk +gk +gk +gk +di +di +fA +ga +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 +"} +(70,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 +aa +fY +aq +aL +ak +bc +cr +cI +cX +cI +cz +cS +cI +cU +cI +dB +fd +hh +gc +fn +fZ +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 +"} +(71,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 +aa +fY +ar +ax +aD +bd +cy +cJ +cY +dx +bj +cF +aK +dk +cJ +dC +fK +hi +fo +ft +fZ +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 +"} +(72,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 +fH +aj +as +gn +gn +gn +gn +gn +gn +gn +cR +dm +gl +gl +gl +gl +gl +gl +gl +dl +fA +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 +"} +(73,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 +aa +aa +as +gn +aN +aM +aM +bE +fB +gn +ec +eU +gl +dN +dZ +ew +ex +ff +gl +dl +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 +"} +(74,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 +aa +aa +as +gn +aO +bk +bk +bD +cf +gn +et +eU +gl +gv +ea +eM +fF +hg +gl +dl +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 +"} +(75,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 +aa +aa +as +gn +ei +fD +fE +ch +cg +gn +et +eU +gl +dF +eb +ex +eN +fC +gl +dl +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 +"} +(76,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 +aa +aa +as +gn +gn +gn +gn +gn +ci +gn +et +eU +gl +gl +gl +gl +fO +gl +gl +dl +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 +"} +(77,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 +aa +aa +aa +as +gn +aP +cA +bF +gb +ct +eu +eV +eO +gC +gM +ez +eP +gr +fg +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 +aa +"} +(78,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 +aa +aa +gx +as +gn +bl +bm +bG +aQ +cV +ev +eU +fJ +dH +ed +gU +eQ +gr +fg +gz +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 +"} +(79,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 +aa +aa +as +as +gn +bS +bn +bH +cZ +gn +ev +eW +gp +gp +gp +gp +fP +gp +do +do +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 +"} +(80,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 +aa +aa +as +as +gn +bV +bo +bY +db +gn +ey +fe +gp +ho +ee +ht +eS +gp +do +do +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 +"} +(81,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 +aa +aa +as +as +gn +bW +bp +bJ +df +gn +ev +eU +gp +gF +ef +eA +hc +gp +do +do +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 +"} +(82,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 +aa +aa +as +as +gn +aS +aQ +bK +dg +gn +eJ +fG +gp +gG +eg +dK +hd +gp +do +do +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 +"} +(83,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 +aa +aa +as +as +gn +aS +aQ +bL +dr +gn +ev +eU +gp +gG +eh +eB +he +gp +do +do +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 +"} +(84,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 +aa +aa +as +as +gn +aS +aQ +bM +df +gn +ev +eU +gp +gH +gj +dK +hf +gp +do +do +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 +"} +(85,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 +aa +aa +as +as +gn +bI +aQ +bK +dg +gn +eL +fI +gp +gI +dK +dK +hf +gp +do +do +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 +"} +(86,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 +aa +aa +as +as +gn +aS +aQ +ca +db +gn +ev +eU +gp +gi +hq +hr +hs +gp +do +do +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 +"} +(87,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 +aa +aa +as +as +gn +bQ +aQ +bN +hn +gn +dD +dI +gq +gq +ej +ej +fQ +gq +dp +fu +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 +"} +(88,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 +aa +aa +at +ay +go +go +cs +go +go +go +cs +dn +gq +hp +eo +eX +eZ +gq +dp +fv +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 +"} +(89,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 +aa +aa +aa +ay +go +da +bO +cu +de +de +hz +hC +gq +cp +el +eD +hu +gq +dp +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 +aa +"} +(90,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 +aa +aa +aa +az +aU +hF +bs +bP +cl +cl +hE +hD +gq +dO +em +eE +hv +gq +dp +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 +aa +"} +(91,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 +aa +aa +aa +az +aW +br +aV +cb +cm +aV +hA +go +gq +dP +en +dQ +hw +gq +dp +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 +aa +"} +(92,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 +aa +aa +aa +ay +go +bu +bR +aV +aV +bt +hB +go +gq +ek +eC +eY +hx +gq +dp +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 +aa +"} +(93,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 +aa +aa +aa +ay +go +go +cn +dd +gt +hy +go +go +gq +gq +gq +gq +gq +gq +dp +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 +aa +"} +(94,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 +aa +aa +aa +ay +ay +ay +az +az +az +az +ay +ay +dp +dp +dp +dp +dp +dp +dp +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 +aa +"} +(95,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 +aa +aa +aa +gA +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gB +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 +aa +"} +(96,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(97,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(98,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(99,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(100,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(101,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(102,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(103,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(104,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(105,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(106,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(107,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(108,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(109,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(110,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(111,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(112,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(113,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(114,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(115,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(116,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(117,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(118,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(119,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(120,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(121,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(122,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(123,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(124,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(125,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(126,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(127,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(128,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(129,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(130,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(131,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(132,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(133,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(134,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(135,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(136,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(137,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(138,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(139,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(140,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} diff --git a/maps/tether/submaps/om_ships/vespa.dm b/maps/tether/submaps/om_ships/vespa.dm index ff8c4607771..8ff9577b2f2 100644 --- a/maps/tether/submaps/om_ships/vespa.dm +++ b/maps/tether/submaps/om_ships/vespa.dm @@ -76,14 +76,18 @@ name = "\improper Exp Ship - Medical Surgery" /area/ship/expe/armoury name = "\improper Exp Ship - Lightweight Armoury" -/area/ship/expe/science - name = "\improper Exp Ship - Science" -/area/ship/expe/sciencestorage - name = "\improper Exp Ship - Science Storage Room" -/area/ship/expe/scienceequip - name = "\improper Exp Ship - Science Equipment Room" -/area/ship/expe/sciencemain - name = "\improper Exp Ship - Science Main" +/area/ship/expe/secmain + name = "\improper Exp Ship - Security" +/area/ship/expe/seclobby + name = "\improper Exp Ship - Security Lobby" +/area/ship/expe/seclobby2 + name = "\improper Exp Ship - Security Lobby" +/area/ship/expe/seceq + name = "\improper Exp Ship - Security Equipment Room" +/area/ship/expe/sechall + name = "\improper Exp Ship - Security Hall" +/area/ship/expe/seccells + name = "\improper Exp Ship - Security Holding Cells" /area/ship/expe/cafet name = "\improper Exp Ship - Cafeteria" /area/ship/expe/cargo @@ -125,7 +129,7 @@ icon_state = "shuttle" // The shuttle's 'shuttle' computer -/obj/machinery/computer/shuttle_control/explore/vespaboat +/obj/machinery/computer/shuttle_control/multi/vespaboat name = "Vespa's Shuttle control console" shuttle_tag = "Vespa's Ship's Boat" req_one_access = list(access_pilot) @@ -146,4 +150,4 @@ docking_controller_tag = "vespaboat_docker" shuttle_area = /area/shuttle/vespaboat fuel_consumption = 0 - defer_initialisation = TRUE + defer_initialisation = TRUE \ No newline at end of file diff --git a/maps/tether/submaps/om_ships/vespa.dmm b/maps/tether/submaps/om_ships/vespa.dmm index 5ce14109853..ac2496224ae 100644 --- a/maps/tether/submaps/om_ships/vespa.dmm +++ b/maps/tether/submaps/om_ships/vespa.dmm @@ -3,136 +3,70 @@ /turf/space, /area/space) "ab" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/atmospherics) -"ac" = ( -/obj/machinery/portable_atmospherics/powered/pump, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/atmospherics) -"ad" = ( -/obj/machinery/atmospherics/pipe/simple/hidden, -/turf/simulated/wall/rpshull, -/area/ship/expe/atmospherics) -"ae" = ( -/obj/item/latexballon, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/atmospherics) -"af" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - icon_state = "intact"; - dir = 9 - }, -/turf/simulated/wall/rpshull, -/area/ship/expe/atmospherics) -"ag" = ( -/obj/structure/lattice, -/turf/space, -/area/space) -"ah" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/engines) -"ai" = ( -/obj/machinery/access_button/airlock_exterior{ - pixel_x = 0; - pixel_y = -28; - master_tag = "northairlock"; - frequency = 1449 - }, -/turf/space, -/area/space) -"aj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/northairlock) -"ak" = ( -/turf/simulated/wall/rpshull, -/area/space) -"al" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/maintenancerim) -"am" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/northairlock) -"an" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/maintenance1) -"ao" = ( /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/red/border, +/obj/machinery/firealarm{ + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"ac" = ( +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/red/border, +/obj/machinery/firealarm{ + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seceq) +"ad" = ( +/obj/effect/shuttle_landmark{ + base_area = /area/space; + base_turf = /turf/space; + landmark_tag = "HPV_port"; + name = "port of Vespa" + }, +/turf/space, +/area/space) +"ae" = ( +/obj/effect/shuttle_landmark/automatic{ + landmark_tag = "vespaP"; + name = "port of Vespa" + }, +/turf/space, +/area/space) +"af" = ( /turf/simulated/wall/rpshull, -/area/ship/expe/maintenancerim) -"ap" = ( +/area/ship/expe/atmospherics) +"ag" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/wall/rpshull, -/area/ship/expe/hangar) -"aq" = ( +/area/ship/expe/atmospherics) +"ah" = ( /turf/simulated/wall/rpshull, -/area/ship/expe/hangarcontrol) -"ar" = ( +/area/space) +"ai" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/wall/rpshull, -/area/ship/expe/cafet) -"as" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/cabin1) -"at" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/cabin2) -"au" = ( +/area/ship/expe/atmospherics) +"aj" = ( +/obj/machinery/portable_atmospherics/powered/pump, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/atmospherics) -"av" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, +"ak" = ( +/obj/item/latexballon, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/maintenance1) -"aw" = ( -/obj/machinery/firealarm{ - pixel_x = 0; - pixel_y = 28 - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 9 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 9 - }, -/obj/structure/closet/secure_closet/medical1, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"ax" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/effect/floor_decal/techfloor, +/area/ship/expe/atmospherics) +"al" = ( /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"ay" = ( +/area/ship/expe/atmospherics) +"am" = ( /obj/machinery/portable_atmospherics/powered/scrubber, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/atmospherics) -"az" = ( +"an" = ( /obj/machinery/portable_atmospherics/canister/phoron, /obj/machinery/light{ icon_state = "tube1"; @@ -140,18 +74,11 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/atmospherics) -"aA" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/cabin3) -"aB" = ( +"ao" = ( /obj/machinery/portable_atmospherics/canister/phoron, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/atmospherics) -"aC" = ( -/obj/structure/closet/firecloset/full, -/turf/simulated/floor, -/area/ship/expe/atmospherics) -"aD" = ( +"ap" = ( /obj/machinery/alarm{ frequency = 1441; pixel_y = 22 @@ -159,114 +86,67 @@ /obj/machinery/portable_atmospherics/canister/air, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/atmospherics) -"aE" = ( +"aq" = ( /turf/simulated/floor, /area/ship/expe/atmospherics) -"aF" = ( +"ar" = ( /obj/machinery/portable_atmospherics/canister/air, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/atmospherics) -"aG" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 6 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"aH" = ( +"as" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 6 }, /turf/simulated/floor, /area/ship/expe/atmospherics) -"aI" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/cabin4) -"aJ" = ( +"at" = ( /obj/machinery/atmospherics/binary/pump{ icon_state = "map_off"; dir = 4 }, /turf/simulated/floor, /area/ship/expe/atmospherics) -"aK" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/cabin5) -"aL" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 +"au" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + icon_state = "intact"; + dir = 9 }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"aM" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/wall/rpshull, /area/ship/expe/atmospherics) -"aN" = ( +"av" = ( /obj/machinery/atmospherics/pipe/tank/air, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/atmospherics) -"aO" = ( +"aw" = ( /obj/machinery/atmospherics/valve, /turf/simulated/floor, /area/ship/expe/atmospherics) -"aP" = ( +"ax" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/engines) +"ay" = ( /obj/machinery/atmospherics/valve/open, /turf/simulated/floor, /area/ship/expe/atmospherics) -"aQ" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/cabin6) -"aR" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/cabin7) -"aS" = ( +"az" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 1; icon_state = "map" }, /turf/simulated/floor, /area/ship/expe/atmospherics) -"aT" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"aU" = ( +"aA" = ( /obj/machinery/atmospherics/pipe/manifold/hidden, /turf/simulated/floor, /area/ship/expe/atmospherics) -"aV" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/cabin8) -"aW" = ( +"aB" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 10; icon_state = "intact" }, /turf/simulated/floor, /area/ship/expe/atmospherics) -"aX" = ( +"aC" = ( /obj/machinery/atmospherics/binary/pump/on{ name = "gas pump - air - distro" }, @@ -276,11 +156,11 @@ }, /turf/simulated/floor, /area/ship/expe/atmospherics) -"aY" = ( +"aD" = ( /obj/machinery/atmospherics/binary/pump, /turf/simulated/floor, /area/ship/expe/atmospherics) -"aZ" = ( +"aE" = ( /obj/machinery/atmospherics/portables_connector{ icon_state = "map_connector"; dir = 1 @@ -288,15 +168,25 @@ /obj/machinery/portable_atmospherics/canister/empty, /turf/simulated/floor, /area/ship/expe/atmospherics) -"ba" = ( +"aF" = ( /obj/machinery/atmospherics/binary/pump/on{ name = "gas pump - waste - scrubbers"; icon_state = "map_on"; dir = 1 }, +/obj/machinery/light{ + dir = 4 + }, /turf/simulated/floor, /area/ship/expe/atmospherics) -"bb" = ( +"aG" = ( +/obj/machinery/atmospherics/unary/engine{ + icon_state = "nozzle"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engines) +"aH" = ( /obj/structure/window/reinforced{ icon_state = "rwindow"; dir = 4 @@ -307,35 +197,33 @@ }, /turf/simulated/floor, /area/ship/expe/engines) -"bc" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - icon_state = "intact"; - dir = 5 - }, -/turf/simulated/floor, -/area/ship/expe/atmospherics) -"bd" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - icon_state = "intact"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/atmospherics) -"be" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/cabin9) -"bf" = ( +"aI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/green{ icon_state = "intact"; dir = 10 }, /turf/simulated/floor, /area/ship/expe/engines) -"bg" = ( -/obj/machinery/atmospherics/pipe/simple/hidden, +"aJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + icon_state = "intact"; + dir = 5 + }, /turf/simulated/floor, /area/ship/expe/atmospherics) -"bh" = ( +"aK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + icon_state = "intact"; + dir = 8 + }, +/turf/simulated/floor, +/area/ship/expe/atmospherics) +"aL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/meter, +/turf/simulated/floor, +/area/ship/expe/atmospherics) +"aM" = ( /obj/structure/window/reinforced{ icon_state = "rwindow"; dir = 4 @@ -346,7 +234,11 @@ }, /turf/simulated/floor, /area/ship/expe/engines) -"bi" = ( +"aN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/green, +/turf/simulated/floor, +/area/ship/expe/engines) +"aO" = ( /obj/machinery/power/apc{ dir = 8; name = "west bump"; @@ -361,59 +253,30 @@ }, /turf/simulated/floor, /area/ship/expe/atmospherics) -"bj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/northairlock) -"bk" = ( +"aP" = ( /obj/structure/cable{ icon_state = "4-8" }, /turf/simulated/floor, /area/ship/expe/atmospherics) -"bl" = ( +"aQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal, /obj/structure/cable{ icon_state = "4-8" }, /turf/simulated/floor, /area/ship/expe/atmospherics) -"bm" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack/full, -/obj/effect/floor_decal/corner/yellow/borderfull, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/engineering, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringstorage) -"bn" = ( +"aR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal, /obj/structure/cable{ icon_state = "2-8" }, /turf/simulated/floor, /area/ship/expe/atmospherics) -"bo" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/northairlock) -"bp" = ( +"aS" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/maintenancerim) +"aT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/green, /obj/machinery/light{ dir = 4; @@ -421,113 +284,19 @@ }, /turf/simulated/floor, /area/ship/expe/engines) -"bq" = ( -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangarcontrol) -"br" = ( +"aU" = ( /obj/machinery/cablelayer, /turf/simulated/floor, /area/ship/expe/atmospherics) -"bs" = ( +"aV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 5 }, +/obj/machinery/meter, /turf/simulated/floor, /area/ship/expe/atmospherics) -"bt" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"bu" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/obj/structure/closet/walllocker/emerglocker/north, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"bv" = ( -/obj/machinery/door/airlock/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" - }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin1) -"bw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"bx" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 6 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"by" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/closet/walllocker/emerglocker/north, -/turf/simulated/floor, -/area/ship/expe/sm) -"bz" = ( +"aW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -539,40 +308,25 @@ }, /turf/simulated/floor, /area/ship/expe/atmospherics) -"bA" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; +"aX" = ( +/obj/machinery/iv_drip, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"aY" = ( +/turf/simulated/floor, +/area/space) +"aZ" = ( +/obj/structure/window/reinforced{ + icon_state = "rwindow"; dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ +/obj/machinery/atmospherics/pipe/simple/hidden/green{ icon_state = "intact"; - dir = 8 - }, -/obj/machinery/light{ - dir = 1 + dir = 9 }, /turf/simulated/floor, -/area/ship/expe/sm) -"bB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"bC" = ( -/obj/machinery/door/airlock/maintenance_hatch, +/area/ship/expe/engines) +"ba" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -581,57 +335,99 @@ icon_state = "1-2" }, /obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/atmospherics) -"bD" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack/full, -/obj/effect/floor_decal/corner/yellow/borderfull, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/engineering, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineering) -"bE" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"bF" = ( -/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/airlock/maintenance/common, /turf/simulated/floor, /area/ship/expe/atmospherics) -"bG" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue, +"bb" = ( +/obj/item/weapon/caution/cone, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/maintenancerim) +"bc" = ( /turf/simulated/wall/rpshull, /area/ship/expe/northairlock) -"bH" = ( -/obj/machinery/door/airlock/maintenance_hatch, +"bd" = ( +/obj/structure/sign/department/dock, +/turf/simulated/wall/rpshull, +/area/ship/expe/northairlock) +"be" = ( +/obj/machinery/access_button/airlock_exterior{ + pixel_x = 0; + pixel_y = -28; + master_tag = "northairlock"; + frequency = 1449 + }, +/turf/space, +/area/space) +"bf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/green, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bg" = ( +/obj/structure/closet/firecloset/full, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bh" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bi" = ( +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bj" = ( +/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, +/area/ship/expe/maintenancerim) +"bk" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bl" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bm" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bn" = ( +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 8 + }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/atmospherics) -"bI" = ( +/area/ship/expe/maintenancerim) +"bo" = ( +/obj/machinery/atmospherics/pipe/cap/visible/scrubbers, +/obj/machinery/atmospherics/pipe/cap/visible/supply, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/maintenancerim) +"bp" = ( /obj/machinery/door/airlock/external{ frequency = 1449; id_tag = "northext" @@ -640,70 +436,193 @@ /obj/structure/fans/tiny, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/northairlock) -"bJ" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ +"bq" = ( +/obj/machinery/door/airlock/external{ + frequency = 1449; + id_tag = "northext" + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/northairlock) +"br" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/maintenance1) +"bs" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/maintenance1) +"bt" = ( +/obj/structure/lattice, +/turf/space, +/area/space) +"bu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/green{ + icon_state = "intact"; + dir = 6 + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/green{ + icon_state = "intact"; dir = 4 }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 8 +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/green{ + icon_state = "intact"; + dir = 4 }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"bK" = ( -/obj/structure/cable{ - icon_state = "4-8" +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/green{ + icon_state = "intact"; + dir = 9 + }, +/obj/machinery/meter, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"by" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 6 + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 9 }, /obj/structure/cable{ d1 = 1; d2 = 4; icon_state = "1-4" }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 8 +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bB" = ( +/obj/structure/sign/department/conference_room, +/turf/simulated/wall/rpshull, +/area/ship/expe/expedition) +"bC" = ( +/obj/structure/closet/crate/freezer/rations, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bD" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 5 }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 5 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/machinery/firealarm{ + pixel_z = 1; + pixel_w = 31 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seccells) +"bE" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light/small, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bG" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bH" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/maintenancerim) +"bI" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/maintenancerim) +"bJ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light/small, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bK" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bL" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/item/weapon/handcuffs/fuzzy, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bM" = ( /obj/structure/cable{ icon_state = "2-8" }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"bL" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/bridge) -"bM" = ( -/obj/machinery/door/airlock/external{ - frequency = 1449; - id_tag = "northext" - }, -/obj/structure/fans/tiny, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/northairlock) -"bN" = ( /turf/simulated/floor, /area/ship/expe/maintenancerim) -"bO" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 9 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"bP" = ( +"bN" = ( /obj/machinery/power/apc{ dir = 1; name = "north bump"; @@ -720,138 +639,126 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/northairlock) -"bQ" = ( +"bO" = ( /obj/machinery/alarm{ frequency = 1441; pixel_y = 22 }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/northairlock) -"bR" = ( +"bP" = ( /obj/machinery/door/airlock/glass_external{ frequency = 1449; id_tag = "northint" }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/northairlock) -"bS" = ( +"bQ" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ frequency = 1449; id_tag = "northvent" }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/northairlock) -"bT" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ +"bR" = ( +/obj/machinery/atmospherics/portables_connector{ + icon_state = "map_connector"; dir = 4 }, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor, +/area/ship/expe/northairlock) +"bS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/blue{ icon_state = "intact"; - dir = 8 - }, -/obj/structure/cable{ - icon_state = "2-8" + dir = 10 }, /turf/simulated/floor, -/area/ship/expe/sm) +/area/ship/expe/maintenance1) +"bT" = ( +/obj/structure/sign/poster, +/turf/simulated/wall/rpshull, +/area/ship/expe/maintenance1) "bU" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 8 - }, +/obj/machinery/atmospherics/pipe/simple/hidden/green, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bV" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/hangar) +"bW" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor, +/area/ship/expe/hangar) +"bX" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/hangarcontrol) +"bY" = ( +/obj/machinery/status_display, +/turf/simulated/wall/rpshull, +/area/ship/expe/hangarcontrol) +"bZ" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/corridor1) +"ca" = ( +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"cb" = ( +/obj/machinery/door/airlock/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"cc" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/cabin1) +"cd" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/cabin2) +"ce" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/cabin3) +"cf" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/cabin4) +"cg" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/cabin5) +"ch" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/cabin6) +"ci" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/cabin7) +"cj" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/cabin8) +"ck" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/cabin9) +"cl" = ( /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/machinery/door/firedoor/glass/hidden{ - icon_state = "door_open"; - dir = 8 +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"cm" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"bV" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"bW" = ( -/turf/simulated/floor/tiled/techfloor, /area/ship/expe/northairlock) -"bX" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"bY" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, +"cn" = ( +/obj/effect/floor_decal/sign/dock/one, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"bZ" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"ca" = ( -/obj/structure/window/reinforced{ - icon_state = "rwindow"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 9 - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"cb" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"cc" = ( -/obj/structure/closet/firecloset/full, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"cd" = ( +/area/ship/expe/northairlock) +"co" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/blue{ icon_state = "map"; dir = 8 @@ -869,7 +776,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/northairlock) -"ce" = ( +"cp" = ( /obj/machinery/light{ dir = 4; icon_state = "tube1" @@ -890,136 +797,74 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/northairlock) -"cf" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 6 - }, +"cq" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/blue, /turf/simulated/floor, -/area/ship/expe/maintenancerim) -"cg" = ( +/area/ship/expe/maintenance1) +"cr" = ( +/turf/simulated/floor, +/area/ship/expe/maintenance1) +"cs" = ( +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"ct" = ( /obj/machinery/light{ dir = 1 }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangar) -"ch" = ( +"cu" = ( /obj/machinery/alarm{ frequency = 1441; pixel_y = 22 }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangar) -"ci" = ( +"cv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangar) -"cj" = ( -/obj/machinery/atmospherics/unary/engine{ - icon_state = "nozzle"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engines) -"ck" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/turf/simulated/floor, -/area/ship/expe/engines) -"cl" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/table/rack, -/obj/item/weapon/storage/box/lights/mixed, +"cw" = ( /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangarcontrol) -"cm" = ( +"cx" = ( +/obj/machinery/door/airlock/glass_medical{ + req_one_access = newlist() + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"cy" = ( /obj/machinery/alarm{ frequency = 1441; pixel_y = 22 }, -/obj/structure/table/rack, -/obj/item/weapon/storage/box/lights/mixed, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangarcontrol) -"cn" = ( -/obj/structure/closet/walllocker/emerglocker/north, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"co" = ( -/obj/machinery/vending/cigarette, -/obj/effect/floor_decal/corner/white/border{ - icon_state = "bordercolor"; - dir = 9 +"cz" = ( +/obj/machinery/door/airlock/glass_security{ + req_one_access = newlist() }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"cp" = ( -/obj/machinery/vending/coffee, -/obj/effect/floor_decal/corner/white/border{ - icon_state = "bordercolor"; - dir = 1 - }, +/area/ship/expe/hangarcontrol) +"cA" = ( /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"cq" = ( -/obj/machinery/vending/cola, -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/floor_decal/corner/white/border{ - icon_state = "bordercolor"; - dir = 1 - }, +/area/ship/expe/corridor1) +"cB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"cr" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 6 - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"cs" = ( -/obj/machinery/vending/fitness, +/area/ship/expe/corridor1) +"cC" = ( /obj/machinery/alarm{ frequency = 1441; pixel_y = 22 }, -/obj/effect/floor_decal/corner/white/border{ - icon_state = "bordercolor"; - dir = 1 - }, +/obj/structure/table/woodentable, +/obj/item/weapon/soap/nanotrasen, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"ct" = ( -/obj/machinery/vending/snack, -/obj/effect/floor_decal/corner/white/border{ - icon_state = "bordercolor"; - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"cu" = ( -/obj/structure/table/rack, -/obj/item/weapon/storage/bag/trash, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangarcontrol) -"cv" = ( +/area/ship/expe/cabin1) +"cD" = ( /obj/machinery/power/apc{ dir = 1; name = "north bump"; @@ -1037,26 +882,50 @@ /obj/structure/closet/secure_closet/personal/cabinet, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin1) -"cw" = ( +"cE" = ( /obj/item/modular_computer/console/preset/civilian, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin1) -"cx" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 4 +"cF" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"cy" = ( +/obj/structure/table/woodentable, +/obj/machinery/microwave, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin2) +"cG" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/structure/closet/secure_closet/personal/cabinet, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin2) +"cH" = ( +/obj/item/modular_computer/console/preset/civilian, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin2) +"cI" = ( /obj/machinery/alarm{ frequency = 1441; pixel_y = 22 }, /obj/structure/table/woodentable, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin2) -"cz" = ( +/area/ship/expe/cabin3) +"cJ" = ( /obj/machinery/power/apc{ dir = 1; name = "north bump"; @@ -1073,41 +942,199 @@ }, /obj/structure/closet/secure_closet/personal/cabinet, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin2) -"cA" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack/full, -/obj/machinery/door/firedoor/glass, -/obj/effect/floor_decal/corner/yellow/borderfull, -/obj/machinery/door/airlock/engineering, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/sm) -"cB" = ( +/area/ship/expe/cabin3) +"cK" = ( /obj/item/modular_computer/console/preset/civilian, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin2) -"cC" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 +/area/ship/expe/cabin3) +"cL" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 +/obj/structure/table/woodentable, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin4) +"cM" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 32 }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"cD" = ( +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/structure/closet/secure_closet/personal/cabinet, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin4) +"cN" = ( +/obj/item/modular_computer/console/preset/civilian, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin4) +"cO" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/structure/table/woodentable, +/obj/machinery/microwave, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin5) +"cP" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/structure/closet/secure_closet/personal/cabinet, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin5) +"cQ" = ( +/obj/item/modular_computer/console/preset/civilian, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin5) +"cR" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/structure/table/woodentable, +/obj/item/weapon/soap/nanotrasen, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin6) +"cS" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/structure/closet/secure_closet/personal/cabinet, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin6) +"cT" = ( +/obj/item/modular_computer/console/preset/civilian, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin6) +"cU" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/structure/table/woodentable, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin7) +"cV" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/structure/closet/secure_closet/personal/cabinet, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin7) +"cW" = ( +/obj/item/modular_computer/console/preset/civilian, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin7) +"cX" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/structure/table/woodentable, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin8) +"cY" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/structure/closet/secure_closet/personal/cabinet, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin8) +"cZ" = ( +/obj/item/modular_computer/console/preset/civilian, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin8) +"da" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/structure/table/woodentable, +/obj/machinery/microwave, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin9) +"db" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/structure/closet/secure_closet/personal/cabinet, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin9) +"dc" = ( +/obj/item/modular_computer/console/preset/civilian, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin9) +"dd" = ( +/obj/structure/sign/poster/nanotrasen, +/turf/simulated/wall/rpshull, +/area/ship/expe/northairlock) +"de" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /obj/structure/cable{ d1 = 1; @@ -1116,7 +1143,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/northairlock) -"cE" = ( +"df" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/machinery/light{ dir = 4; @@ -1129,10 +1156,82 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/northairlock) -"cF" = ( +"dg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue, /turf/simulated/wall/rpshull, -/area/ship/expe/engineeringstorage) -"cG" = ( +/area/ship/expe/northairlock) +"dh" = ( +/obj/structure/closet/firecloset/full, +/turf/simulated/floor, +/area/ship/expe/maintenance1) +"di" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue, +/turf/simulated/floor, +/area/ship/expe/maintenance1) +"dj" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/simulated/floor, +/area/ship/expe/maintenance1) +"dk" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor, +/area/ship/expe/maintenance1) +"dl" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor, +/area/ship/expe/maintenance1) +"dm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"dn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"do" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"dp" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ icon_state = "map-supply"; dir = 4 @@ -1143,96 +1242,60 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangar) -"cH" = ( -/obj/machinery/recharger/wallcharger{ - pixel_x = -25 - }, +"dq" = ( +/obj/structure/table/rack, +/obj/item/clothing/suit/space/void/medical, +/obj/item/clothing/head/helmet/space/void/medical, +/obj/item/device/suit_cooling_unit, +/obj/item/clothing/shoes/magboots, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangarcontrol) -"cI" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"cJ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 6 - }, +"dr" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangarcontrol) -"cK" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangarcontrol) -"cL" = ( +"ds" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, -/obj/effect/floor_decal/corner/white/border{ - icon_state = "bordercolor"; - dir = 8 - }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"cM" = ( +/area/ship/expe/hangarcontrol) +"dt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 9 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"cN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"cO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; dir = 10 }, -/obj/effect/floor_decal/corner/white/border{ - icon_state = "bordercolor"; +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"du" = ( +/obj/structure/table/rack, +/obj/item/clothing/head/helmet/space/void/security, +/obj/item/clothing/suit/space/void/security, +/obj/item/device/suit_cooling_unit, +/obj/item/clothing/shoes/magboots, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"dv" = ( +/obj/structure/sign/poster/nanotrasen, +/turf/simulated/wall/rpshull, +/area/ship/expe/corridor1) +"dw" = ( +/obj/machinery/light{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"cP" = ( +/area/ship/expe/corridor1) +"dx" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, -/obj/structure/bed/double, +/obj/structure/bed/double/padded, /obj/item/weapon/bedsheet/double, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin1) -"cQ" = ( +"dy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 6 @@ -1248,15 +1311,21 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin1) -"cR" = ( +"dz" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin1) +"dA" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, -/obj/structure/bed/double, +/obj/structure/bed/double/padded, /obj/item/weapon/bedsheet/double, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin2) -"cS" = ( +"dB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 6 @@ -1272,697 +1341,365 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin2) -"cT" = ( +"dC" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin2) -"cU" = ( -/obj/structure/cable{ - icon_state = "4-8" +"dD" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 }, -/obj/structure/closet/firecloset/full, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"cV" = ( +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/double, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/bridge) -"cW" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/maintenancerim) -"cY" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "4-8" +/area/ship/expe/cabin3) +"dE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 10 }, /obj/structure/cable{ d1 = 1; - d2 = 4; - icon_state = "1-4" + d2 = 2; + icon_state = "1-2" }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin3) +"dF" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin3) +"dG" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/double, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin4) +"dH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 10 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin4) +"dI" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin4) +"dJ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/double, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin5) +"dK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 10 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin5) +"dL" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin5) +"dM" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/double, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin6) +"dN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 10 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin6) +"dO" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin6) +"dP" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/double, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin7) +"dQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 10 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin7) +"dR" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin7) +"dS" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/double, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin8) +"dT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 10 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin8) +"dU" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin8) +"dV" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/double, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin9) +"dW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 10 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin9) +"dX" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin9) +"dY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/northairlock) +"dZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/northairlock) +"ea" = ( /obj/structure/cable{ d1 = 2; d2 = 4; icon_state = "2-4" }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor3) -"cZ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/northairlock) -"da" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/northairlock) -"db" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/engineering) -"dc" = ( -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"dd" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 5 }, /turf/simulated/floor, -/area/ship/expe/maintenancerim) -"de" = ( +/area/ship/expe/maintenance1) +"eb" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/hidden/blue{ icon_state = "intact"; dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 +/turf/simulated/floor, +/area/ship/expe/maintenance1) +"ec" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 9 }, /turf/simulated/floor, -/area/ship/expe/sm) -"df" = ( +/area/ship/expe/maintenance1) +"ed" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/ship/expe/maintenance1) +"ee" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor, +/area/ship/expe/maintenance1) +"ef" = ( /obj/machinery/shipsensors{ dir = 1 }, /turf/simulated/floor/airless, /area/ship/expe/bridge) -"dg" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangarcontrol) -"dh" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangarcontrol) -"di" = ( -/obj/machinery/firealarm{ - pixel_y = -26 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin3) -"dj" = ( -/obj/machinery/firealarm{ - pixel_y = -26 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin4) -"dk" = ( -/obj/machinery/firealarm{ - pixel_y = -26 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin5) -"dl" = ( -/obj/machinery/firealarm{ - pixel_y = -26 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin6) -"dm" = ( -/obj/item/weapon/stool/padded, -/obj/effect/floor_decal/corner/white/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"dn" = ( -/obj/machinery/firealarm{ - pixel_y = -26 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin7) -"do" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/structure/table/steel_reinforced, -/obj/item/pizzavoucher, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"dp" = ( -/obj/item/weapon/stool/padded, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"dq" = ( -/obj/machinery/firealarm{ - pixel_y = -26 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin8) -"dr" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/floor_decal/corner/white/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"ds" = ( +"eg" = ( /turf/simulated/wall/rpshull, -/area/ship/expe/sm) -"dt" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 9 - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"du" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"dv" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/corridor3) -"dw" = ( -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2"; - pixel_y = 0 - }, -/turf/space, -/area/space) -"dx" = ( -/obj/machinery/firealarm{ - pixel_y = -26 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin1) -"dy" = ( -/obj/machinery/firealarm{ - pixel_y = -26 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin9) -"dz" = ( -/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/ship/expe/cabin1) -"dA" = ( -/obj/machinery/light, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin1) -"dB" = ( -/obj/machinery/firealarm{ - pixel_y = -26 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin2) -"dC" = ( -/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/ship/expe/cabin2) -"dD" = ( -/obj/machinery/light, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin2) -"dE" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin1) -"dF" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/maintenancerim) -"dG" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/closet/secure_closet/personal/cabinet, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin3) -"dH" = ( -/obj/machinery/door/airlock/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" - }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin2) -"dI" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/structure/table/woodentable, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin3) -"dJ" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/closet/secure_closet/personal/cabinet, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin4) -"dK" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin3) -"dL" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/structure/table/woodentable, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin4) -"dM" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/closet/secure_closet/personal/cabinet, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin5) -"dN" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin4) -"dO" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/structure/table/woodentable, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin5) -"dP" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/closet/secure_closet/personal/cabinet, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin6) -"dQ" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin5) -"dR" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/structure/table/woodentable, -/obj/item/weapon/soap/nanotrasen, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin1) -"dS" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/closet/secure_closet/personal/cabinet, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin7) -"dT" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin6) -"dU" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/structure/table/woodentable, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin7) -"dV" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/closet/secure_closet/personal/cabinet, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin8) -"dW" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin7) -"dX" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/structure/table/woodentable, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin8) -"dY" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/closet/secure_closet/personal/cabinet, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin9) -"dZ" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin8) -"ea" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/structure/table/woodentable, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin9) -"eb" = ( -/obj/machinery/door/airlock/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" - }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin3) -"ec" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin9) -"ed" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/maintenance1) -"ee" = ( +/area/shuttle/vespaboat) +"eh" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/bridge) -"ef" = ( -/obj/structure/table/steel_reinforced, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"eg" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/structure/table/steel_reinforced, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"eh" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/structure/closet/crate, -/obj/fiftyspawner/phoron, -/turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) "ei" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 6 +/obj/structure/sign/poster/nanotrasen, +/turf/simulated/wall/rpshull, +/area/ship/expe/hangarcontrol) +"ej" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"ek" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; dir = 10 }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"el" = ( +/obj/machinery/status_display, +/turf/simulated/wall/rpshull, +/area/ship/expe/corridor1) +"em" = ( +/obj/machinery/firealarm{ + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin1) +"en" = ( +/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/ship/expe/cabin1) +"eo" = ( +/obj/machinery/light, +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin1) +"ep" = ( +/obj/machinery/firealarm{ + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin2) +"eq" = ( +/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/ship/expe/cabin2) +"er" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin2) +"es" = ( +/obj/machinery/firealarm{ + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin3) -"ej" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 10 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin4) -"ek" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 10 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin5) -"el" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 10 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin6) -"em" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 10 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin7) -"en" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 10 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin8) -"eo" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 10 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin9) -"ep" = ( -/obj/structure/closet/crate, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"eq" = ( -/obj/machinery/recharger/wallcharger{ - pixel_x = -25 - }, -/obj/structure/table/rack, -/obj/item/clothing/suit/space/void/exploration, -/obj/item/clothing/suit/space/void/exploration, -/obj/item/clothing/suit/space/void/exploration, -/obj/item/clothing/head/helmet/space/void/exploration, -/obj/item/clothing/head/helmet/space/void/exploration, -/obj/item/clothing/head/helmet/space/void/exploration, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangarcontrol) -"er" = ( -/obj/structure/table/rack, -/obj/item/clothing/suit/space/void/exploration, -/obj/item/clothing/suit/space/void/exploration, -/obj/item/clothing/suit/space/void/exploration, -/obj/item/clothing/head/helmet/space/void/exploration, -/obj/item/clothing/head/helmet/space/void/exploration, -/obj/item/clothing/head/helmet/space/void/exploration, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangarcontrol) -"es" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangarcontrol) "et" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "east bump"; - pixel_x = 24 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangarcontrol) -"eu" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 8 - }, -/obj/structure/table/steel_reinforced, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"ev" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -1972,6 +1709,17 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin3) +"eu" = ( +/obj/machinery/light, +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin3) +"ev" = ( +/obj/machinery/firealarm{ + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin4) "ew" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -1983,25 +1731,15 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin4) "ex" = ( -/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, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin4) +"ey" = ( +/obj/machinery/firealarm{ + pixel_y = -26 }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin5) -"ey" = ( -/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/ship/expe/cabin6) "ez" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -2011,8 +1749,60 @@ icon_state = "1-2" }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin7) +/area/ship/expe/cabin5) "eA" = ( +/obj/machinery/light, +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin5) +"eB" = ( +/obj/machinery/firealarm{ + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin6) +"eC" = ( +/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/ship/expe/cabin6) +"eD" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin6) +"eE" = ( +/obj/machinery/firealarm{ + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin7) +"eF" = ( +/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/ship/expe/cabin7) +"eG" = ( +/obj/machinery/light, +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin7) +"eH" = ( +/obj/machinery/firealarm{ + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin8) +"eI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -2022,7 +1812,17 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin8) -"eB" = ( +"eJ" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin8) +"eK" = ( +/obj/machinery/firealarm{ + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin9) +"eL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -2032,184 +1832,155 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin9) -"eC" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/table/steel_reinforced, +"eM" = ( +/obj/machinery/light, +/obj/machinery/recharge_station, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"eD" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor3) -"eE" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/item/weapon/stool/padded, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"eF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor3) -"eG" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "4-8" - }, +/area/ship/expe/cabin9) +"eN" = ( /obj/structure/cable{ d1 = 1; - d2 = 4; - icon_state = "1-4" + d2 = 2; + icon_state = "1-2" }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/maintenancerim) +"eO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/northairlock) +"eP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/northairlock) +"eQ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/maintenance1) +"eR" = ( +/obj/machinery/status_display, +/turf/simulated/wall/rpshull, +/area/ship/expe/maintenance1) +"eS" = ( +/obj/structure/sign/poster/nanotrasen, +/turf/simulated/wall/rpshull, +/area/ship/expe/maintenance1) +"eT" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor, +/area/ship/expe/maintenance1) +"eU" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/bridge) +"eV" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/blast/regular{ + id = "bridgeD" }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor3) -"eH" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 +/area/ship/expe/bridge) +"eW" = ( +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"eX" = ( +/obj/structure/table/steel_reinforced, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"eY" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/table/steel_reinforced, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"eZ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/table/steel_reinforced, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"fa" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/closet/crate, +/obj/fiftyspawner/phoron, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"fb" = ( +/obj/structure/closet/crate, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"fc" = ( +/obj/machinery/door/airlock/glass_science{ + req_one_access = newlist() }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor3) -"eI" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 6 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, +/area/ship/expe/hangarcontrol) +"fd" = ( /obj/structure/cable{ d1 = 2; d2 = 4; icon_state = "2-4" }, -/obj/effect/floor_decal/corner_techfloor_grid/full{ - icon_state = "corner_techfloor_grid_full"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor3) -"eJ" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/maintenance1) -"eK" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/corner_techfloor_grid, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"eL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 10 - }, -/obj/effect/floor_decal/corner/white/border{ - icon_state = "bordercolor"; - dir = 4 - }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"eM" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 - }, +/area/ship/expe/hangarcontrol) +"fe" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/floor_decal/techfloor, -/obj/machinery/firealarm{ - pixel_y = -26 - }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"eN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; +/area/ship/expe/hangarcontrol) +"ff" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 5 - }, /obj/structure/cable{ - icon_state = "4-8" + d2 = 8; + icon_state = "0-8" }, -/obj/effect/floor_decal/techfloor, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"eO" = ( -/obj/machinery/door/airlock/glass, +/area/ship/expe/hangarcontrol) +"fg" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"fh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"fi" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -2218,39 +1989,54 @@ icon_state = "1-2" }, /obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock{ + name = "Cabin 1" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin1) +"fj" = ( +/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/glass, +/obj/machinery/door/airlock{ + name = "Cabin 2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin2) +"fk" = ( +/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/glass, +/obj/machinery/door/airlock{ + name = "Cabin 3" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin3) +"fl" = ( +/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/glass, +/obj/machinery/door/airlock{ + name = "Cabin 4" + }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin4) -"eP" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"eQ" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor3) -"eR" = ( -/obj/machinery/door/airlock/glass, +"fm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -2259,28 +2045,12 @@ icon_state = "1-2" }, /obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock{ + name = "Cabin 5" + }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin5) -"eS" = ( -/obj/machinery/power/apc{ - dir = 2; - name = "south bump"; - pixel_y = -32 - }, -/obj/machinery/power/terminal, -/obj/structure/cable, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor3) -"eT" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"eU" = ( -/obj/machinery/door/airlock/glass, +"fn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -2289,10 +2059,12 @@ icon_state = "1-2" }, /obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock{ + name = "Cabin 6" + }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin6) -"eV" = ( -/obj/machinery/door/airlock/glass, +"fo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -2301,10 +2073,12 @@ icon_state = "1-2" }, /obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock{ + name = "Cabin 7" + }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin7) -"eW" = ( -/obj/machinery/door/airlock/glass, +"fp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -2313,44 +2087,103 @@ icon_state = "1-2" }, /obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock{ + name = "Cabin 8" + }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin8) -"eX" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 +"fq" = ( +/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/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock{ + name = "Cabin 9" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/cabin9) +"fr" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 }, /obj/effect/floor_decal/techfloor{ icon_state = "techfloor_edges"; dir = 9 }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"eY" = ( -/obj/machinery/door/airlock/glass, +/area/ship/expe/corridor4) +"fs" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"ft" = ( /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/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin9) -"eZ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; dir = 1 }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"fu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"fv" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"fw" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"fx" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"fy" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, /obj/machinery/light{ dir = 1 }, @@ -2359,84 +2192,98 @@ dir = 1 }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"fa" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/item/weapon/handcuffs/fuzzy, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"fb" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 1 - }, +/area/ship/expe/corridor4) +"fz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; - dir = 4 + dir = 10 }, /obj/effect/floor_decal/techfloor{ icon_state = "techfloor_edges"; dir = 1 }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"fc" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, +/obj/structure/closet/walllocker/emerglocker/north, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor4) -"fd" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, +"fA" = ( /obj/effect/floor_decal/techfloor{ icon_state = "techfloor_edges"; dir = 1 }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"fe" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/obj/effect/floor_decal/techfloor, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor3) -"ff" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor4) -"fg" = ( +"fB" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"fC" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"fD" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"fE" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"fF" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"fG" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"fH" = ( /obj/machinery/alarm{ frequency = 1441; pixel_y = 22 @@ -2447,21 +2294,21 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor6) -"fh" = ( +"fI" = ( /obj/effect/floor_decal/techfloor{ icon_state = "techfloor_edges"; dir = 5 }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor6) -"fi" = ( +"fJ" = ( /obj/effect/floor_decal/corner/blue/border{ icon_state = "bordercolor"; dir = 9 }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) -"fj" = ( +"fK" = ( /obj/machinery/alarm{ frequency = 1441; pixel_y = 22 @@ -2472,7 +2319,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) -"fk" = ( +"fL" = ( /obj/machinery/power/apc{ dir = 1; name = "north bump"; @@ -2493,7 +2340,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) -"fl" = ( +"fM" = ( /obj/structure/table/steel_reinforced, /obj/effect/floor_decal/corner/blue/border{ icon_state = "bordercolor"; @@ -2501,7 +2348,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) -"fm" = ( +"fN" = ( /obj/structure/table/steel_reinforced, /obj/effect/floor_decal/corner/blue/border{ icon_state = "bordercolor"; @@ -2509,56 +2356,44 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) -"fn" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"fo" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"fp" = ( +"fO" = ( /obj/machinery/light{ icon_state = "tube1"; dir = 8 }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangar) -"fq" = ( -/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" +"fP" = ( +/obj/structure/bed/chair{ + dir = 1 }, -/obj/effect/floor_decal/corner_techfloor_grid/full, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor3) -"fr" = ( +/area/shuttle/vespaboat) +"fQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"fR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/bed/chair{ dir = 4 }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"fs" = ( +"fS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 9 }, -/obj/machinery/computer/shuttle_control/explore/vespaboat{ +/obj/machinery/computer/shuttle_control/multi/vespaboat{ icon_state = "computer"; dir = 8 }, @@ -2567,7 +2402,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"ft" = ( +"fT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; dir = 5 @@ -2577,17 +2412,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"fu" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"fv" = ( +"fU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, @@ -2597,14 +2422,20 @@ }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"fw" = ( +"fV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"fW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 9 }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"fx" = ( +"fX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/light{ @@ -2613,28 +2444,118 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangar) -"fy" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +"fY" = ( +/obj/structure/table/rack, +/obj/item/clothing/suit/space/void/pilot, +/obj/item/clothing/suit/space/void/pilot, +/obj/item/clothing/suit/space/void/pilot, +/obj/item/clothing/head/helmet/space/void/pilot, +/obj/item/clothing/head/helmet/space/void/pilot, +/obj/item/clothing/head/helmet/space/void/pilot, +/obj/item/device/suit_cooling_unit, +/obj/item/clothing/shoes/magboots, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"fZ" = ( +/obj/structure/table/rack, +/obj/item/clothing/suit/space/void/exploration, +/obj/item/clothing/suit/space/void/exploration, +/obj/item/clothing/suit/space/void/exploration, +/obj/item/clothing/suit/space/void/exploration, +/obj/item/clothing/suit/space/void/exploration, +/obj/item/clothing/suit/space/void/exploration, +/obj/item/clothing/head/helmet/space/void/exploration, +/obj/item/clothing/head/helmet/space/void/exploration, +/obj/item/clothing/head/helmet/space/void/exploration, +/obj/item/clothing/head/helmet/space/void/exploration, +/obj/item/clothing/head/helmet/space/void/exploration, +/obj/item/clothing/head/helmet/space/void/exploration, +/obj/item/device/suit_cooling_unit, +/obj/item/clothing/shoes/magboots, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"ga" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"gb" = ( /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/turf/simulated/wall/rpshull, -/area/ship/expe/corridor3) -"fz" = ( -/obj/machinery/suit_cycler/exploration, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangarcontrol) -"fA" = ( +"gc" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; dir = 8 }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangarcontrol) -"fB" = ( +/area/ship/expe/corridor1) +"gd" = ( +/obj/machinery/door/airlock/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor3) +"ge" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/corner_techfloor_grid/full{ + icon_state = "corner_techfloor_grid_full"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor3) +"gf" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + 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" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor3) +"gg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 4 @@ -2643,6 +2564,40 @@ icon_state = "intact-scrubbers"; dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor3) +"gh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor3) +"gi" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/structure/cable{ icon_state = "4-8" }, @@ -2651,85 +2606,70 @@ d2 = 4; icon_state = "1-4" }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"fC" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 10 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangarcontrol) -"fD" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "west bump"; - pixel_x = -32 - }, -/obj/machinery/power/terminal{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/item/weapon/stool/padded, -/obj/effect/floor_decal/corner/white/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"fE" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; dir = 1 }, -/obj/structure/table/steel_reinforced, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"fF" = ( -/obj/structure/table/steel_reinforced, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"fG" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/item/weapon/stool/padded, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"fH" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/corner/white/border{ - icon_state = "bordercolor"; +/area/ship/expe/corridor3) +"gj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; dir = 4 }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"fI" = ( -/obj/machinery/door/airlock/glass, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 1 + }, /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"fJ" = ( +/area/ship/expe/corridor3) +"gk" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor3) +"gl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor3) +"gm" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/structure/cable{ @@ -2746,19 +2686,114 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor3) -"fK" = ( +"gn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 10 + }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; dir = 10 }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/corner_techfloor_grid/full{ + icon_state = "corner_techfloor_grid_full"; + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor3) +"go" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, /obj/effect/floor_decal/techfloor{ icon_state = "techfloor_edges"; dir = 1 }, -/obj/structure/closet/walllocker/emerglocker/north, +/obj/effect/floor_decal/techfloor, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor3) +"gp" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor4) -"fL" = ( +"gq" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/corner_techfloor_grid, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"gr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 5 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/techfloor, +/obj/machinery/firealarm{ + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"gs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"gt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, /obj/structure/cable{ icon_state = "4-8" }, @@ -2767,7 +2802,86 @@ /obj/machinery/door/airlock/glass, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor4) -"fM" = ( +"gu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"gv" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"gw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"gx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"gy" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"gz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 4 @@ -2782,7 +2896,7 @@ /obj/effect/floor_decal/techfloor, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor4) -"fN" = ( +"gA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 9 @@ -2793,24 +2907,23 @@ /obj/effect/floor_decal/techfloor, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor4) -"fO" = ( +"gB" = ( /obj/structure/cable{ icon_state = "4-8" }, /obj/effect/floor_decal/techfloor, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor4) -"fP" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 +"gC" = ( +/obj/structure/cable{ + icon_state = "4-8" }, /obj/effect/floor_decal/techfloor, /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor3) -"fQ" = ( +/area/ship/expe/corridor4) +"gD" = ( /obj/structure/cable{ icon_state = "4-8" }, @@ -2823,7 +2936,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor6) -"fR" = ( +"gE" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 10 @@ -2841,56 +2954,26 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor6) -"fS" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"fT" = ( -/obj/structure/table/steel_reinforced, -/obj/machinery/microwave, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"fU" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, +"gF" = ( /obj/machinery/light{ - dir = 1 + icon_state = "tube1"; + dir = 8 }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 8 }, -/obj/structure/closet/walllocker/emerglocker/north, +/obj/structure/closet/walllocker/emerglocker/west, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor3) -"fV" = ( +/area/ship/expe/bridge) +"gG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 6 }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) -"fW" = ( +"gH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 4 @@ -2902,14 +2985,14 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) -"fX" = ( +"gI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 4 }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) -"fY" = ( +"gJ" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, @@ -2920,76 +3003,110 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) -"fZ" = ( +"gK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"gL" = ( +/obj/machinery/status_display, +/turf/simulated/wall/rpshull, +/area/shuttle/vespaboat) +"gM" = ( /obj/machinery/door/airlock/hatch, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"ga" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; +"gN" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light{ dir = 8 }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangarcontrol) -"gb" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangarcontrol) -"gc" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +"gO" = ( /obj/structure/cable{ 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/techfloor, /area/ship/expe/hangarcontrol) -"gd" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/sciencemain) -"ge" = ( +"gP" = ( +/obj/machinery/door/airlock/engineering{ + req_one_access = newlist() + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"gQ" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, -/obj/item/weapon/stool/padded, -/obj/effect/floor_decal/corner/white/border{ - icon_state = "bordercolor"; - dir = 8 - }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"gf" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/item/weapon/stool/padded, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"gg" = ( +/area/ship/expe/corridor1) +"gR" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ icon_state = "map-supply"; dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/corner/white/border{ - icon_state = "bordercolor"; - dir = 4 +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"gS" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor3) +"gT" = ( +/obj/effect/floor_decal/corner_techfloor_grid/full, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor3) +"gU" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -32 + }, +/obj/machinery/power/terminal, +/obj/structure/cable, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor3) +"gV" = ( +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor3) +"gW" = ( +/obj/effect/floor_decal/techfloor, +/obj/machinery/firealarm{ + pixel_y = -26 }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"gh" = ( +/area/ship/expe/corridor3) +"gX" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor3) +"gY" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor3) +"gZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -3003,18 +3120,17 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor3) -"gi" = ( -/obj/machinery/door/airlock/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +"ha" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 }, +/obj/effect/floor_decal/techfloor, /obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"gj" = ( +/area/ship/expe/corridor3) +"hb" = ( /obj/effect/floor_decal/techfloor{ icon_state = "techfloor_edges"; dir = 8 @@ -3026,7 +3142,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor4) -"gk" = ( +"hc" = ( /obj/machinery/light{ dir = 4; icon_state = "tube1" @@ -3037,23 +3153,31 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor4) -"gl" = ( +"hd" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/engineeringstorage) +"he" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/engineering) +"hf" = ( +/obj/machinery/door/airlock/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" }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, /obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor3) -"gm" = ( +/area/ship/expe/corridor4) +"hg" = ( +/turf/simulated/wall/r_lead, +/area/ship/expe/sm) +"hh" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_lead, +/area/ship/expe/sm) +"hi" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, @@ -3063,7 +3187,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor6) -"gn" = ( +"hj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; @@ -3080,17 +3204,14 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor6) -"go" = ( +"hk" = ( /obj/effect/floor_decal/corner/blue/border{ icon_state = "bordercolor"; dir = 8 }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) -"gp" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/scienceequip) -"gq" = ( +"hl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; @@ -3102,7 +3223,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) -"gr" = ( +"hm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; dir = 4 @@ -3118,7 +3239,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) -"gs" = ( +"hn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; dir = 4 @@ -3129,7 +3250,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) -"gt" = ( +"ho" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, @@ -3143,11 +3264,38 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) -"gu" = ( +"hp" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 9 + }, +/obj/effect/floor_decal/corner/mauve/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/tiled/steel, +/area/shuttle/vespaboat) +"hq" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/mauve/border{ + icon_state = "bordercolor"; + dir = 1 + }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; - dir = 10 + dir = 5 }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 + }, +/turf/simulated/floor/tiled/steel, +/area/shuttle/vespaboat) +"hr" = ( /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; dir = 5 @@ -3156,34 +3304,53 @@ icon_state = "bordercolor"; dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 }, /turf/simulated/floor/tiled/steel, /area/shuttle/vespaboat) -"gv" = ( +"hs" = ( +/obj/machinery/door/airlock/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"ht" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"hu" = ( +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"hv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"hw" = ( /obj/machinery/sleep_console{ icon_state = "sleeperconsole"; dir = 4 }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"gw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"gx" = ( +"hx" = ( /obj/machinery/sleeper{ icon_state = "sleeper_0"; dir = 4 @@ -3193,7 +3360,71 @@ }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"gy" = ( +"hy" = ( +/obj/structure/table/steel_reinforced, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"hz" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"hA" = ( +/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/techfloor, +/area/ship/expe/hangarcontrol) +"hB" = ( +/obj/structure/table/rack, +/obj/item/clothing/suit/space/void/engineering, +/obj/item/clothing/suit/space/void/engineering, +/obj/item/clothing/head/helmet/space/void/engineering, +/obj/item/clothing/head/helmet/space/void/engineering, +/obj/item/device/suit_cooling_unit, +/obj/item/clothing/shoes/magboots, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"hC" = ( +/obj/structure/table/rack, +/obj/item/clothing/suit/space/void/atmos, +/obj/item/clothing/suit/space/void/atmos, +/obj/item/clothing/head/helmet/space/void/atmos, +/obj/item/clothing/head/helmet/space/void/atmos, +/obj/item/device/suit_cooling_unit, +/obj/item/clothing/shoes/magboots, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"hD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"hE" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/seceq) +"hF" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/secmain) +"hG" = ( +/obj/structure/sign/poster/nanotrasen, +/turf/simulated/wall/rpshull, +/area/ship/expe/secmain) +"hH" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/corridor3) +"hI" = ( +/obj/machinery/status_display, +/turf/simulated/wall/rpshull, +/area/ship/expe/corridor3) +"hJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -3201,37 +3432,40 @@ d2 = 2; icon_state = "1-2" }, -/obj/machinery/light{ +/turf/simulated/wall/rpshull, +/area/ship/expe/corridor3) +"hK" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangarcontrol) -"gz" = ( -/obj/structure/table/steel_reinforced, -/obj/item/weapon/storage/box/glasses, -/obj/effect/floor_decal/corner/white/border{ - icon_state = "bordercolor"; +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass/hidden{ + icon_state = "door_open"; dir = 8 }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"gA" = ( -/obj/structure/table/steel_reinforced, -/obj/item/pizzabox/meat, -/obj/item/pizzabox/meat, -/obj/item/pizzabox/meat, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"gB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/corner/white/border{ - icon_state = "bordercolor"; +/area/ship/expe/corridor4) +"hL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 10 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; dir = 4 }, +/obj/machinery/door/firedoor/glass/hidden, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"gC" = ( +/area/ship/expe/corridor4) +"hM" = ( /obj/machinery/power/apc{ dir = 1; name = "north bump"; @@ -3256,772 +3490,40 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringstorage) -"gD" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 6 - }, -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringstorage) -"gE" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"gF" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 8 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"gG" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 10 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"gH" = ( -/obj/machinery/shield_gen/advanced, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 10 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringstorage) -"gI" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 6 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringstorage) -"gJ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringstorage) -"gK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 5 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringstorage) -"gL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/engineering, -/turf/simulated/floor, -/area/ship/expe/sm) -"gM" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/yellow/border, -/obj/machinery/firealarm{ - pixel_y = -26 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineering) -"gN" = ( -/obj/structure/sign/chemistry, -/turf/simulated/wall/rpshull, -/area/ship/expe/medicalchem) -"gO" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/medicaleq) -"gP" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"gQ" = ( -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"gR" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 1 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"gS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 10 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"gT" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 10 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"gU" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 5 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"gV" = ( -/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ - icon_state = "intact"; - dir = 6 - }, -/turf/space, -/area/ship/expe/sm) -"gW" = ( -/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ - icon_state = "intact"; - dir = 10 - }, -/turf/space, -/area/ship/expe/sm) -"gX" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/machinery/shield_capacitor/advanced, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/yellow/border, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringstorage) -"gY" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor6) -"gZ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack/full, -/obj/effect/floor_decal/corner/yellow/borderfull, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/engineering, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"ha" = ( -/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/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor6) -"hb" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/engineeringpower) -"hc" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/bridge) -"hd" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"he" = ( -/obj/structure/sign/department/eng, -/turf/simulated/wall/rpshull, -/area/ship/expe/engineeringpower) -"hf" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/table/steel_reinforced, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/bridge) -"hg" = ( -/obj/effect/floor_decal/corner/blue/bordercorner{ - icon_state = "bordercolorcorner"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/bridge) -"hh" = ( -/turf/simulated/wall/rpshull, -/area/shuttle/vespaboat) -"hi" = ( -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engines) -"hj" = ( -/obj/machinery/computer/ship/navigation{ - icon_state = "computer"; - dir = 8 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/bridge) -"hk" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"hl" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 6 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"hm" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/bed/chair, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"hn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 9 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/bed/chair, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"ho" = ( -/obj/structure/bed/chair, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"hp" = ( -/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/ship/expe/hangarcontrol) -"hq" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 5 - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"hr" = ( -/obj/effect/floor_decal/corner/white/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"hs" = ( -/obj/structure/closet/crate/freezer/rations, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"ht" = ( -/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/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/science) -"hu" = ( -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"hv" = ( -/turf/simulated/floor, -/area/ship/expe/sciencemain) -"hw" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 - }, -/obj/effect/floor_decal/corner/purple/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"hx" = ( -/obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; - dir = 4 - }, -/obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/sciencemain) -"hy" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor, -/area/ship/expe/sciencemain) -"hz" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/simulated/floor, -/area/ship/expe/sciencemain) -"hA" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangarcontrol) -"hB" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor, -/area/ship/expe/sciencemain) -"hC" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/science) -"hD" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/engineeringequipment) -"hE" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack/full, -/obj/effect/floor_decal/corner/yellow/borderfull, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/engineering, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"hF" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/structure/closet/excavation, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 9 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 9 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/scienceequip) -"hG" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/structure/closet/medical_wall{ - pixel_y = 30 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/scienceequip) -"hH" = ( -/obj/effect/floor_decal/techfloor, -/obj/machinery/firealarm{ - pixel_y = -26 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor3) -"hI" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"hJ" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 5 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 5 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/scienceequip) -"hK" = ( -/obj/machinery/smartfridge/chemistry, -/turf/simulated/wall/rpshull, -/area/ship/expe/medicalchem) -"hL" = ( -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"hM" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/structure/closet/crate, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/yellow/border, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringstorage) "hN" = ( -/obj/structure/closet/crate, -/obj/fiftyspawner/uranium, -/obj/fiftyspawner/uranium, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/yellow/border, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 6 + }, +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringstorage) "hO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"hP" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 9 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 9 - }, -/obj/structure/dispenser/oxygen, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"hQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; - dir = 10 + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; - dir = 10 + dir = 6 }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/effect/floor_decal/corner_techfloor_grid/full{ - icon_state = "corner_techfloor_grid_full"; - dir = 1 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/closet/walllocker/emerglocker/north, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor3) -"hR" = ( /obj/machinery/light{ dir = 1 }, @@ -4033,132 +3535,73 @@ icon_state = "bordercolor"; dir = 1 }, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"hS" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"hT" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/turf/simulated/floor, -/area/ship/expe/corridor4) -"hU" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/closet/secure_closet/engineering_electrical, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"hV" = ( -/obj/structure/closet/crate, -/obj/fiftyspawner/uranium, -/obj/fiftyspawner/uranium, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 6 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 6 - }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringstorage) -"hW" = ( +"hP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, /obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" + icon_state = "4-8" }, /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; - dir = 8 + dir = 1 }, /obj/effect/floor_decal/corner/yellow/border{ icon_state = "bordercolor"; - dir = 8 + dir = 1 }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineering) -"hX" = ( -/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" +/area/ship/expe/engineeringstorage) +"hQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 }, /obj/structure/cable{ - icon_state = "2-8" + icon_state = "4-8" }, /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; - dir = 4 + dir = 5 }, /obj/effect/floor_decal/corner/yellow/border{ icon_state = "bordercolor"; - dir = 4 + dir = 5 }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineering) -"hY" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/area/ship/expe/engineeringstorage) +"hR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, /obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" + icon_state = "4-8" }, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 4 +/obj/effect/floor_decal/borderfloorblack/full, +/obj/effect/floor_decal/corner/yellow/borderfull, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/engineering{ + req_one_access = newlist() }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"hZ" = ( +/area/ship/expe/engineeringstorage) +"hS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 4 @@ -4184,804 +3627,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineering) -"ia" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"ib" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 10 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"ic" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/sm) -"id" = ( -/obj/machinery/atmospherics/pipe/simple/heat_exchanging, -/turf/space, -/area/ship/expe/sm) -"ie" = ( -/obj/structure/bed/chair/bay/comfy/captain{ - icon_state = "capchair_preview"; - dir = 4 - }, -/obj/machinery/computer/ship/navigation/telescreen{ - pixel_x = -31; - pixel_y = 1 - }, -/obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/bridge) -"if" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/item/modular_computer/console{ - icon_state = "console"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/bridge) -"ig" = ( -/obj/structure/bed/chair/bay/comfy{ - icon_state = "bay_comfychair_preview"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/bridge) -"ih" = ( -/obj/machinery/computer/ship/helm{ - icon_state = "computer"; - dir = 8 - }, -/obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/bridge) -"ii" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"ij" = ( -/obj/structure/table/rack, -/obj/item/clothing/head/helmet/space/void/pilot, -/obj/item/clothing/suit/space/void/pilot, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangarcontrol) -"ik" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/structure/table/rack, -/obj/item/clothing/head/helmet/space/void/pilot, -/obj/item/clothing/suit/space/void/pilot, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangarcontrol) -"il" = ( -/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, -/area/ship/expe/sm) -"im" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/corridor1) -"in" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 9 - }, -/obj/machinery/suit_cycler/pilot, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangarcontrol) -"io" = ( -/obj/machinery/atmospherics/portables_connector{ - icon_state = "map_connector"; - dir = 4 - }, -/obj/machinery/portable_atmospherics/canister/air/airlock, -/turf/simulated/floor, -/area/ship/expe/northairlock) -"ip" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"iq" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/medicalmain) -"ir" = ( -/obj/machinery/vending/boozeomat, -/obj/effect/floor_decal/corner/white/border{ - icon_state = "bordercolor"; - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"is" = ( -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/southairlock) -"it" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 10 - }, -/turf/simulated/floor, -/area/ship/expe/maintenance1) -"iu" = ( -/obj/effect/floor_decal/corner/white/border, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"iv" = ( -/obj/machinery/light, -/obj/effect/floor_decal/corner/white/border, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"iw" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/maintenance2) -"ix" = ( -/obj/effect/floor_decal/corner/white/border, -/obj/machinery/firealarm{ - pixel_y = -26 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"iy" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/corner/white/border{ - icon_state = "bordercolor"; - dir = 6 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"iz" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"iA" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"iB" = ( -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 4 - }, -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2"; - pixel_y = 0 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"iC" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor, -/area/ship/expe/sciencemain) -"iD" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor, -/area/ship/expe/sciencemain) -"iE" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 6 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/science) -"iF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/machinery/door/airlock/research, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack/full, -/obj/effect/floor_decal/corner/mauve/borderfull, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/white, -/area/ship/expe/scienceequip) -"iG" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/obj/machinery/door/airlock/glass_engineering, -/turf/simulated/floor, -/area/ship/expe/sm) -"iH" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/scienceequip) -"iI" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 10 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/scienceequip) -"iJ" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/scienceequip) -"iK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"iL" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineering) -"iM" = ( -/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/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineering) -"iN" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/obj/structure/closet/walllocker/emerglocker/west, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/bridge) -"iO" = ( -/obj/machinery/power/port_gen/pacman/mrs, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"iP" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 5 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 5 - }, -/obj/machinery/telecomms/allinone, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"iQ" = ( -/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/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"iR" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 5 - }, -/turf/simulated/wall/r_lead, -/area/ship/expe/sm) -"iS" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 8 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor6) -"iT" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor6) -"iU" = ( -/obj/effect/floor_decal/corner/blue/bordercorner, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/bridge) -"iV" = ( -/obj/machinery/computer/ship/sensors{ - icon_state = "computer"; - dir = 8 - }, -/obj/machinery/light, -/obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 6 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/bridge) -"iW" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"iX" = ( -/obj/machinery/door/airlock/hatch, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"iY" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/yellow/border, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineering) -"iZ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 9 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"ja" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"jb" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"jc" = ( -/obj/machinery/door/airlock/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" - }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangarcontrol) -"jd" = ( -/obj/machinery/door/airlock/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cafet) -"je" = ( -/obj/structure/window/phoronreinforced, -/obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; - dir = 1 - }, -/turf/simulated/floor, -/area/ship/expe/sciencemain) -"jf" = ( -/obj/structure/window/phoronreinforced, -/obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; - dir = 4 - }, -/turf/simulated/floor, -/area/ship/expe/sciencemain) -"jg" = ( -/obj/item/pizzavoucher, -/turf/simulated/floor, -/area/ship/expe/sciencemain) -"jh" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor, -/area/ship/expe/sciencemain) -"ji" = ( -/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{ - icon_state = "tube1"; - dir = 8 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/science) -"jj" = ( -/obj/structure/table/rack, -/obj/item/stack/flag/green, -/obj/item/stack/flag/red, -/obj/item/stack/flag/blue, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 10 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 10 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/scienceequip) -"jk" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/machinery/light, -/obj/structure/table/rack, -/obj/item/device/geiger, -/obj/item/device/geiger, -/obj/item/device/geiger, -/obj/item/device/geiger, -/obj/effect/floor_decal/borderfloorblack, -/turf/simulated/floor/tiled/white, -/area/ship/expe/scienceequip) -"jl" = ( -/obj/structure/table/rack, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 6 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 6 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/scienceequip) -"jm" = ( -/obj/structure/closet/walllocker/emerglocker/north, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"jn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"jo" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"jp" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"jq" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 - }, -/obj/structure/closet/secure_closet/engineering_welding, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"jr" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 24 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2"; - pixel_y = 0 - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 5 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 5 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"js" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 5 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"jt" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"ju" = ( +"hT" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ icon_state = "map-supply"; dir = 1 @@ -5013,79 +3659,7 @@ /obj/effect/floor_decal/corner/yellow/bordercorner, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineering) -"jv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/pipedispenser/disposal, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"jw" = ( -/turf/simulated/floor, -/area/ship/expe/sm) -"jx" = ( -/obj/machinery/light, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin3) -"jy" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"jz" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"jA" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"jB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 10 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/machinery/door/firedoor/glass/hidden, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"jC" = ( +"hU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 4 @@ -5097,242 +3671,14 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/floor_decal/corner/blue/borderfull, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/command, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/bridge) -"jD" = ( -/obj/machinery/power/rad_collector, -/turf/simulated/floor, -/area/ship/expe/sm) -"jE" = ( -/obj/machinery/power/rad_collector, -/obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; - dir = 1 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"jF" = ( -/obj/machinery/power/rad_collector, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; - dir = 1 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"jG" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"jH" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 10 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"jI" = ( -/obj/machinery/atmospherics/portables_connector{ - icon_state = "map_connector"; - dir = 4 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"jJ" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{ - icon_state = "intact"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/sm) -"jK" = ( -/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ - icon_state = "intact"; - dir = 9 - }, -/turf/space, -/area/ship/expe/sm) -"jL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor6) -"jM" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/bed/chair/bay/comfy{ - icon_state = "bay_comfychair_preview"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/bridge) -"jN" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/computer/ship/sensors{ - icon_state = "computer"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/bridge) -"jO" = ( -/obj/item/modular_computer/console{ - icon_state = "console"; - dir = 8 - }, -/obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/bridge) -"jP" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"jQ" = ( -/obj/machinery/atmospherics/binary/pump/high_power{ - icon_state = "map_off"; - dir = 4 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"jR" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/blue{ - icon_state = "map"; - dir = 4 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"jS" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/button/remote/blast_door{ - pixel_x = 24; - pixel_y = 1; - id = "SuperMatterDoors" - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"jT" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/turf/simulated/wall/r_lead, -/area/ship/expe/sm) -"jU" = ( -/obj/machinery/power/smes, -/obj/structure/cable, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/yellow/border, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/sm) -"jV" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"jW" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/wall/r_lead, -/area/ship/expe/sm) -"jX" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"jY" = ( -/turf/simulated/floor/reinforced/phoron, -/area/ship/expe/sm) -"jZ" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/simulated/floor/reinforced/phoron, -/area/ship/expe/sm) -"ka" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/blast/regular{ - id = "SuperMatterDoors" - }, -/turf/simulated/floor/reinforced/phoron, -/area/ship/expe/sm) -"kb" = ( +/area/ship/expe/engineering) +"hV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 4 @@ -5348,533 +3694,7 @@ /obj/effect/floor_decal/corner/yellow/border, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineering) -"kc" = ( -/turf/simulated/wall/r_lead, -/area/ship/expe/sm) -"kd" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"ke" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/wall/r_lead, -/area/ship/expe/sm) -"kf" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"kg" = ( -/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{ - icon_state = "tube1"; - dir = 8 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/science) -"kh" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/sciencemain) -"ki" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"kj" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/medicalchem) -"kk" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/turf/simulated/floor, -/area/ship/expe/sciencemain) -"kl" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor, -/area/ship/expe/sciencemain) -"km" = ( -/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/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/science) -"kn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"ko" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"kp" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 9 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 9 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"kq" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"kr" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"ks" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"kt" = ( -/obj/structure/table/steel_reinforced, -/obj/fiftyspawner/glass, -/obj/fiftyspawner/steel, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"ku" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"kv" = ( -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"kw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"kx" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"ky" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineering) -"kz" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"kA" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineering) -"kB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"kC" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/pipedispenser, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"kD" = ( -/obj/machinery/atmospherics/pipe/cap/visible/supply{ - icon_state = "cap-supply"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/cap/visible/scrubbers{ - icon_state = "cap-scrubbers"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"kE" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 8 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor6) -"kF" = ( -/obj/machinery/atmospherics/binary/pump/high_power{ - icon_state = "map_off"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"kG" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/obj/machinery/door/airlock/glass_engineering, -/turf/simulated/floor, -/area/ship/expe/sm) -"kH" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/bridge) -"kI" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"kJ" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/bridge) -"kK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 10 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/bridge) -"kL" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"kM" = ( -/obj/machinery/light, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin4) -"kN" = ( -/obj/machinery/door/airlock/hatch, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"kO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 10 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"kP" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 8 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/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/ship/expe/corridor4) -"kQ" = ( -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"kR" = ( +"hW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 4 @@ -5891,7 +3711,7 @@ /obj/structure/closet/walllocker/emerglocker/north, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineering) -"kS" = ( +"hX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 4 @@ -5900,16 +3720,3335 @@ icon_state = "intact-scrubbers"; dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/yellow/border, +/obj/machinery/firealarm{ + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineering) +"hY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack/full, +/obj/effect/floor_decal/corner/yellow/borderfull, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/engineering{ + req_one_access = newlist() + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineering) +"hZ" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, /obj/structure/cable{ icon_state = "2-8" }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"ia" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack/full, +/obj/machinery/door/firedoor/glass, +/obj/effect/floor_decal/corner/yellow/borderfull, +/obj/machinery/door/airlock/engineering{ + req_one_access = newlist() + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/sm) +"ib" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 6 + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"ic" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/engineering{ + req_one_access = newlist() + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"id" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"ie" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor, +/area/ship/expe/sm) +"if" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"ig" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"ih" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"ii" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"ij" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 1 + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"ik" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/blue{ + icon_state = "map"; + dir = 1 + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"il" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/meter, +/turf/simulated/wall/r_lead, +/area/ship/expe/sm) +"im" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 8 + }, +/turf/space, +/area/ship/expe/sm) +"in" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 10 + }, +/turf/space, +/area/ship/expe/sm) +"io" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor6) +"ip" = ( +/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/techfloor{ + icon_state = "techfloor_edges"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor6) +"iq" = ( +/obj/structure/sign/poster/nanotrasen, +/turf/simulated/wall/rpshull, +/area/ship/expe/bridge) +"ir" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/bridge) +"is" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/table/steel_reinforced, +/obj/machinery/button/remote/blast_door{ + id = "bridgeD"; + name = "window shutters button" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/bridge) +"it" = ( +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/bridge) +"iu" = ( +/obj/effect/floor_decal/corner/blue/bordercorner{ + icon_state = "bordercolorcorner"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/bridge) +"iv" = ( +/obj/machinery/computer/ship/navigation{ + icon_state = "computer"; + dir = 8 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/bridge) +"iw" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/shuttle/vespaboat) +"ix" = ( +/turf/simulated/floor/tiled/steel, +/area/shuttle/vespaboat) +"iy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/mauve/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel, +/area/shuttle/vespaboat) +"iz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"iA" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/bed/chair, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"iB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/bed/chair, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"iC" = ( +/obj/structure/bed/chair, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"iD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"iE" = ( +/obj/structure/closet/secure_closet/guncabinet{ + name = "taser cabinet" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 9 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/obj/item/weapon/gun/energy/taser, +/obj/item/weapon/gun/energy/taser, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seceq) +"iF" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seceq) +"iG" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seceq) +"iH" = ( +/obj/structure/table/rack/shelf, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/item/clothing/suit/storage/vest, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seceq) +"iI" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/structure/table/rack/shelf, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 5 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 5 + }, +/obj/item/clothing/suit/storage/vest, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seceq) +"iJ" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 9 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"iK" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"iL" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"iM" = ( +/obj/structure/closet/secure_closet, +/obj/item/weapon/handcuffs, +/obj/item/weapon/handcuffs, +/obj/item/weapon/storage/backpack/satchel/sec, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/item/clothing/under/hephaestus, +/obj/item/clothing/suit/armor/vest, +/obj/item/clothing/shoes/boots/duty, +/obj/item/clothing/head/beret, +/obj/item/clothing/gloves/black, +/obj/item/clothing/glasses/sunglasses/aviator, +/obj/item/clothing/accessory/permit/gun, +/obj/item/clothing/accessory/storage/black_drop_pouches, +/obj/item/clothing/accessory/storage/black_vest, +/obj/item/clothing/accessory/badge/corporate_tag/hephaestus, +/obj/item/device/flashlight/maglight, +/obj/item/device/megaphone, +/obj/item/device/radio, +/obj/item/weapon/melee/baton, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"iN" = ( +/obj/machinery/vending/security, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 5 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"iO" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/medicalchem) +"iP" = ( +/obj/machinery/firealarm{ + pixel_x = 0; + pixel_y = 28 + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 9 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/obj/structure/closet/secure_closet/medical1, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"iQ" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"iR" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"iS" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 5 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"iT" = ( +/obj/structure/sign/department/chem, +/turf/simulated/wall/rpshull, +/area/ship/expe/medicalchem) +"iU" = ( +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 9 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"iV" = ( +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"iW" = ( +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/sleep_console{ + icon_state = "sleeperconsole"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"iX" = ( +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/sleeper{ + icon_state = "sleeper_0"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"iY" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"iZ" = ( +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/atmospherics/unary/freezer, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"ja" = ( +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/atmospherics/portables_connector, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"jb" = ( +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/structure/table/reinforced, +/obj/item/weapon/tool/wrench, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"jc" = ( +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 5 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 5 + }, +/obj/machinery/atmospherics/unary/cryo_cell, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"jd" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/medicaleq) +"je" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 9 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/obj/item/weapon/storage/firstaid/o2, +/obj/item/weapon/storage/firstaid/o2, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"jf" = ( +/obj/structure/table/reinforced, +/obj/structure/closet/walllocker/emerglocker/north, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/regular, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"jg" = ( +/obj/structure/table/reinforced, +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/item/weapon/storage/firstaid/toxin, +/obj/item/weapon/storage/firstaid/toxin, +/obj/item/weapon/storage/firstaid/toxin, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"jh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 5 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 5 + }, +/obj/structure/closet/crate, +/obj/item/weapon/storage/box/bloodpacks, +/obj/item/weapon/storage/box/backup_kit, +/obj/item/weapon/storage/box/gloves, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"ji" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"jj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 10 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"jk" = ( +/obj/machinery/shield_gen/advanced, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 10 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringstorage) +"jl" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/shield_capacitor/advanced, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringstorage) +"jm" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/closet/crate, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringstorage) +"jn" = ( +/obj/structure/closet/crate, +/obj/fiftyspawner/uranium, +/obj/fiftyspawner/uranium, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringstorage) +"jo" = ( +/obj/structure/closet/crate, +/obj/fiftyspawner/uranium, +/obj/fiftyspawner/uranium, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringstorage) +"jp" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineering) +"jq" = ( +/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{ + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineering) +"jr" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/engineeringpower) +"js" = ( +/obj/structure/sign/department/eng, +/turf/simulated/wall/rpshull, +/area/ship/expe/engineeringpower) +"jt" = ( +/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{ + dir = 4; + icon_state = "tube1" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"ju" = ( +/obj/structure/sign/department/engine, +/turf/simulated/wall/r_lead, +/area/ship/expe/sm) +"jv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 5 + }, +/turf/simulated/wall/r_lead, +/area/ship/expe/sm) +"jw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/turf/simulated/wall/r_lead, +/area/ship/expe/sm) +"jx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 10 + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"jy" = ( +/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, +/area/ship/expe/sm) +"jz" = ( +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 4 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"jA" = ( +/obj/machinery/power/smes, +/obj/structure/cable, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/sm) +"jB" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"jC" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"jD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/meter, +/turf/simulated/floor, +/area/ship/expe/sm) +"jE" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"jF" = ( +/obj/machinery/atmospherics/binary/pump{ + icon_state = "map_off"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"jG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"jH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"jI" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"jJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"jK" = ( +/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/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 9 + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"jL" = ( +/obj/structure/grille, +/obj/structure/window/phoronreinforced/full, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/sm) +"jM" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 6 + }, +/turf/space, +/area/ship/expe/sm) +"jN" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 9 + }, +/turf/space, +/area/ship/expe/sm) +"jO" = ( +/obj/structure/bed/chair/bay/comfy/captain{ + icon_state = "capchair_preview"; + dir = 4 + }, +/obj/machinery/computer/ship/navigation/telescreen{ + pixel_x = -31; + pixel_y = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/bridge) +"jP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/item/modular_computer/console{ + icon_state = "console"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/bridge) +"jQ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/table/steel_reinforced, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/bridge) +"jR" = ( +/obj/structure/bed/chair/bay/comfy{ + icon_state = "bay_comfychair_preview"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/bridge) +"jS" = ( +/obj/machinery/computer/ship/helm{ + icon_state = "computer"; + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/bridge) +"jT" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"jU" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"jV" = ( +/obj/machinery/suit_cycler/exploration, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"jW" = ( +/obj/machinery/suit_cycler/security, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"jX" = ( +/obj/machinery/suit_cycler/engineering, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"jY" = ( +/obj/machinery/light, +/obj/machinery/suit_cycler/medical, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"jZ" = ( +/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/ship/expe/hangarcontrol) +"ka" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"kb" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"kc" = ( +/obj/structure/closet/firecloset/full, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"kd" = ( +/obj/structure/closet/secure_closet/guncabinet{ + name = "e-gun cabinet" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/item/weapon/gun/energy/gun, +/obj/item/weapon/gun/energy/gun, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seceq) +"ke" = ( +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seceq) +"kf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seceq) +"kg" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seceq) +"kh" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"ki" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"kj" = ( +/obj/structure/bed/chair/office/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"kk" = ( +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"kl" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"km" = ( +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/structure/table/reinforced, +/obj/machinery/chemical_dispenser, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"kn" = ( +/obj/structure/table/reinforced, +/obj/machinery/chemical_dispenser/biochemistry, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"ko" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"kp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"kq" = ( +/obj/machinery/door/airlock/glass_medical{ + req_one_access = newlist() + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"kr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"ks" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"kt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"ku" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"kv" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"kw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"kx" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/blue, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"ky" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"kz" = ( +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 9 + }, +/obj/machinery/vending/wallmed1{ + layer = 3.3; + name = "Emergency NanoMed"; + pixel_x = 28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"kA" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/item/weapon/storage/firstaid/fire, +/obj/item/weapon/storage/firstaid/fire, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"kB" = ( +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"kC" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"kD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"kE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"kF" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/engineeringequipment) +"kG" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineering) +"kH" = ( +/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/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineering) +"kI" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 9 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"kJ" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"kK" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/structure/closet/radiation, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"kL" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/structure/closet/walllocker/emerglocker/north, +/obj/structure/closet/radiation, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"kM" = ( +/obj/machinery/power/port_gen/pacman/mrs, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"kN" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"kO" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"kP" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 5 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 5 + }, +/obj/machinery/telecomms/allinone, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"kQ" = ( +/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/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"kR" = ( +/obj/machinery/atmospherics/portables_connector{ + icon_state = "map_connector"; + dir = 4 + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"kS" = ( +/obj/machinery/atmospherics/binary/pump/high_power{ + icon_state = "map_off"; + dir = 4 + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"kT" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/blue{ + icon_state = "map"; + dir = 4 + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"kU" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"kV" = ( +/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, +/area/ship/expe/sm) +"kW" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"kX" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"kY" = ( +/obj/machinery/power/rad_collector, +/obj/structure/cable, +/turf/simulated/floor, +/area/ship/expe/sm) +"kZ" = ( +/obj/machinery/power/rad_collector, +/obj/machinery/atmospherics/pipe/simple/hidden/blue, +/obj/structure/cable, +/turf/simulated/floor, +/area/ship/expe/sm) +"la" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"lb" = ( +/obj/structure/dispenser/phoron, +/turf/simulated/floor, +/area/ship/expe/sm) +"lc" = ( +/obj/machinery/atmospherics/pipe/cap/visible/supply{ + icon_state = "cap-supply"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/cap/visible/scrubbers{ + icon_state = "cap-scrubbers"; + dir = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"ld" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 5 + }, +/turf/space, +/area/ship/expe/sm) +"le" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor6) +"lf" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor6) +"lg" = ( +/obj/effect/floor_decal/corner/blue/bordercorner, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/bridge) +"lh" = ( +/obj/machinery/computer/ship/sensors{ + icon_state = "computer"; + dir = 8 + }, +/obj/machinery/light, +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/bridge) +"li" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/mauve/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel, +/area/shuttle/vespaboat) +"lj" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"lk" = ( +/obj/structure/sign/department/eva, +/turf/simulated/wall/rpshull, +/area/ship/expe/hangarcontrol) +"ll" = ( +/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/glass, +/obj/machinery/door/airlock/glass_command{ + req_one_access = newlist() + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"lm" = ( +/obj/machinery/door/airlock/glass, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"ln" = ( +/obj/machinery/door/airlock/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"lo" = ( +/obj/structure/table/rack/shelf, +/obj/item/weapon/storage/box/holobadge, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seceq) +"lp" = ( +/obj/structure/table/rack/shelf, +/obj/item/weapon/storage/box/flashbangs, +/obj/item/weapon/storage/box/flashbangs, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seceq) +"lq" = ( +/obj/structure/table/rack/shelf, +/obj/item/weapon/storage/box/handcuffs, +/obj/item/weapon/storage/box/handcuffs, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seceq) +"lr" = ( +/obj/structure/sign/department/armory, +/turf/simulated/wall/rpshull, +/area/ship/expe/secmain) +"ls" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"lt" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"lu" = ( +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/machinery/chem_master, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"lv" = ( +/obj/structure/bed/chair/office/light{ + icon_state = "officechair_white"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"lw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"lx" = ( +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"ly" = ( +/obj/machinery/smartfridge/chemistry, +/turf/simulated/wall/rpshull, +/area/ship/expe/medicalchem) +"lz" = ( +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"lA" = ( +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"lB" = ( +/obj/machinery/sleep_console{ + icon_state = "sleeperconsole"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"lC" = ( +/obj/machinery/sleeper{ + icon_state = "sleeper_0"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"lD" = ( +/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/white, +/area/ship/expe/medicalmain) +"lE" = ( +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"lF" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/item/weapon/storage/firstaid/adv, +/obj/item/weapon/storage/firstaid/adv, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"lG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"lH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/weapon/soap/syndie, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"lI" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 9 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/obj/structure/dispenser/oxygen, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"lJ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"lK" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"lL" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"lM" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 5 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"lN" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"lO" = ( +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"lP" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"lQ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"lR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"lS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/pipedispenser/disposal, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"lT" = ( +/obj/machinery/atmospherics/binary/pump/high_power{ + icon_state = "map_off"; + dir = 8 + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"lU" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"lV" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"lW" = ( +/turf/simulated/floor, +/area/ship/expe/sm) +"lX" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/hidden/blue, +/obj/machinery/door/blast/regular{ + id = "SuperMatterDoors" + }, +/obj/structure/window/phoronreinforced/full, +/turf/simulated/floor/reinforced/phoron, +/area/ship/expe/sm) +"lY" = ( +/obj/structure/grille, +/obj/machinery/door/blast/regular{ + id = "SuperMatterDoors" + }, +/obj/structure/window/phoronreinforced/full, +/turf/simulated/floor/reinforced/phoron, +/area/ship/expe/sm) +"lZ" = ( +/obj/structure/grille, +/obj/structure/window/phoronreinforced/full, +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{ + icon_state = "intact"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/sm) +"ma" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor6) +"mb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/bed/chair/bay/comfy{ + icon_state = "bay_comfychair_preview"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/bridge) +"mc" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/computer/ship/sensors{ + icon_state = "computer"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/bridge) +"md" = ( +/obj/item/modular_computer/console{ + icon_state = "console"; + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/bridge) +"me" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/mauve/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/shuttle/vespaboat) +"mf" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"mg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"mh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"mi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, /obj/effect/floor_decal/techfloor{ icon_state = "techfloor_edges"; dir = 1 }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"kT" = ( +/area/ship/expe/corridor1) +"mj" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"mk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"ml" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"mm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/structure/closet/walllocker/emerglocker/north, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"mn" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"mo" = ( +/obj/structure/table/rack/shelf, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/item/clothing/accessory/armor/armorplate, +/obj/item/clothing/accessory/armor/armorplate, +/obj/item/clothing/accessory/armor/armguards, +/obj/item/clothing/accessory/armor/armguards, +/obj/item/clothing/accessory/armor/legguards, +/obj/item/clothing/accessory/armor/legguards, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seceq) +"mp" = ( +/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/techfloor, +/area/ship/expe/seceq) +"mq" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seceq) +"mr" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seceq) +"ms" = ( +/obj/machinery/door/airlock/glass_security{ + req_one_access = newlist() + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"mt" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 10 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"mu" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"mv" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"mw" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 6 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"mx" = ( +/obj/structure/table/reinforced, +/obj/machinery/chemical_dispenser, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"my" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/item/weapon/storage/box/pillbottles, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"mz" = ( +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -25; + pixel_y = 0 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"mA" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"mB" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"mC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 5 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"mD" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"mE" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"mF" = ( +/obj/machinery/door/airlock/medical{ + req_one_access = newlist() + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"mG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"mH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"mI" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"mJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 9 + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/weapon/storage/box/cdeathalarm_kit, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"mK" = ( +/obj/machinery/status_display, +/turf/simulated/wall/rpshull, +/area/ship/expe/medicaleq) +"mL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 4 + }, +/turf/simulated/floor, +/area/ship/expe/corridor4) +"mM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/closet/secure_closet/engineering_electrical, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"mN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"mO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"mP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"mQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"mR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack/full, +/obj/effect/floor_decal/corner/yellow/borderfull, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/engineering{ + req_one_access = newlist() + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"mS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineering) +"mT" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineering) +"mU" = ( +/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/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"mV" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"mW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"mX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/pipedispenser, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"mY" = ( +/obj/machinery/alarm{ + dir = 4; + pixel_x = -25; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 6 + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"mZ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/blue{ + icon_state = "map"; + dir = 1 + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"na" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/blue{ + icon_state = "map"; + dir = 4 + }, +/obj/machinery/meter, +/turf/simulated/floor, +/area/ship/expe/sm) +"nb" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"nc" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"nd" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/reinforced/phoron, +/area/ship/expe/sm) +"ne" = ( +/obj/machinery/power/supermatter/shard, +/turf/simulated/floor/reinforced/phoron, +/area/ship/expe/sm) +"nf" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/reinforced/phoron, +/area/ship/expe/sm) +"ng" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/obj/machinery/door/blast/regular{ + id = "SuperMatterDoors" + }, +/obj/structure/window/phoronreinforced/full, +/turf/simulated/floor/reinforced/phoron, +/area/ship/expe/sm) +"nh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/obj/machinery/meter, +/turf/simulated/floor, +/area/ship/expe/sm) +"ni" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor6) +"nj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/corner/blue/borderfull, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/command{ + req_one_access = newlist() + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/bridge) +"nk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/bridge) +"nl" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/bridge) +"nm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/bridge) +"nn" = ( +/obj/machinery/status_display, +/turf/simulated/wall/rpshull, +/area/ship/expe/bridge) +"no" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/mauve/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/shuttle/vespaboat) +"np" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"nq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"nr" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"ns" = ( /obj/machinery/power/apc{ dir = 1; name = "north bump"; @@ -5927,115 +7066,19 @@ }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"kU" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"kV" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"kW" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"kX" = ( -/obj/machinery/power/rad_collector, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"kY" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/turf/simulated/floor/reinforced/phoron, -/area/ship/expe/sm) -"kZ" = ( +"nt" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /obj/machinery/light{ dir = 1 }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"la" = ( +"nu" = ( /obj/machinery/portable_atmospherics/canister/empty, /obj/machinery/atmospherics/portables_connector, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"lb" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"lc" = ( -/obj/machinery/power/rad_collector, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; - dir = 4 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"ld" = ( +"nv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -6045,7 +7088,52 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangar) -"le" = ( +"nw" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"nx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"ny" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"nz" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"nA" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"nB" = ( /obj/structure/cable{ icon_state = "4-8" }, @@ -6060,13 +7148,13 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) -"lf" = ( +"nC" = ( /obj/structure/cable{ icon_state = "2-8" }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) -"lg" = ( +"nD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/power/apc{ @@ -6088,249 +7176,348 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) -"lh" = ( -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor3) -"li" = ( -/obj/machinery/radiocarbon_spectrometer, -/turf/simulated/floor, -/area/ship/expe/sciencemain) -"lj" = ( -/obj/structure/closet, -/obj/item/device/camera, -/obj/item/device/aicard, -/obj/item/device/geiger, -/turf/simulated/floor, -/area/ship/expe/sciencemain) -"lk" = ( -/obj/effect/shuttle_landmark{ - base_area = /area/space; - base_turf = /turf/space; - landmark_tag = "HPV_port"; - name = "port of Vespa" +"nE" = ( +/obj/structure/table/rack/shelf, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 10 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 10 + }, +/obj/item/clothing/accessory/holster/leg, +/obj/item/clothing/accessory/holster/leg, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seceq) +"nF" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 4 }, -/turf/space, -/area/space) -"ll" = ( -/obj/structure/closet, -/obj/item/device/bodysnatcher, -/obj/item/device/geiger, /obj/machinery/firealarm{ - pixel_y = -26 + pixel_z = 1; + pixel_w = 31 }, -/turf/simulated/floor, -/area/ship/expe/sciencemain) -"lm" = ( -/obj/structure/closet, -/obj/item/device/ano_scanner, -/obj/item/device/geiger, -/turf/simulated/floor, -/area/ship/expe/corridor2) -"ln" = ( -/turf/simulated/floor, -/area/ship/expe/corridor2) -"lo" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/sechall) +"nG" = ( /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/turf/simulated/floor, -/area/ship/expe/sciencemain) -"lp" = ( -/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/corner/mauve/bordercorner{ - icon_state = "bordercolorcorner"; - dir = 4 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/borderfloorblack/corner{ - icon_state = "borderfloorcorner_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/bordercorner{ - icon_state = "bordercolorcorner"; - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/science) -"lq" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 5 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 5 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/science) -"lr" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/structure/table/rack, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 9 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 9 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/sciencestorage) -"ls" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"lt" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/table/steel_reinforced, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"lu" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/table/rack, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 5 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 5 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/sciencestorage) -"lv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"lw" = ( -/obj/structure/table/steel_reinforced, -/obj/fiftyspawner/plasteel, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"lx" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/blue, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"ly" = ( -/obj/structure/table/steel_reinforced, -/obj/item/weapon/storage/toolbox/mechanical, -/obj/item/weapon/storage/toolbox/mechanical, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 10 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"lz" = ( -/obj/structure/table/steel_reinforced, -/obj/item/weapon/storage/toolbox/electrical, -/obj/item/weapon/storage/toolbox/electrical, /obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/yellow/border, +/obj/effect/floor_decal/corner/red/border, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"lA" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor3) -"lB" = ( -/obj/machinery/autolathe, +/area/ship/expe/seceq) +"nH" = ( +/obj/structure/table/rack/shelf, /obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/yellow/border, +/obj/effect/floor_decal/corner/red/border, +/obj/item/clothing/head/helmet, +/obj/item/clothing/head/helmet, +/obj/item/clothing/accessory/armor/helmcover/navy, +/obj/item/clothing/accessory/armor/helmcover/navy, +/obj/item/clothing/accessory/armor/tag/sec, +/obj/item/clothing/accessory/armor/tag/sec, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"lC" = ( -/obj/machinery/alarm{ - dir = 4; - pixel_x = -25; - pixel_y = 0 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; +/area/ship/expe/seceq) +"nI" = ( +/obj/structure/table/rack/shelf, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; dir = 6 }, -/turf/simulated/floor, -/area/ship/expe/sm) -"lD" = ( +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/obj/item/clothing/suit/armor/pcarrier, +/obj/item/clothing/suit/armor/pcarrier, +/obj/item/clothing/accessory/storage/pouches/large/navy, +/obj/item/clothing/accessory/storage/pouches/large/navy, /obj/machinery/light{ - dir = 1 + dir = 4; + icon_state = "tube1" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seceq) +"nJ" = ( +/obj/machinery/door/airlock/security{ + req_one_access = newlist() + }, +/obj/machinery/door/firedoor, +/obj/effect/floor_decal/borderfloorblack/full, +/obj/effect/floor_decal/corner/red/borderfull, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/sechall) +"nK" = ( +/obj/machinery/door/airlock/security{ + req_one_access = newlist() + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloorblack/full, +/obj/effect/floor_decal/corner/red/borderfull, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/sechall) +"nL" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/seclobby2) +"nM" = ( +/obj/structure/sign/poster/nanotrasen, +/turf/simulated/wall/rpshull, +/area/ship/expe/seclobby2) +"nN" = ( +/obj/machinery/door/airlock/glass_security{ + req_one_access = newlist() + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby2) +"nO" = ( +/obj/machinery/chem_master, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"nP" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/bed/chair/office/light{ + icon_state = "officechair_white"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"nQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"nR" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/item/weapon/storage/box/syringes, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"nS" = ( +/obj/machinery/firealarm{ + pixel_x = -31; + pixel_y = -1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"nT" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"nU" = ( +/obj/machinery/body_scanconsole{ + icon_state = "scanner_terminal_off"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"nV" = ( +/obj/machinery/bodyscanner{ + icon_state = "scanner_open"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"nW" = ( +/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/white, +/area/ship/expe/medicalmain) +"nX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"nY" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"nZ" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"oa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"ob" = ( +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/structure/table/reinforced, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"oc" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 }, /obj/effect/floor_decal/techfloor{ icon_state = "techfloor_edges"; - dir = 1 + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor4) -"lE" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, +"od" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 4 + }, /turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"lF" = ( +/area/ship/expe/corridor4) +"oe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 5 + }, +/obj/structure/closet/secure_closet/engineering_welding, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"of" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"og" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"oh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"oi" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 10 @@ -6346,7 +7533,7 @@ /obj/machinery/suit_cycler/engineering, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringequipment) -"lG" = ( +"oj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 5 @@ -6370,15 +7557,78 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineering) -"lH" = ( +"ok" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack/full, +/obj/effect/floor_decal/corner/yellow/borderfull, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/engineering{ + req_one_access = newlist() + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"ol" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"om" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"on" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"lI" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"oo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 4 @@ -6389,7 +7639,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringpower) -"lJ" = ( +"op" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 4 @@ -6406,7 +7656,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringpower) -"lK" = ( +"oq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 4 @@ -6420,14 +7670,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringpower) -"lL" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/blue, -/turf/simulated/floor, -/area/ship/expe/maintenance1) -"lM" = ( -/turf/simulated/floor, -/area/ship/expe/maintenance1) -"lN" = ( +"or" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 4 @@ -6441,7 +7684,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringpower) -"lO" = ( +"os" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 4 @@ -6452,7 +7695,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringpower) -"lP" = ( +"ot" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 9 @@ -6467,7 +7710,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringpower) -"lQ" = ( +"ou" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -6493,21 +7736,55 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor5) -"lR" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/blue{ - icon_state = "map"; +"ov" = ( +/obj/machinery/atmospherics/unary/freezer{ + icon_state = "freezer_0"; dir = 1 }, /turf/simulated/floor, /area/ship/expe/sm) -"lS" = ( -/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ +"ow" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ icon_state = "intact"; dir = 5 }, -/turf/space, +/turf/simulated/floor, /area/ship/expe/sm) -"lT" = ( +"ox" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 10 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"oy" = ( +/obj/machinery/power/rad_collector, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"oz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 5 + }, +/obj/machinery/power/rad_collector, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"oA" = ( /obj/effect/floor_decal/techfloor{ icon_state = "techfloor_edges"; dir = 8 @@ -6526,51 +7803,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor6) -"lU" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/structure/bed/double, -/obj/item/weapon/bedsheet/double, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin3) -"lV" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/structure/bed/double, -/obj/item/weapon/bedsheet/double, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin4) -"lW" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/structure/bed/double, -/obj/item/weapon/bedsheet/double, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin5) -"lX" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/structure/bed/double, -/obj/item/weapon/bedsheet/double, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin6) -"lY" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/structure/bed/double, -/obj/item/weapon/bedsheet/double, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin7) -"lZ" = ( -/obj/structure/closet/firecloset/full, -/turf/simulated/floor, -/area/ship/expe/maintenance1) -"ma" = ( +"oB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -6587,11 +7820,11 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor6) -"mb" = ( -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"mc" = ( +"oC" = ( +/obj/structure/sign/department/bridge, +/turf/simulated/wall/rpshull, +/area/ship/expe/bridge) +"oD" = ( /obj/effect/floor_decal/corner/blue/border{ icon_state = "bordercolor"; dir = 10 @@ -6599,7 +7832,7 @@ /obj/machinery/photocopier, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) -"md" = ( +"oE" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, @@ -6607,20 +7840,12 @@ /obj/effect/floor_decal/corner/blue/border, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) -"me" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"mf" = ( +"oF" = ( /obj/structure/table/steel_reinforced, /obj/effect/floor_decal/corner/blue/border, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) -"mg" = ( +"oG" = ( /obj/machinery/computer/message_monitor{ icon_state = "computer"; dir = 8 @@ -6631,7 +7856,21 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) -"mh" = ( +"oH" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/shuttle/vespaboat) +"oI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ d1 = 1; @@ -6649,7 +7888,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/steel, /area/shuttle/vespaboat) -"mi" = ( +"oJ" = ( /obj/machinery/power/terminal, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; @@ -6662,14 +7901,14 @@ /obj/structure/cable, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"mj" = ( +"oK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"mk" = ( +"oL" = ( /obj/structure/cable{ d1 = 1; d2 = 2; @@ -6684,7 +7923,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"ml" = ( +"oM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal{ icon_state = "map_universal"; dir = 4 @@ -6695,7 +7934,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"mm" = ( +"oN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/green{ icon_state = "intact"; dir = 9 @@ -6703,7 +7942,7 @@ /obj/structure/closet/crate/freezer/rations, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"mn" = ( +"oO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -6713,15 +7952,10 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangar) -"mo" = ( -/obj/machinery/power/rad_collector, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"mp" = ( +"oP" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/expedition) +"oQ" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, @@ -6736,23 +7970,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) -"mq" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"mr" = ( +"oR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ icon_state = "map-scrubbers"; @@ -6769,190 +7987,272 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) -"ms" = ( -/obj/machinery/door/airlock/research, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +"oS" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/seccells) +"oT" = ( +/obj/machinery/door/airlock/glass_security{ + req_one_access = newlist() + }, +/obj/machinery/door/firedoor, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/effect/floor_decal/corner/mauve/borderfull, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor, -/area/ship/expe/sciencemain) -"mt" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 8 - }, -/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/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/science) -"mu" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/science) -"mv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/door/airlock/research, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack/full, -/obj/effect/floor_decal/corner/mauve/borderfull, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/white, -/area/ship/expe/sciencestorage) -"mw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 10 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/sciencestorage) -"mx" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 1 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"my" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; +/area/ship/expe/seccells) +"oU" = ( +/obj/structure/sign/department/prison, +/turf/simulated/wall/rpshull, +/area/ship/expe/seccells) +"oV" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/sechall) +"oW" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; dir = 4 }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/sechall) +"oX" = ( /obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 + dir = 8; + name = "west bump"; + pixel_x = -24 }, /obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 + dir = 8 }, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-4"; + d2 = 4 }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 9 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby2) +"oY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; dir = 1 }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"mz" = ( +/area/ship/expe/seclobby2) +"oZ" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby2) +"pa" = ( /obj/structure/cable{ icon_state = "1-8" }, /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; - dir = 4 + dir = 5 }, -/obj/effect/floor_decal/corner/mauve/border{ +/obj/effect/floor_decal/corner/red/border{ icon_state = "bordercolor"; - dir = 4 + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby2) +"pb" = ( +/obj/structure/table/reinforced, +/obj/machinery/reagentgrinder, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 8 }, /turf/simulated/floor/tiled/white, -/area/ship/expe/sciencestorage) -"mA" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue, -/turf/simulated/floor, -/area/ship/expe/maintenance1) -"mB" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/sciencestorage) -"mC" = ( +/area/ship/expe/medicalchem) +"pc" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/reagent_containers/dropper, +/obj/item/weapon/reagent_containers/glass/beaker/large, +/obj/item/weapon/reagent_containers/glass/beaker/large, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"pd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"pe" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 8 + }, /turf/simulated/floor/tiled/white, /area/ship/expe/medicalmain) -"mD" = ( +"pf" = ( /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"pg" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"ph" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-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/tiled/white, +/area/ship/expe/medicalmain) +"pi" = ( +/obj/machinery/firealarm{ + pixel_x = -28 + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"pj" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"pk" = ( +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"pl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, /obj/effect/floor_decal/techfloor{ icon_state = "techfloor_edges"; - dir = 8 + dir = 4 }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor4) -"mE" = ( +"pm" = ( +/obj/structure/table/steel_reinforced, +/obj/fiftyspawner/glass, +/obj/fiftyspawner/steel, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"pn" = ( +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"po" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"pp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; @@ -6967,7 +8267,7 @@ /obj/item/clothing/suit/space/void/engineering, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringequipment) -"mF" = ( +"pq" = ( /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; dir = 4 @@ -6978,11 +8278,37 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineering) -"mG" = ( -/obj/effect/shuttle_landmark/automatic, -/turf/space, -/area/space) -"mH" = ( +"pr" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"ps" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/table/steel_reinforced, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"pt" = ( +/obj/machinery/power/smes/buildable/hybrid{ + recharge_rate = 10000 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"pu" = ( /obj/structure/cable{ d1 = 1; d2 = 4; @@ -6992,23 +8318,85 @@ /obj/machinery/cell_charger, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringpower) -"mI" = ( +"pv" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"pw" = ( /turf/simulated/wall/r_lead, /area/ship/expe/smstorage) -"mJ" = ( +"px" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue, /obj/structure/cable{ - icon_state = "4-8" + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"mK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/button/remote/blast_door{ + pixel_x = 24; + pixel_y = 1; + id = "SuperMatterDoors" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"py" = ( /obj/structure/cable{ - icon_state = "2-8" + d1 = 1; + d2 = 4; + icon_state = "1-4" }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"mL" = ( +/turf/simulated/wall/r_lead, +/area/ship/expe/sm) +"pz" = ( +/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, +/area/ship/expe/sm) +"pA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"pB" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/shuttle/vespaboat) +"pC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/shuttle/vespaboat) +"pD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ d1 = 1; @@ -7029,28 +8417,7 @@ }, /turf/simulated/floor/tiled/steel, /area/shuttle/vespaboat) -"mM" = ( -/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/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"mN" = ( +"pE" = ( /obj/machinery/power/smes/buildable, /obj/structure/cable{ icon_state = "0-4"; @@ -7058,31 +8425,13 @@ }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"mO" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/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/techfloor, -/area/ship/expe/engineeringpower) -"mP" = ( +"pF" = ( /obj/structure/cable{ icon_state = "4-8" }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"mQ" = ( +"pG" = ( /obj/structure/cable{ icon_state = "1-8" }, @@ -7092,21 +8441,21 @@ }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"mR" = ( +"pH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal{ icon_state = "map_universal"; dir = 8 }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"mS" = ( +"pI" = ( /obj/machinery/atmospherics/pipe/tank/air{ icon_state = "air_map"; dir = 8 }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/vespaboat) -"mT" = ( +"pJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/power/apc{ @@ -7129,7 +8478,21 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangar) -"mU" = ( +"pK" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 9 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/obj/structure/closet, +/obj/item/weapon/cell/high, +/obj/item/weapon/cell/high, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"pL" = ( /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; dir = 1 @@ -7145,19 +8508,18 @@ /obj/item/device/flashlight/maglight, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/expedition) -"mV" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 9 +"pM" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 9 +/obj/structure/extinguisher_cabinet{ + pixel_y = 26; + pixel_z = 1; + pixel_w = 0 }, -/obj/structure/closet/walllocker/emerglocker/north, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"mW" = ( +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"pN" = ( /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; dir = 1 @@ -7172,7 +8534,7 @@ /obj/item/device/geiger, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/expedition) -"mX" = ( +"pO" = ( /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; dir = 1 @@ -7189,7 +8551,7 @@ /obj/item/device/radio, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/expedition) -"mY" = ( +"pP" = ( /obj/machinery/power/apc{ dir = 1; name = "north bump"; @@ -7214,29 +8576,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/expedition) -"mZ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"na" = ( +"pQ" = ( /obj/machinery/alarm{ frequency = 1441; pixel_y = 22 @@ -7251,25 +8591,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/expedition) -"nb" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 5 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/corner_techfloor_grid{ - icon_state = "corner_techfloor_grid"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"nc" = ( +"pR" = ( /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; dir = 5 @@ -7284,7 +8606,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/expedition) -"nd" = ( +"pS" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, @@ -7299,34 +8621,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) -"ne" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/simulated/floor, -/area/ship/expe/maintenance1) -"nf" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor, -/area/ship/expe/maintenance1) -"ng" = ( +"pT" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ icon_state = "map-supply"; dir = 4 @@ -7343,946 +8638,397 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) -"nh" = ( -/obj/machinery/door/airlock/research, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/corner/mauve/borderfull, -/obj/effect/floor_decal/borderfloorblack/full, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/white, -/area/ship/expe/science) -"ni" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/corner/blue/borderfull, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/command, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"nj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 - }, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/obj/effect/floor_decal/corner/mauve/border, -/turf/simulated/floor/tiled/white, -/area/ship/expe/corridor2) -"nk" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"nl" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"nm" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"nn" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"no" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"np" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 - }, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/obj/effect/floor_decal/corner/mauve/border, -/turf/simulated/floor/tiled/white, -/area/ship/expe/corridor2) -"nq" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/light, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 - }, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/obj/effect/floor_decal/corner/mauve/border, -/turf/simulated/floor/tiled/white, -/area/ship/expe/science) -"nr" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 - }, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/obj/effect/floor_decal/corner/mauve/border, -/turf/simulated/floor/tiled/white, -/area/ship/expe/science) -"ns" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 9 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/floor_decal/corner/mauve/bordercorner{ - icon_state = "bordercolorcorner"; - dir = 1 - }, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/borderfloorblack/corner{ - icon_state = "borderfloorcorner_black"; - dir = 1 - }, -/obj/effect/floor_decal/corner/mauve/border, -/obj/effect/floor_decal/corner/mauve/bordercorner{ - icon_state = "bordercolorcorner"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/science) -"nt" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 6 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 6 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/science) -"nu" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 5 - }, -/turf/simulated/floor, -/area/ship/expe/maintenance1) -"nv" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/maintenance1) -"nw" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/machinery/light, -/obj/structure/table/rack, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 10 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 10 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/sciencestorage) -"nx" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/obj/structure/table/reinforced, -/obj/machinery/chemical_dispenser, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"ny" = ( -/obj/structure/table/rack, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 6 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 6 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/sciencestorage) -"nz" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/obj/structure/closet/walllocker/emerglocker/north, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"nA" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/purple/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"nB" = ( -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"nC" = ( -/obj/machinery/portable_atmospherics/powered/scrubber, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"nD" = ( -/obj/machinery/portable_atmospherics/powered/scrubber, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"nE" = ( -/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{ - dir = 4; - icon_state = "tube1" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"nF" = ( -/obj/machinery/power/rad_collector, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"nG" = ( -/obj/machinery/atmospherics/unary/freezer{ - icon_state = "freezer_0"; - dir = 1 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"nH" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 5 - }, -/obj/structure/dispenser/phoron, -/turf/simulated/floor, -/area/ship/expe/sm) -"nI" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 9 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"nJ" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor3) -"nK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, +"pU" = ( /obj/machinery/alarm{ frequency = 1441; pixel_y = 22 }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"nL" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/structure/table/woodentable, -/obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/obj/machinery/photocopier/faxmachine, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"nM" = ( -/obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/obj/machinery/photocopier, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"nN" = ( -/obj/structure/table/woodentable, -/obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"nO" = ( -/obj/structure/table/woodentable, -/obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"nP" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"nQ" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"nR" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/machinery/light, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"nS" = ( -/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/embedded_controller/radio/simple_docking_controller{ - frequency = 1500; - id_tag = "vespaboat_docker"; - pixel_x = 22; - pixel_y = -2; - tag = "vespaboat_docker" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"nT" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"nU" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"nV" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/purple/border{ +/obj/effect/floor_decal/corner/red/border{ icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"nW" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"nX" = ( -/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{ - icon_state = "2-8" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"nY" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"nZ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"oa" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"ob" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/green{ - icon_state = "map"; - dir = 1 - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"oc" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"od" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"oe" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 10 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" + dir = 9 }, /obj/machinery/light{ - dir = 4 + icon_state = "tube1"; + dir = 8 }, -/turf/simulated/floor, -/area/ship/expe/sm) -"of" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seccells) +"pV" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; +/obj/machinery/power/terminal{ + icon_state = "term"; dir = 1 }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"og" = ( /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/techfloor{ - icon_state = "techfloor_edges"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"oh" = ( -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"oi" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/obj/machinery/alarm{ - dir = 4; - pixel_x = -25; + icon_state = "0-2"; pixel_y = 0 }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"oj" = ( /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; - dir = 10 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineering) -"ok" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 6 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 6 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineering) -"ol" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seccells) +"pW" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seccells) +"pX" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seccells) +"pY" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; dir = 4 }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/machinery/firealarm{ + pixel_z = 1; + pixel_w = 31 }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"om" = ( -/obj/structure/cable{ - icon_state = "1-8" +/area/ship/expe/seclobby) +"pZ" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 }, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/yellow/border, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"on" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/power/terminal{ + dir = 8 }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"oo" = ( /obj/structure/cable{ icon_state = "0-4"; d2 = 4 }, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/yellow/border, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"op" = ( -/obj/structure/cable{ - icon_state = "1-8" +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 8 }, -/obj/machinery/light, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/yellow/border, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"oq" = ( -/obj/machinery/portable_atmospherics/powered/pump, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/yellow/border, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"or" = ( -/obj/machinery/portable_atmospherics/powered/pump, +/area/ship/expe/sechall) +"qa" = ( /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; dir = 6 }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/obj/machinery/firealarm{ + pixel_z = 1; + pixel_w = 31 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby2) +"qb" = ( +/obj/structure/bed/chair/office/light, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 10 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby2) +"qc" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/firstaid/regular, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby2) +"qd" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"qe" = ( +/obj/structure/bed/chair/office/light, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby2) +"qf" = ( +/obj/structure/dispenser/oxygen, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangarcontrol) +"qg" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 10 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 10 + }, +/obj/item/weapon/storage/box/beakers, +/obj/item/weapon/storage/box/beakers, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"qh" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/structure/bed/chair/office/light{ + icon_state = "officechair_white"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"qi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 9 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/machinery/light, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"qj" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 6 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/obj/item/weapon/reagent_containers/spray/cleaner, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"qk" = ( +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 10 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"ql" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"qm" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"qn" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/item/weapon/storage/box/gloves, +/obj/item/weapon/storage/box/masks, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/machinery/light, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"qo" = ( +/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/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"qp" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/item/weapon/storage/quickdraw/syringe_case, +/obj/machinery/light, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"qq" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"qr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 6 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"qs" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 10 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"qt" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"qu" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 6 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicaleq) +"qv" = ( +/obj/structure/table/steel_reinforced, +/obj/fiftyspawner/plasteel, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, /obj/effect/floor_decal/corner/yellow/border{ icon_state = "bordercolor"; - dir = 6 + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"qw" = ( +/obj/structure/dispenser/oxygen, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringpower) -"os" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 10 +"qx" = ( +/obj/structure/table/steel_reinforced, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"qy" = ( +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 }, /obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"ot" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 8 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" + icon_state = "0-2"; + d2 = 2 }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"qz" = ( +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"qA" = ( +/obj/machinery/portable_atmospherics/powered/scrubber, /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; dir = 4 }, -/obj/effect/floor_decal/corner/mauve/border{ +/obj/effect/floor_decal/corner/yellow/border{ icon_state = "bordercolor"; dir = 4 }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/science) -"ou" = ( -/obj/effect/floor_decal/techfloor, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"ov" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/wall/r_lead, -/area/ship/expe/sm) -"ow" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"ox" = ( -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{ - icon_state = "intact"; - dir = 4 - }, -/turf/simulated/wall/r_lead, -/area/ship/expe/sm) -"oy" = ( -/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ - icon_state = "intact"; - dir = 8 - }, -/turf/space, -/area/ship/expe/sm) -"oz" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 8 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor6) -"oA" = ( +/area/ship/expe/engineeringpower) +"qB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -8290,51 +9036,33 @@ d2 = 2; icon_state = "1-2" }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"oB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 1 +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/floor_decal/corner/blue/border{ +/obj/effect/floor_decal/corner/yellow/border{ icon_state = "bordercolor"; dir = 8 }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"oC" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 1 +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; dir = 4 }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"oD" = ( -/obj/structure/cable, -/turf/space, -/area/space) -"oE" = ( +/area/ship/expe/corridor5) +"qC" = ( /obj/machinery/portable_atmospherics/canister/phoron, /turf/simulated/floor, /area/ship/expe/smstorage) -"oF" = ( +"qD" = ( /obj/machinery/power/emitter, /obj/machinery/power/apc{ dir = 1; @@ -8353,7 +9081,708 @@ }, /turf/simulated/floor, /area/ship/expe/smstorage) -"oG" = ( +"qE" = ( +/obj/machinery/atmospherics/portables_connector, +/turf/simulated/floor, +/area/ship/expe/sm) +"qF" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"qG" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"qH" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"qI" = ( +/obj/structure/sign/poster/nanotrasen, +/turf/simulated/wall/rpshull, +/area/ship/expe/captqua) +"qJ" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"qK" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/structure/table/woodentable, +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/photocopier/faxmachine, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"qL" = ( +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/photocopier, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"qM" = ( +/obj/structure/table/woodentable, +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"qN" = ( +/obj/structure/table/woodentable, +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"qO" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/captqua) +"qP" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/shuttle/vespaboat) +"qQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/shuttle/vespaboat) +"qR" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/mauve/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled/steel, +/area/shuttle/vespaboat) +"qS" = ( +/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/embedded_controller/radio/simple_docking_controller{ + frequency = 1500; + id_tag = "vespaboat_docker"; + pixel_x = 22; + pixel_y = -2; + tag = "vespaboat_docker" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"qT" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"qU" = ( +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"qV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"qW" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"qX" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"qY" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"qZ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"ra" = ( +/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{ + icon_state = "2-8" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"rb" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 10 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seccells) +"rc" = ( +/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{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seccells) +"rd" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/red/border, +/obj/machinery/light, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seccells) +"re" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seccells) +"rf" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 6 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seccells) +"rg" = ( +/obj/machinery/door/airlock/glass_security{ + req_one_access = newlist() + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seccells) +"rh" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/sechall) +"ri" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/seclobby) +"rj" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/item/weapon/folder/red, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"rk" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby) +"rl" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/southleft, +/obj/machinery/door/window/northleft, +/obj/effect/floor_decal/borderfloorblack/full, +/obj/effect/floor_decal/corner/red/borderfull, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby) +"rm" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/medical) +"rn" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"ro" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/southright, +/obj/machinery/door/window/northright, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalchem) +"rp" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/medicalmain) +"rq" = ( +/obj/machinery/door/airlock/glass_medical{ + req_one_access = newlist() + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalmain) +"rr" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/medicalsur) +"rs" = ( +/obj/structure/sign/department/operational, +/turf/simulated/wall/rpshull, +/area/ship/expe/medicalsur) +"rt" = ( +/obj/machinery/door/airlock/medical{ + req_one_access = newlist() + }, +/obj/machinery/door/firedoor/glass, +/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/white, +/area/ship/expe/medicalsur) +"ru" = ( +/obj/machinery/status_display, +/turf/simulated/wall/rpshull, +/area/ship/expe/medicalsur) +"rv" = ( +/obj/structure/sign/examroom, +/turf/simulated/wall/rpshull, +/area/ship/expe/medicalsur) +"rw" = ( +/obj/machinery/door/airlock/medical{ + req_one_access = newlist() + }, +/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/tiled/white, +/area/ship/expe/medical1) +"rx" = ( +/obj/structure/table/steel_reinforced, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 10 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"ry" = ( +/obj/structure/table/steel_reinforced, +/obj/item/weapon/storage/toolbox/electrical, +/obj/item/weapon/storage/toolbox/electrical, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"rz" = ( +/obj/machinery/autolathe, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"rA" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/yellow/border, +/obj/structure/closet/firecloset/full, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"rB" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/obj/structure/closet/firecloset/full, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringequipment) +"rC" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 10 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineering) +"rD" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineering) +"rE" = ( +/obj/structure/dispenser/oxygen, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 10 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"rF" = ( +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"rG" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"rH" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"rI" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"rJ" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"rK" = ( +/obj/machinery/portable_atmospherics/powered/pump, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"rL" = ( +/obj/machinery/portable_atmospherics/powered/pump, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"rM" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor, +/area/ship/expe/smstorage) +"rN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/engineering{ + req_one_access = newlist() + }, +/turf/simulated/floor, +/area/ship/expe/smstorage) +"rO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"rP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"rQ" = ( +/obj/machinery/atmospherics/trinary/atmos_filter/m_filter{ + icon_state = "mmap"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"rR" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/blue, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor, +/area/ship/expe/sm) +"rS" = ( +/turf/space, +/area/ship/expe/sm) +"rT" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor6) +"rU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/corner/blue/borderfull, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/command{ + req_one_access = newlist() + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"rV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"rW" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"rX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 4 @@ -8364,7 +9793,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/captqua) -"oH" = ( +"rY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 4 @@ -8375,7 +9804,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/captqua) -"oI" = ( +"rZ" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, @@ -8390,7 +9819,11 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/captqua) -"oJ" = ( +"sa" = ( +/obj/machinery/status_display, +/turf/simulated/wall/rpshull, +/area/ship/expe/captqua) +"sb" = ( /obj/structure/cable{ d1 = 1; d2 = 2; @@ -8406,1780 +9839,6 @@ }, /turf/simulated/floor/tiled/steel, /area/shuttle/vespaboat) -"oK" = ( -/obj/machinery/atmospherics/portables_connector, -/turf/simulated/floor, -/area/ship/expe/sm) -"oL" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 9 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 9 - }, -/obj/structure/closet/walllocker/emerglocker/north, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"oM" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 5 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 5 - }, -/obj/machinery/access_button/airlock_interior{ - frequency = 1500; - master_tag = "vespalock"; - pixel_x = 1; - pixel_y = 22 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"oN" = ( -/obj/machinery/light, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin5) -"oO" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/black{ - dir = 6 - }, -/obj/machinery/embedded_controller/radio/simple_docking_controller{ - frequency = 1500; - id_tag = "vespaboat_docker"; - pixel_x = 0; - pixel_y = 19 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"oP" = ( -/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - frequency = 1500; - pixel_x = 0; - pixel_y = 18; - tag_airpump = "vespavent"; - tag_chamber_sensor = "vespasensor"; - tag_exterior_door = "vespaext"; - tag_interior_door = "vespaint" - }, -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - dir = 8; - frequency = 1500; - icon_state = "map_vent_out"; - id_tag = "vespavent"; - use_power = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"oQ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 - }, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/obj/effect/floor_decal/corner/mauve/border, -/turf/simulated/floor/tiled/white, -/area/ship/expe/science) -"oR" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/airlock_sensor{ - frequency = 1500; - master_tag = "vespasensor"; - pixel_y = 19 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"oS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 6 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"oT" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"oU" = ( -/obj/machinery/light, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin6) -"oV" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 6 - }, -/obj/structure/bed/chair, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"oW" = ( -/obj/machinery/power/rad_collector, -/obj/structure/cable, -/obj/structure/window/phoronreinforced, -/turf/simulated/floor, -/area/ship/expe/sm) -"oX" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/bed/chair, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"oY" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/structure/bed/chair, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"oZ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/bed/chair, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"pa" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"pb" = ( -/obj/machinery/body_scanconsole{ - icon_state = "scanner_terminal_off"; - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"pc" = ( -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2"; - pixel_y = 0 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"pd" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"pe" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"pf" = ( -/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/ship/expe/corridor2) -"pg" = ( -/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/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"ph" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineering) -"pi" = ( -/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/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/obj/machinery/door/firedoor/glass, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"pj" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"pk" = ( -/obj/structure/table/steel_reinforced, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"pl" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor6) -"pm" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"pn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"po" = ( -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"pp" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/structure/bed/chair/bay/comfy/captain{ - icon_state = "capchair_preview"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"pq" = ( -/obj/item/modular_computer/console{ - icon_state = "console"; - dir = 8 - }, -/obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"pr" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"ps" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/mauve/border, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"pt" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/mauve/border, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"pu" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 1 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"pv" = ( -/obj/structure/table/steel_reinforced, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"pw" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"px" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"py" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 6 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 6 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"pz" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/fans/tiny, -/obj/machinery/door/airlock/glass_external{ - frequency = 1500; - id_tag = "vespaint" - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"pA" = ( -/obj/machinery/light, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin7) -"pB" = ( -/obj/machinery/light, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin8) -"pC" = ( -/obj/machinery/light, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin9) -"pD" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/black{ - icon_state = "map"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"pE" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"pF" = ( -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"pG" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - dir = 8; - frequency = 1500; - icon_state = "map_vent_out"; - id_tag = "vespavent"; - use_power = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"pH" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/shuttle_landmark/shuttle_initializer/vespaboat, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"pI" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/fans/tiny, -/obj/machinery/door/airlock/glass_external{ - frequency = 1500; - id_tag = "vespaext"; - locked = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"pJ" = ( -/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{ - dir = 4; - icon_state = "tube1" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"pK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 - }, -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"pL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/table/steel_reinforced, -/obj/item/weapon/paper_bin, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"pM" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/structure/table/steel_reinforced, -/obj/item/weapon/pen, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"pN" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"pO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/structure/table/steel_reinforced, -/obj/item/weapon/folder/white, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"pP" = ( -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"pQ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/structure/table/steel_reinforced, -/obj/item/device/universal_translator, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"pR" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 10 - }, -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"pS" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/purple/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"pT" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"pU" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"pV" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/blast/regular{ - id = "SuperMatterDoors" - }, -/turf/simulated/floor/reinforced/phoron, -/area/ship/expe/sm) -"pW" = ( -/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/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"pX" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/blast/regular{ - id = "SuperMatterDoors" - }, -/turf/simulated/floor/reinforced/phoron, -/area/ship/expe/sm) -"pY" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor, -/area/ship/expe/smstorage) -"pZ" = ( -/obj/structure/dispenser/oxygen, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"qa" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"qb" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/blast/regular{ - id = "SuperMatterDoors" - }, -/turf/simulated/floor/reinforced/phoron, -/area/ship/expe/sm) -"qc" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/obj/effect/floor_decal/techfloor, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"qd" = ( -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/corner_techfloor_grid/full{ - icon_state = "corner_techfloor_grid_full"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"qe" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"qf" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/effect/floor_decal/techfloor, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"qg" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/floor_decal/techfloor/corner, -/obj/effect/floor_decal/corner_techfloor_grid/full, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"qh" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/effect/floor_decal/corner_techfloor_grid{ - icon_state = "corner_techfloor_grid"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor6) -"qi" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 9 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 - }, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor6) -"qj" = ( -/obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"qk" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"ql" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"qm" = ( -/obj/machinery/door/window{ - icon_state = "left"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/black{ - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"qn" = ( -/obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/black{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"qo" = ( -/obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; - dir = 1 - }, -/obj/machinery/atmospherics/portables_connector{ - icon_state = "map_connector"; - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/air, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"qp" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 10 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"qq" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"qr" = ( -/obj/machinery/access_button/airlock_exterior{ - pixel_x = 7 - }, -/turf/simulated/wall/rpshull, -/area/shuttle/vespaboat) -"qs" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/door/blast/regular{ - id = "SuperMatterDoors" - }, -/turf/simulated/floor/reinforced/phoron, -/area/ship/expe/sm) -"qt" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/machinery/door/blast/regular{ - id = "SuperMatterDoors" - }, -/turf/simulated/floor/reinforced/phoron, -/area/ship/expe/sm) -"qu" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"qv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/table/steel_reinforced, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"qw" = ( -/obj/structure/table/steel_reinforced, -/obj/item/weapon/folder/blue, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"qx" = ( -/obj/structure/table/steel_reinforced, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"qy" = ( -/obj/structure/table/steel_reinforced, -/obj/item/device/universal_translator, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"qz" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"qA" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"qB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"qC" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"qD" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"qE" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"qF" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/expedition) -"qG" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/obj/machinery/sleeper{ - icon_state = "sleeper_0"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"qH" = ( -/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/ship/expe/armoury) -"qI" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor, -/area/ship/expe/smstorage) -"qJ" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/door/blast/regular{ - id = "SuperMatterDoors" - }, -/turf/simulated/floor/reinforced/phoron, -/area/ship/expe/sm) -"qK" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/wall/r_lead, -/area/ship/expe/sm) -"qL" = ( -/obj/machinery/power/supermatter/shard, -/turf/simulated/floor/reinforced/phoron, -/area/ship/expe/sm) -"qM" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"qN" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/structure/table/steel_reinforced, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"qO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/effect/floor_decal/corner_techfloor_grid/full{ - icon_state = "corner_techfloor_grid_full"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"qP" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 10 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 10 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"qQ" = ( -/obj/machinery/light, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"qR" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/obj/effect/floor_decal/techfloor, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"qS" = ( -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"qT" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"qU" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor6) -"qV" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 6 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor6) -"qW" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"qX" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/floor_decal/corner/blue/border, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"qY" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/effect/floor_decal/corner/blue/border, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"qZ" = ( -/obj/structure/table/woodentable, -/obj/effect/floor_decal/corner/blue/border, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"ra" = ( -/obj/structure/bed/double, -/obj/item/weapon/bedsheet/captaindouble, -/obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 6 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"rb" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/bed/chair{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"rc" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"rd" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"re" = ( -/obj/machinery/door/airlock/hatch, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"rf" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"rg" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"rh" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/purple/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"ri" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 5 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"rj" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"rk" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"rl" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/simulated/floor/plating/external, -/area/shuttle/vespaboat) -"rm" = ( -/turf/simulated/floor/plating/external, -/area/shuttle/vespaboat) -"rn" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"ro" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 9 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"rp" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/structure/bed/double, -/obj/item/weapon/bedsheet/double, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin8) -"rq" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/structure/bed/double, -/obj/item/weapon/bedsheet/double, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin9) -"rr" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"rs" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/purple/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/structure/table/rack/shelf, -/obj/item/device/gps/explorer, -/obj/item/device/gps/explorer, -/obj/item/device/gps/explorer, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"rt" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"ru" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 9 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"rv" = ( -/obj/item/modular_computer/console/preset/civilian, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin3) -"rw" = ( -/obj/item/modular_computer/console/preset/civilian, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin4) -"rx" = ( -/obj/item/modular_computer/console/preset/civilian, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin5) -"ry" = ( -/obj/item/modular_computer/console/preset/civilian, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin6) -"rz" = ( -/obj/item/modular_computer/console/preset/civilian, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin7) -"rA" = ( -/obj/item/modular_computer/console/preset/civilian, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin8) -"rB" = ( -/obj/item/modular_computer/console/preset/civilian, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin9) -"rC" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 9 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 9 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"rD" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/obj/machinery/atmospherics/unary/freezer, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"rE" = ( -/obj/structure/table/reinforced, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 9 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 9 - }, -/obj/item/weapon/storage/firstaid/o2, -/obj/item/weapon/storage/firstaid/o2, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"rF" = ( -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"rG" = ( -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/space, -/area/space) -"rH" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 6 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"rI" = ( -/obj/structure/table/reinforced, -/obj/structure/closet/walllocker/emerglocker/north, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/obj/item/weapon/storage/firstaid/regular, -/obj/item/weapon/storage/firstaid/regular, -/obj/item/weapon/storage/firstaid/regular, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"rJ" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 9 - }, -/turf/simulated/floor, -/area/ship/expe/maintenance1) -"rK" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor, -/area/ship/expe/maintenance1) -"rL" = ( -/obj/machinery/light, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"rM" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"rN" = ( -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/purple/border, -/obj/structure/table/steel_reinforced, -/obj/item/weapon/pen, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"rO" = ( -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/purple/border, -/obj/structure/table/steel_reinforced, -/obj/item/weapon/folder/red, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"rP" = ( -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/purple/border, -/obj/structure/table/steel_reinforced, -/obj/machinery/photocopier/faxmachine, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"rQ" = ( -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/purple/border, -/obj/machinery/photocopier, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"rR" = ( -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/purple/border, -/obj/structure/closet/crate, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"rS" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/purple/border, -/obj/machinery/mineral/equipment_vendor/survey, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"rT" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 6 - }, -/obj/effect/floor_decal/corner/purple/border{ - icon_state = "bordercolor"; - dir = 6 - }, -/obj/structure/table/rack/shelf, -/obj/item/device/gps/explorer, -/obj/item/device/gps/explorer, -/obj/item/device/gps/explorer, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"rU" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/simulated/floor, -/area/ship/expe/maintenance1) -"rV" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 6 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"rW" = ( -/obj/machinery/door/airlock/glass_medical, -/obj/machinery/door/firedoor/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"rX" = ( -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/white, -/area/ship/expe/corridor2) -"rY" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/corner_techfloor_grid/full{ - icon_state = "corner_techfloor_grid_full"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"rZ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"sa" = ( -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"sb" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) "sc" = ( /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; @@ -10195,475 +9854,539 @@ "sd" = ( /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; - dir = 1 + dir = 5 }, /obj/effect/floor_decal/corner/mauve/border{ icon_state = "bordercolor"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 5 +/obj/machinery/airlock_sensor/airlock_interior{ + frequency = 1500; + id_tag = "vespashuttleintsens"; + master_tag = "vespaboat"; + name = "interior sensor"; + pixel_y = 25 }, /turf/simulated/floor/tiled/steel, /area/shuttle/vespaboat) "se" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +/obj/machinery/light{ + dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"sf" = ( +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1500; + id_tag = "vespaboat"; + pixel_x = 0; + pixel_y = 18; + tag_airpump = "vespavent"; + tag_chamber_sensor = "vespasensor"; + tag_exterior_door = "vespaext"; + tag_exterior_sensor = "vespashuttleextsens"; + tag_interior_door = "vespaint"; + tag_interior_sensor = "vespashuttleintsens" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1500; + icon_state = "map_vent_out"; + id_tag = "vespavent"; + use_power = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"sg" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/airlock_sensor{ + frequency = 1500; + master_tag = "vespasensor"; + pixel_y = 19 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"sh" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"si" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"sj" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 6 + }, +/obj/structure/bed/chair, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"sk" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/sleep_console{ - icon_state = "sleeperconsole"; - dir = 2 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"sf" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"sg" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"sh" = ( -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"si" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"sj" = ( -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"sk" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; - dir = 5 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" + dir = 4 }, +/obj/structure/bed/chair, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) +/area/ship/expe/expedition) "sl" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/machinery/access_button/airlock_interior{ - pixel_x = 24; - pixel_y = -1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"sm" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/corridor2) -"sn" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"so" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/southairlock) -"sp" = ( -/obj/machinery/door/airlock/glass_external{ - frequency = 1459; - id_tag = "southint" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/southairlock) -"sq" = ( -/obj/structure/dispenser/oxygen, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 10 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"sr" = ( -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/yellow/border, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"ss" = ( -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/light, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/yellow/border, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"st" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 6 - }, -/obj/machinery/air_sensor{ - frequency = 1459; - id_tag = "southsensor" - }, -/obj/machinery/airlock_sensor{ - frequency = 1459; - id_tag = "southsensor"; - pixel_x = 0; - pixel_y = 21 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/southairlock) -"su" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/blue{ - icon_state = "map"; +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; dir = 4 }, -/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - frequency = 1459; - id_tag = "southairlock"; - pixel_x = 0; - pixel_y = 21; - tag_airpump = "southvent"; - tag_chamber_sensor = "southsensor"; - tag_exterior_door = "southext"; - tag_interior_door = "southint" - }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/bed/chair, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/southairlock) -"sv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 6 - }, -/turf/simulated/floor, -/area/ship/expe/corridor2) -"sw" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/corridor2) -"sx" = ( -/obj/machinery/power/apc{ - dir = 2; - name = "south bump"; - pixel_y = -32 - }, -/obj/machinery/power/terminal, -/obj/structure/cable, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/southairlock) -"sy" = ( -/obj/machinery/alarm{ - dir = 1; - pixel_y = -25 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/southairlock) -"sz" = ( -/obj/machinery/atmospherics/unary/vent_pump{ - dir = 1; - external_pressure_bound = 140; - external_pressure_bound_default = 140; - frequency = 1459; - icon_state = "map_vent_out"; - id_tag = "southvent"; - pressure_checks = 0; - pressure_checks_default = 0; - use_power = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/southairlock) -"sA" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"sB" = ( -/obj/structure/fans/tiny, -/obj/structure/fans/tiny, -/obj/machinery/door/airlock/external{ - frequency = 1459; - id_tag = "southext" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/southairlock) -"sC" = ( -/obj/machinery/door/airlock/external{ - frequency = 1459; - id_tag = "southext" - }, -/obj/structure/fans/tiny, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/southairlock) -"sD" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engines) -"sE" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"sF" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 10 - }, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"sG" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 1 +/area/ship/expe/expedition) +"sm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; dir = 4 }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"sH" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"sI" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"sJ" = ( /obj/structure/cable{ d1 = 1; d2 = 4; icon_state = "1-4" }, -/obj/structure/closet/firecloset/full, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"sK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"sL" = ( -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"sM" = ( -/obj/machinery/light{ +/obj/structure/bed/chair, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"sn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"so" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"sp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/corner/purple/borderfull, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_science{ + req_one_access = newlist() + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"sq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"sr" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; dir = 4 }, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"sN" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ icon_state = "map-scrubbers"; dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"ss" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/cable, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seccells) +"st" = ( +/obj/machinery/door/window/brigdoor/northleft, +/obj/effect/floor_decal/borderfloorblack/full, +/obj/effect/floor_decal/corner/red/borderfull, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seccells) +"su" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 9 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby) +"sv" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby) +"sw" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 5 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 5 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby) +"sx" = ( +/obj/machinery/holoplant, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 9 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medical) +"sy" = ( +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medical) +"sz" = ( +/obj/machinery/firealarm{ + pixel_x = 0; + pixel_y = 31 + }, +/obj/structure/bed/chair, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medical) +"sA" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/obj/structure/bed/chair, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medical) +"sB" = ( +/obj/structure/closet/secure_closet/medical_wall{ + pixel_x = 0; + pixel_y = 32; + req_access = ""; + req_one_access = "" + }, +/obj/structure/bed/chair, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medical) +"sC" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/structure/bed/chair, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medical) +"sD" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 5 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medical) +"sE" = ( +/obj/structure/table/reinforced, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 9 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/obj/item/weapon/storage/box/freezer, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalsur) +"sF" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalsur) +"sG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalsur) +"sH" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalsur) +"sI" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 5 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 5 + }, +/obj/item/weapon/storage/box/freezer, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalsur) +"sJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 9 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medical1) +"sK" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; dir = 1 }, /obj/structure/cable{ icon_state = "2-8" }, /turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"sO" = ( -/obj/structure/closet/firecloset/full, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"sP" = ( -/obj/machinery/atmospherics/portables_connector{ - icon_state = "map_connector"; - dir = 4 - }, -/obj/machinery/portable_atmospherics/canister/air/airlock, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"sQ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"sR" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 9 - }, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"sS" = ( -/obj/item/weapon/handcuffs/fuzzy, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"sT" = ( -/obj/machinery/atmospherics/pipe/tank/phoron, -/turf/simulated/floor, -/area/ship/expe/engines) -"sU" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"sV" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"sW" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"sX" = ( -/obj/machinery/atmospherics/binary/pump, -/turf/simulated/floor, -/area/ship/expe/engines) -"sY" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"sZ" = ( -/obj/item/inflatable/torn, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engines) -"ta" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"tb" = ( -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"tc" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"td" = ( -/obj/structure/table/reinforced, -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, +/area/ship/expe/medical1) +"sL" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/obj/structure/bed, +/obj/structure/curtain/medical, /obj/effect/floor_decal/borderfloorwhite{ icon_state = "borderfloor_white"; dir = 1 @@ -10672,98 +10395,41 @@ icon_state = "bordercolor"; dir = 1 }, -/obj/item/weapon/storage/firstaid/toxin, -/obj/item/weapon/storage/firstaid/toxin, -/obj/item/weapon/storage/firstaid/toxin, /turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"te" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"tf" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/captqua) -"tg" = ( -/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/white, -/area/ship/expe/medicalmain) -"th" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"ti" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"tj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/obj/machinery/meter, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"tk" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/obj/machinery/meter, -/turf/simulated/floor, -/area/ship/expe/engines) -"tl" = ( -/turf/simulated/floor, -/area/ship/expe/engines) -"tm" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"tn" = ( -/obj/machinery/bodyscanner{ - icon_state = "scanner_open"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"to" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"tp" = ( -/obj/machinery/access_button/airlock_exterior{ +/area/ship/expe/medical1) +"sM" = ( +/obj/machinery/firealarm{ pixel_x = -1; - pixel_y = 25 + pixel_y = 30 }, -/turf/space, -/area/space) -"tq" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/bed, +/obj/structure/curtain/medical, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medical1) +"sN" = ( +/obj/structure/bed, +/obj/structure/curtain/medical, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medical1) +"sO" = ( +/obj/structure/bed, +/obj/structure/curtain/medical, /obj/effect/floor_decal/borderfloorwhite{ icon_state = "borderfloor_white"; dir = 5 @@ -10772,24 +10438,12 @@ icon_state = "bordercolor"; dir = 5 }, -/obj/structure/closet/crate, -/obj/item/weapon/storage/box/bloodpacks, -/obj/item/weapon/storage/box/backup_kit, -/obj/item/weapon/storage/box/gloves, /turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"tr" = ( -/obj/structure/table/reinforced, -/obj/machinery/chemical_dispenser/biochemistry, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"ts" = ( -/obj/effect/overmap/visitable/ship/vespa{ - fore_dir = 4 - }, -/turf/space, -/area/space) -"tt" = ( +/area/ship/expe/medical1) +"sP" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/medical1) +"sQ" = ( /obj/effect/floor_decal/techfloor{ icon_state = "techfloor_edges"; dir = 8 @@ -10813,576 +10467,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor4) -"tu" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/structure/table/woodentable, -/obj/item/weapon/soap/nanotrasen, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/cabin6) -"tv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/turf/simulated/floor, -/area/ship/expe/engines) -"tw" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"tx" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/medicalsur) -"ty" = ( -/turf/space, -/area/ship/expe/engines) -"tz" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"tA" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/corner/purple/borderfull, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass_science, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"tB" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/obj/structure/closet/walllocker/emerglocker/north, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"tC" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/obj/structure/closet/walllocker/emerglocker/north, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) -"tD" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/obj/machinery/chem_master, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"tE" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor, -/obj/machinery/firealarm{ - pixel_y = -26 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"tF" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor, -/obj/machinery/firealarm{ - pixel_y = -26 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"tG" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"tH" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"tI" = ( -/obj/machinery/door/airlock/medical, -/obj/machinery/door/firedoor/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"tJ" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"tK" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"tL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 4 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"tM" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"tN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 5 - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"tO" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"tP" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"tQ" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 4 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"tR" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/structure/closet/walllocker/emerglocker/north, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"tS" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"tT" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"tU" = ( -/obj/structure/table/reinforced, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/obj/item/weapon/storage/firstaid/fire, -/obj/item/weapon/storage/firstaid/fire, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"tV" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"tW" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 10 - }, -/obj/effect/floor_decal/corner/purple/border{ - icon_state = "bordercolor"; - dir = 10 - }, -/obj/structure/table/steel_reinforced, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"tX" = ( -/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/white, -/area/ship/expe/medicalmain) -"tY" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 4 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"tZ" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"ua" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"ub" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"uc" = ( -/obj/structure/sign/examroom, -/turf/simulated/wall/rpshull, -/area/ship/expe/medicalsur) -"ud" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/medical) -"ue" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 4 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"uf" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 9 - }, -/obj/effect/floor_decal/corner/purple/border{ - icon_state = "bordercolor"; - dir = 9 - }, -/obj/structure/closet, -/obj/item/weapon/cell/high, -/obj/item/weapon/cell/high, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/expedition) -"ug" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"uh" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/obj/structure/closet/walllocker/emerglocker/west, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/captqua) -"ui" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 1 - }, -/obj/structure/closet/walllocker/emerglocker/north, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor5) -"uj" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"uk" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/space, -/area/space) -"ul" = ( -/obj/structure/closet/walllocker/emerglocker/east, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"um" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor, -/obj/structure/closet/walllocker/emerglocker/south, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"un" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor, -/obj/structure/closet/walllocker/emerglocker/south, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"uo" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"up" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"uq" = ( -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/space, -/area/space) -"ur" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"us" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/space, -/area/space) -"ut" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-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/tiled/white, -/area/ship/expe/medicalmain) -"uu" = ( -/obj/structure/table/reinforced, -/obj/machinery/chemical_dispenser, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"uv" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"uw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 4 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/item/weapon/soap/syndie, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"ux" = ( +"sR" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ icon_state = "map-supply"; dir = 4 @@ -11402,129 +10487,603 @@ /obj/machinery/door/firedoor/glass/hidden, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor4) -"uy" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; +"sS" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineering) +"sT" = ( +/obj/machinery/status_display, +/turf/simulated/wall/rpshull, +/area/ship/expe/engineeringpower) +"sU" = ( +/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/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/machinery/door/firedoor/glass, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"sV" = ( +/obj/structure/sign/department/engine, +/turf/simulated/wall/r_lead, +/area/ship/expe/smstorage) +"sW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor6) +"sX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/structure/closet/walllocker/emerglocker/west, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"sY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"sZ" = ( +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"ta" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ +/obj/structure/bed/chair/bay/comfy/captain{ + icon_state = "capchair_preview"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"tb" = ( +/obj/item/modular_computer/console{ + icon_state = "console"; + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"tc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"td" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 10 + }, +/obj/effect/floor_decal/corner/mauve/border{ + icon_state = "bordercolor"; + dir = 10 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/steel, +/area/shuttle/vespaboat) +"te" = ( +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/mauve/border, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/steel, +/area/shuttle/vespaboat) +"tf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/mauve/border, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/steel, +/area/shuttle/vespaboat) +"tg" = ( /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/mauve/border, +/turf/simulated/floor/tiled/steel, +/area/shuttle/vespaboat) +"th" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 6 + }, +/obj/effect/floor_decal/corner/mauve/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/turf/simulated/floor/tiled/steel, +/area/shuttle/vespaboat) +"ti" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/glass_external{ + frequency = 1500; + id_tag = "vespaint" + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"tj" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/black{ + icon_state = "map"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"tk" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1500; + icon_state = "map_vent_out"; + id_tag = "vespavent"; + use_power = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"tl" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/shuttle_landmark/shuttle_initializer/vespaboat, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"tm" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/glass_external{ + frequency = 1500; + id_tag = "vespaext"; + locked = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"tn" = ( +/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{ + dir = 4; + icon_state = "tube1" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"to" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 5 + }, +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"tp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/table/steel_reinforced, +/obj/item/weapon/paper_bin, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"tq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/structure/table/steel_reinforced, +/obj/item/weapon/pen, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"tr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/structure/table/steel_reinforced, +/obj/item/weapon/folder/white, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"ts" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/structure/table/steel_reinforced, +/obj/item/device/universal_translator, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"tt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 10 + }, +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"tu" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"tv" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"tw" = ( +/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/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"tx" = ( +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seccells) +"ty" = ( +/obj/structure/sign/poster/nanotrasen, +/turf/simulated/wall/rpshull, +/area/ship/expe/seccells) +"tz" = ( +/obj/machinery/alarm{ + dir = 4; + pixel_x = -25; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/sechall) +"tA" = ( +/obj/structure/sign/poster/nanotrasen, +/turf/simulated/wall/rpshull, +/area/ship/expe/seclobby) +"tB" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby) +"tC" = ( +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby) +"tD" = ( +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"tE" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, /obj/effect/floor_decal/borderfloorwhite{ icon_state = "borderfloor_white"; - dir = 4 + dir = 8 }, /obj/effect/floor_decal/corner/paleblue/border{ icon_state = "bordercolor"; - dir = 4 + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medical) +"tF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medical) +"tG" = ( +/obj/structure/cable{ + icon_state = "4-8" }, /obj/structure/cable{ icon_state = "2-8" }, /turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"uz" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ +/area/ship/expe/medical) +"tH" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; dir = 4 }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medical) +"tI" = ( +/obj/machinery/firealarm{ + pixel_x = -31; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/structure/table/reinforced, +/obj/item/weapon/storage/firstaid/surgery, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalsur) +"tJ" = ( +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalsur) +"tK" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/reagent_containers/spray/sterilizine, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalsur) +"tL" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/item/weapon/storage/firstaid/surgery, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medicalsur) +"tM" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medical1) +"tN" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medical1) +"tO" = ( +/turf/simulated/floor/tiled/white, +/area/ship/expe/medical1) +"tP" = ( +/obj/effect/floor_decal/borderfloorwhite{ + icon_state = "borderfloor_white"; dir = 4 }, +/obj/effect/floor_decal/corner/paleblue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/medical1) +"tQ" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 8 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/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/ship/expe/corridor4) +"tR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 + }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 +/obj/effect/floor_decal/corner_techfloor_grid{ + icon_state = "corner_techfloor_grid"; + dir = 4 }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 8 +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"tS" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 1 }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"uA" = ( -/obj/structure/table/reinforced, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 1 }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/obj/item/weapon/storage/firstaid/adv, -/obj/item/weapon/storage/firstaid/adv, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"uB" = ( -/obj/machinery/chem_master, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"uC" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"uD" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"uE" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/southright, -/obj/machinery/door/window/northright, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"uF" = ( -/obj/machinery/door/airlock/glass_medical, -/obj/machinery/door/firedoor/glass, /obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" + icon_state = "4-8" }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"uG" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/medical1) -"uH" = ( -/obj/machinery/door/airlock/multi_tile/glass{ - icon_state = "door_closed"; - dir = 8 +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"tT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 }, -/obj/machinery/door/firedoor/glass, /obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" + icon_state = "2-8" }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/corridor2) -"uI" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"tU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 4 @@ -11537,84 +11096,53 @@ icon_state = "techfloor_edges"; dir = 1 }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"uJ" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"uK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"uL" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/techfloor, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"uM" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/space, -/area/space) -"uN" = ( -/obj/machinery/door/airlock/medical, /obj/machinery/door/firedoor/glass, -/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/white, -/area/ship/expe/medicalsur) -"uO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 4 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"uP" = ( -/obj/structure/closet/walllocker/emerglocker/north, +/obj/machinery/door/airlock/glass, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/armoury) -"uQ" = ( +/area/ship/expe/corridor4) +"tV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"tW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"tX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, /obj/machinery/power/apc{ dir = 1; name = "north bump"; @@ -11626,453 +11154,31 @@ dir = 1 }, /obj/structure/cable{ - d2 = 2; icon_state = "0-2"; - pixel_y = 0 + d2 = 2 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/armoury) -"uR" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"uS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"uT" = ( -/obj/machinery/firealarm{ - pixel_x = -31; - pixel_y = -1 - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"uU" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 6 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 6 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"uV" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "west bump"; - pixel_x = -24 - }, -/obj/machinery/power/terminal{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"uW" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 4 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"uX" = ( -/obj/structure/table/reinforced, -/obj/machinery/reagentgrinder, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"uY" = ( -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/mauve/border, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"uZ" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "west bump"; - pixel_x = -24 - }, -/obj/machinery/power/terminal{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"va" = ( -/obj/machinery/firealarm{ - pixel_x = -28 - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"vb" = ( -/obj/machinery/power/port_gen/pacman, -/obj/structure/cable, -/turf/simulated/floor, -/area/shuttle/vespaboat) -"vc" = ( -/obj/structure/table/reinforced, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 4 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/item/weapon/storage/box/pillbottles, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"vd" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/paleblue/border, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"ve" = ( -/obj/machinery/atmospherics/trinary/atmos_filter/m_filter{ - icon_state = "mmap"; - dir = 4 - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"vf" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"vg" = ( +/area/ship/expe/corridor5) +"tY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; - dir = 9 - }, -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/paleblue/border, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"vh" = ( -/obj/structure/table/reinforced, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; dir = 4 }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; dir = 4 }, -/obj/item/weapon/storage/box/syringes, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"vi" = ( -/obj/structure/table/reinforced, -/obj/item/weapon/reagent_containers/dropper, -/obj/item/weapon/reagent_containers/glass/beaker/large, -/obj/item/weapon/reagent_containers/glass/beaker/large, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"vj" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 10 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 10 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"vk" = ( -/obj/effect/shuttle_landmark{ - base_area = /area/space; - base_turf = /turf/space; - landmark_tag = "HPV_starboard"; - name = "starboard of Vespa" - }, -/turf/space, -/area/space) -"vl" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/paleblue/border, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"vm" = ( -/obj/structure/table/reinforced, -/obj/machinery/recharger, -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/paleblue/border, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"vn" = ( -/obj/structure/table/reinforced, -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/paleblue/border, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"vo" = ( -/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/borderfloorwhite, -/obj/effect/floor_decal/corner/paleblue/border, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"vp" = ( -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/paleblue/border, -/turf/simulated/wall/rpshull, -/area/ship/expe/medicalsur) -"vq" = ( -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/armoury) -"vr" = ( -/obj/machinery/door/airlock/medical, -/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/tiled/white, -/area/ship/expe/medical1) -"vs" = ( -/turf/simulated/floor, -/area/shuttle/vespaboat) -"vt" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical) -"vu" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical) -"vv" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 10 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 10 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"vw" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/paleblue/border, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"vx" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/space, -/area/space) -"vy" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; dir = 1 }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/obj/machinery/atmospherics/portables_connector, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"vz" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/space, -/area/space) -"vA" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/space, -/area/space) -"vB" = ( -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalsur) -"vC" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 6 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 6 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"vD" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 9 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 9 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical1) -"vE" = ( -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical1) -"vF" = ( -/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/tiled/techfloor, -/area/ship/expe/armoury) -"vG" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/green, -/turf/simulated/floor, -/area/ship/expe/engines) -"vH" = ( -/obj/structure/sign/department/medbay, -/turf/simulated/wall/rpshull, -/area/ship/expe/corridor2) -"vI" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"vJ" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"vK" = ( +/area/ship/expe/corridor5) +"tZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 4 @@ -12087,146 +11193,117 @@ }, /obj/structure/closet/walllocker/emerglocker/north, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"vL" = ( -/obj/machinery/holoplant, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 9 +/area/ship/expe/corridor5) +"ua" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 9 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical) -"vM" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; dir = 1 }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; +/obj/machinery/light{ dir = 1 }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical) -"vN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"ub" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"uc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 1 }, /obj/structure/cable{ icon_state = "4-8" }, -/turf/simulated/floor, -/area/ship/expe/sm) -"vO" = ( -/obj/machinery/atmospherics/trinary/atmos_filter/m_filter{ - icon_state = "mmap"; +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"ud" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"ue" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, -/turf/simulated/floor, -/area/ship/expe/sm) -"vP" = ( -/obj/machinery/firealarm{ - pixel_x = 0; - pixel_y = 31 - }, -/obj/structure/bed/chair, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; dir = 1 }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 1 +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"uf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical) -"vQ" = ( -/obj/structure/closet/walllocker/emerglocker/north, -/obj/structure/bed/chair, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical) -"vR" = ( -/obj/structure/closet/secure_closet/medical_wall{ - pixel_x = 0; - pixel_y = 32; - req_access = ""; - req_one_access = "" - }, -/obj/structure/bed/chair, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical) -"vS" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/structure/bed/chair, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical) -"vT" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 5 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 5 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical) -"vU" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/blue, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/simulated/floor, -/area/ship/expe/sm) -"vV" = ( -/obj/structure/cable{ - icon_state = "1-8" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 }, /obj/structure/cable{ icon_state = "2-8" }, -/turf/simulated/wall/r_lead, -/area/ship/expe/sm) -"vW" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"ug" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 4 @@ -12239,428 +11316,302 @@ icon_state = "techfloor_edges"; dir = 1 }, -/obj/structure/closet/walllocker/emerglocker/north, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor2) -"vX" = ( -/obj/machinery/power/smes/buildable/hybrid{ - recharge_rate = 10000 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"vY" = ( -/obj/effect/shuttle_landmark/automatic{ - name = "starboard of Vespa" - }, -/turf/space, -/area/space) -"vZ" = ( -/obj/structure/sign/department/engine, -/turf/simulated/wall/r_lead, -/area/ship/expe/sm) -"wa" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ +/area/ship/expe/corridor5) +"uh" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; dir = 1 }, -/obj/machinery/firealarm{ - pixel_y = -26 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 }, -/obj/structure/closet/firecloset/full, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangarcontrol) -"wb" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/obj/structure/closet/radiation, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"wc" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/obj/structure/closet/walllocker/emerglocker/north, -/obj/structure/closet/radiation, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"wd" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/maintenance2) -"we" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/machinery/light, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/yellow/border, -/obj/structure/closet/firecloset/full, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"wf" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 6 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 6 - }, -/obj/structure/closet/firecloset/full, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringequipment) -"wg" = ( -/obj/structure/sign/department/engine, -/turf/simulated/wall/r_lead, -/area/ship/expe/smstorage) -"wh" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue, -/turf/simulated/wall/rpshull, -/area/ship/expe/corridor2) -"wi" = ( /obj/effect/floor_decal/techfloor{ icon_state = "techfloor_edges"; - dir = 10 + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"ui" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"uj" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/corner_techfloor_grid{ + icon_state = "corner_techfloor_grid"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor6) +"uk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor6) +"ul" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"um" = ( +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"un" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"uo" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"up" = ( +/obj/machinery/power/port_gen/pacman, +/obj/structure/cable, +/turf/simulated/floor, +/area/shuttle/vespaboat) +"uq" = ( +/turf/simulated/floor, +/area/shuttle/vespaboat) +"ur" = ( +/obj/machinery/door/window{ + icon_state = "left"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"us" = ( +/obj/structure/window/phoronreinforced{ + icon_state = "phoronrwindow"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + dir = 4 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"ut" = ( +/obj/structure/window/phoronreinforced{ + icon_state = "phoronrwindow"; + dir = 1 + }, +/obj/machinery/atmospherics/portables_connector{ + icon_state = "map_connector"; + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"uu" = ( +/obj/machinery/airlock_sensor/airlock_exterior/shuttle{ + frequency = 1500; + id_tag = "vespashuttleextsens"; + master_tag = "vespaboat" + }, +/turf/simulated/wall/rpshull, +/area/shuttle/vespaboat) +"uv" = ( +/obj/structure/sign/poster/nanotrasen, +/turf/simulated/wall/rpshull, +/area/ship/expe/expedition) +"uw" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"ux" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/table/steel_reinforced, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"uy" = ( +/obj/structure/table/steel_reinforced, +/obj/item/weapon/folder/blue, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"uz" = ( +/obj/structure/table/steel_reinforced, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"uA" = ( +/obj/structure/table/steel_reinforced, +/obj/item/device/universal_translator, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"uB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"uC" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 8 }, -/obj/structure/closet/firecloset/full, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) -"wj" = ( -/obj/machinery/atmospherics/valve{ - icon_state = "map_valve0"; - dir = 4 - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"wk" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/green{ - icon_state = "map"; - dir = 1 - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"wl" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/wall/r_lead, -/area/ship/expe/sm) -"wm" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/armoury) -"wn" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/armoury) -"wo" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 9 - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"wp" = ( -/obj/machinery/atmospherics/pipe/cap/visible{ - icon_state = "cap"; - dir = 1 - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"wq" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 9 - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 4 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/structure/table/reinforced, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"wr" = ( -/obj/structure/closet/walllocker/emerglocker/north, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalsur) -"ws" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalsur) -"wt" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalsur) -"wu" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 4 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/structure/table/reinforced, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicaleq) -"wv" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical1) -"ww" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical1) -"wx" = ( -/obj/structure/closet/walllocker/emerglocker/north, -/obj/structure/bed, -/obj/structure/curtain/medical, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical1) -"wy" = ( -/obj/machinery/firealarm{ - pixel_x = -1; - pixel_y = 30 - }, -/obj/structure/bed, -/obj/structure/curtain/medical, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical1) -"wz" = ( -/obj/structure/bed, -/obj/structure/curtain/medical, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical1) -"wA" = ( -/obj/structure/bed, -/obj/structure/curtain/medical, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 5 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 5 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical1) -"wB" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical) -"wC" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 4 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical) -"wD" = ( -/obj/structure/table/reinforced, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 10 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 10 - }, -/obj/item/weapon/storage/box/beakers, -/obj/item/weapon/storage/box/beakers, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"wE" = ( -/obj/structure/table/reinforced, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 6 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 6 - }, -/obj/item/weapon/reagent_containers/spray/cleaner, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalchem) -"wF" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "west bump"; - pixel_x = -24 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 - }, +"uD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/power/terminal{ - dir = 8 +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 4 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"uE" = ( +/obj/structure/closet/secure_closet, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seccells) +"uF" = ( +/obj/structure/table/bench/padded, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seccells) +"uG" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 10 }, -/obj/effect/floor_decal/corner/paleblue/border{ +/obj/effect/floor_decal/corner/red/border{ icon_state = "bordercolor"; - dir = 8 + dir = 10 }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical1) -"wG" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 4 +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/sechall) +"uH" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" }, -/obj/effect/floor_decal/corner/paleblue/border{ +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 6 + }, +/obj/effect/floor_decal/corner/red/border{ icon_state = "bordercolor"; - dir = 4 + dir = 6 }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medical1) -"wH" = ( +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/sechall) +"uI" = ( +/obj/machinery/door/airlock/security{ + req_one_access = newlist() + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby) +"uJ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 10 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby) +"uK" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby) +"uL" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 6 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby) +"uM" = ( /obj/structure/cable{ d1 = 1; d2 = 2; @@ -12676,12 +11627,12 @@ }, /turf/simulated/floor/tiled/white, /area/ship/expe/medical) -"wI" = ( +"uN" = ( /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/paleblue/border, /turf/simulated/floor/tiled/white, /area/ship/expe/medical) -"wJ" = ( +"uO" = ( /obj/structure/bed/chair{ dir = 1 }, @@ -12689,7 +11640,7 @@ /obj/effect/floor_decal/corner/paleblue/border, /turf/simulated/floor/tiled/white, /area/ship/expe/medical) -"wK" = ( +"uP" = ( /obj/machinery/power/apc{ dir = 2; name = "south bump"; @@ -12702,9 +11653,10 @@ }, /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/paleblue/border, +/obj/machinery/light, /turf/simulated/floor/tiled/white, /area/ship/expe/medical) -"wL" = ( +"uQ" = ( /obj/machinery/holoplant, /obj/effect/floor_decal/borderfloorwhite{ icon_state = "borderfloor_white"; @@ -12714,9 +11666,15 @@ icon_state = "bordercolor"; dir = 6 }, +/obj/machinery/vending/wallmed1{ + layer = 3.3; + name = "Emergency NanoMed"; + pixel_x = 28; + pixel_y = 0 + }, /turf/simulated/floor/tiled/white, /area/ship/expe/medical) -"wM" = ( +"uR" = ( /obj/machinery/computer/operating{ icon_state = "computer"; dir = 4 @@ -12731,7 +11689,7 @@ }, /turf/simulated/floor/tiled/white, /area/ship/expe/medicalsur) -"wN" = ( +"uS" = ( /obj/machinery/optable, /obj/machinery/oxygen_pump/anesthetic{ pixel_x = -1; @@ -12741,10 +11699,12 @@ /obj/effect/floor_decal/corner/paleblue/border, /turf/simulated/floor/tiled/white, /area/ship/expe/medicalsur) -"wO" = ( +"uT" = ( +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, /turf/simulated/wall/rpshull, -/area/ship/expe/southairlock) -"wP" = ( +/area/ship/expe/medicalsur) +"uU" = ( /obj/machinery/optable, /obj/machinery/oxygen_pump/anesthetic{ pixel_x = 1; @@ -12754,7 +11714,7 @@ /obj/effect/floor_decal/corner/paleblue/border, /turf/simulated/floor/tiled/white, /area/ship/expe/medicalsur) -"wQ" = ( +"uV" = ( /obj/machinery/computer/operating{ icon_state = "computer"; dir = 8 @@ -12769,7 +11729,7 @@ }, /turf/simulated/floor/tiled/white, /area/ship/expe/medicalsur) -"wR" = ( +"uW" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, @@ -12783,19 +11743,20 @@ }, /turf/simulated/floor/tiled/white, /area/ship/expe/medical1) -"wS" = ( +"uX" = ( /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/paleblue/border, +/obj/machinery/light, /turf/simulated/floor/tiled/white, /area/ship/expe/medical1) -"wT" = ( +"uY" = ( /obj/structure/bed, /obj/structure/curtain/medical, /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/paleblue/border, /turf/simulated/floor/tiled/white, /area/ship/expe/medical1) -"wU" = ( +"uZ" = ( /obj/structure/bed, /obj/structure/curtain/medical, /obj/effect/floor_decal/borderfloorwhite{ @@ -12808,180 +11769,1780 @@ }, /turf/simulated/floor/tiled/white, /area/ship/expe/medical1) -"wV" = ( -/obj/structure/table/reinforced, -/obj/machinery/power/apc{ - dir = 8; - name = "west bump"; - pixel_x = -24 +"va" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/machinery/power/terminal{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; dir = 8 }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"vb" = ( +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"vc" = ( +/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/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"vd" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + d1 = 1; + d2 = 4; + icon_state = "1-4" }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 9 +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor4) +"ve" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 9 +/obj/machinery/light, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"vf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" }, -/obj/item/weapon/storage/box/freezer, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalsur) -"wW" = ( -/obj/structure/table/reinforced, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 5 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 5 +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"vg" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/item/weapon/storage/box/freezer, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalsur) -"wX" = ( +/obj/effect/floor_decal/techfloor, /obj/machinery/firealarm{ - pixel_x = -31; + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"vh" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"vi" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"vj" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"vk" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"vl" = ( +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"vm" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"vn" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"vo" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"vp" = ( +/obj/machinery/light, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"vq" = ( +/obj/effect/floor_decal/techfloor, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor5) +"vr" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor6) +"vs" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor6) +"vt" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"vu" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"vv" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"vw" = ( +/obj/structure/table/woodentable, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"vx" = ( +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/captaindouble, +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/captqua) +"vy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"vz" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"vA" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"vB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"vC" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/corridor2) +"vD" = ( +/obj/structure/sign/poster/nanotrasen, +/turf/simulated/wall/rpshull, +/area/ship/expe/corridor2) +"vE" = ( +/obj/machinery/status_display, +/turf/simulated/wall/rpshull, +/area/ship/expe/corridor2) +"vF" = ( +/obj/structure/sign/securearea, +/turf/simulated/wall/rpshull, +/area/ship/expe/corridor2) +"vG" = ( +/obj/machinery/door/airlock/glass_security{ + req_one_access = newlist() + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"vH" = ( +/obj/machinery/door/airlock/glass_security{ + req_one_access = newlist() + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"vI" = ( +/obj/structure/sign/department/medbay, +/turf/simulated/wall/rpshull, +/area/ship/expe/corridor2) +"vJ" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + icon_state = "door_closed"; + dir = 8 + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/ship/expe/corridor2) +"vK" = ( +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/white, +/area/ship/expe/corridor2) +"vL" = ( +/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/techfloor{ + icon_state = "techfloor_edges"; + dir = 8 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; pixel_y = 0 }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"vM" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/southairlock) +"vN" = ( +/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/corner/paleblue/border{ +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/southairlock) +"vO" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/southairlock) +"vP" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/maintenance2) +"vQ" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/maintenance2) +"vR" = ( +/obj/machinery/status_display, +/turf/simulated/wall/rpshull, +/area/ship/expe/maintenance2) +"vS" = ( +/obj/structure/sign/poster/nanotrasen, +/turf/simulated/wall/rpshull, +/area/ship/expe/maintenance2) +"vT" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor, +/area/ship/expe/captqua) +"vU" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/simulated/floor/plating/external, +/area/shuttle/vespaboat) +"vV" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"vW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 9 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"vX" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"vY" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ icon_state = "bordercolor"; + dir = 4 + }, +/obj/structure/table/rack/shelf, +/obj/item/device/gps/explorer, +/obj/item/device/gps/explorer, +/obj/item/device/gps/explorer, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"vZ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; dir = 8 }, -/obj/structure/table/reinforced, -/obj/item/weapon/storage/firstaid/surgery, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalsur) +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"wa" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"wb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/effect/floor_decal/techfloor, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"wc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/corner_techfloor_grid/full{ + icon_state = "corner_techfloor_grid_full"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"we" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 1 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wj" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 1 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/corner_techfloor_grid/full{ + icon_state = "corner_techfloor_grid_full"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 9 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 9 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wp" = ( +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/southairlock) +"wq" = ( +/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/ship/expe/southairlock) +"wr" = ( +/obj/structure/closet/walllocker/emerglocker/east, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/southairlock) +"ws" = ( +/turf/simulated/floor, +/area/ship/expe/maintenance2) +"wt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 6 + }, +/turf/simulated/floor, +/area/ship/expe/maintenance2) +"wu" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/turf/simulated/floor, +/area/ship/expe/maintenance2) +"wv" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/turf/simulated/floor, +/area/ship/expe/maintenance2) +"ww" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/turf/simulated/floor, +/area/ship/expe/maintenance2) +"wx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 10 + }, +/turf/simulated/floor, +/area/ship/expe/maintenance2) +"wy" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/ship/expe/maintenance2) +"wz" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor, +/area/ship/expe/maintenance2) +"wA" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"wB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"wC" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 10 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 10 + }, +/obj/structure/table/steel_reinforced, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"wD" = ( +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/purple/border, +/obj/structure/table/steel_reinforced, +/obj/item/weapon/pen, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"wE" = ( +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/purple/border, +/obj/structure/table/steel_reinforced, +/obj/item/weapon/folder/red, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"wF" = ( +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/purple/border, +/obj/structure/table/steel_reinforced, +/obj/machinery/photocopier/faxmachine, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"wG" = ( +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/purple/border, +/obj/machinery/photocopier, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"wH" = ( +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/purple/border, +/obj/structure/closet/crate, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"wI" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/purple/border, +/obj/machinery/mineral/equipment_vendor/survey, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"wJ" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 6 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/obj/structure/table/rack/shelf, +/obj/item/device/gps/explorer, +/obj/item/device/gps/explorer, +/obj/item/device/gps/explorer, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"wK" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 10 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"wL" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 6 + }, +/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/techfloor, +/area/ship/expe/corridor1) +"wM" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/effect/floor_decal/techfloor, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"wN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/corner_techfloor_grid/full, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wO" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wP" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor, +/obj/structure/closet/walllocker/emerglocker/south, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wQ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wR" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor, +/obj/machinery/firealarm{ + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wT" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wV" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wW" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"wX" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor, +/obj/structure/closet/walllocker/emerglocker/south, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) "wY" = ( -/obj/structure/table/reinforced, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/corner_techfloor_grid/full{ + icon_state = "corner_techfloor_grid_full"; dir = 4 }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/item/weapon/storage/firstaid/surgery, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalsur) +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) "wZ" = ( -/obj/structure/table/reinforced, -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/paleblue/border, -/obj/item/weapon/storage/box/gloves, -/obj/item/weapon/storage/box/masks, -/obj/item/weapon/reagent_containers/spray/cleaner, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) "xa" = ( -/obj/structure/table/reinforced, -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/paleblue/border, -/obj/item/weapon/storage/quickdraw/syringe_case, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) "xb" = ( -/obj/structure/table/reinforced, -/obj/item/weapon/reagent_containers/spray/sterilizine, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalsur) +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/southairlock) "xc" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/machinery/access_button/airlock_interior{ + pixel_x = 24; + pixel_y = -1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/southairlock) +"xd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue, +/turf/simulated/wall/rpshull, +/area/ship/expe/maintenance2) +"xe" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/closet/firecloset/full, +/turf/simulated/floor, +/area/ship/expe/maintenance2) +"xf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue, +/turf/simulated/floor, +/area/ship/expe/maintenance2) +"xg" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor, +/area/ship/expe/maintenance2) +"xh" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/maintenance2) +"xi" = ( +/obj/structure/closet/firecloset/full, +/turf/simulated/floor, +/area/ship/expe/maintenance2) +"xj" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor, +/area/ship/expe/maintenance2) +"xk" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor, +/area/ship/expe/hangar) +"xl" = ( +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/maintenancerim) +"xm" = ( +/obj/machinery/door/airlock/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/maintenancerim) +"xn" = ( +/obj/structure/sign/poster/nanotrasen, +/turf/simulated/wall/rpshull, +/area/ship/expe/maintenancerim) +"xo" = ( +/obj/machinery/status_display, +/turf/simulated/wall/rpshull, +/area/ship/expe/maintenancerim) +"xp" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/maintenancerim) +"xq" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/southairlock) +"xr" = ( +/obj/effect/floor_decal/sign/dock/two, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/southairlock) +"xs" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1459; + id_tag = "southint" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/southairlock) +"xt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 6 + }, +/obj/machinery/air_sensor{ + frequency = 1459; + id_tag = "southsensor" + }, +/obj/machinery/airlock_sensor{ + frequency = 1459; + id_tag = "southsensor"; + pixel_x = 0; + pixel_y = 21 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/southairlock) +"xu" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/blue{ + icon_state = "map"; + dir = 4 + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1459; + id_tag = "southairlock"; + pixel_x = 0; + pixel_y = 21; + tag_airpump = "southvent"; + tag_chamber_sensor = "southsensor"; + tag_exterior_door = "southext"; + tag_interior_door = "southint" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/southairlock) +"xv" = ( +/obj/machinery/atmospherics/portables_connector{ + icon_state = "map_connector"; + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor, +/area/ship/expe/maintenance2) +"xw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 8 + }, +/turf/simulated/floor, +/area/ship/expe/maintenance2) +"xx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/blue{ + icon_state = "intact"; + dir = 9 + }, +/turf/simulated/floor, +/area/ship/expe/maintenance2) +"xy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/green{ + icon_state = "intact"; + dir = 5 + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"xz" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/green{ + icon_state = "map"; + dir = 1 + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"xA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/green{ + icon_state = "intact"; + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"xB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/green{ + icon_state = "intact"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"xC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/green{ + icon_state = "intact"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/closet/firecloset/full, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"xD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/green{ + icon_state = "intact"; + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"xE" = ( +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 + }, +/obj/structure/closet/firecloset/full, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"xF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/maintenancerim) +"xG" = ( +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"xH" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -32 + }, +/obj/machinery/power/terminal, +/obj/structure/cable, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/southairlock) +"xI" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -25 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/southairlock) +"xJ" = ( +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 1; + external_pressure_bound = 140; + external_pressure_bound_default = 140; + frequency = 1459; + icon_state = "map_vent_out"; + id_tag = "southvent"; + pressure_checks = 0; + pressure_checks_default = 0; + use_power = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/southairlock) +"xK" = ( +/obj/item/weapon/handcuffs/fuzzy, +/turf/simulated/floor, +/area/ship/expe/maintenance2) +"xL" = ( +/obj/machinery/light/small, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"xM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/green, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"xN" = ( +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/maintenancerim) +"xO" = ( +/obj/machinery/atmospherics/pipe/cap/visible/scrubbers{ + icon_state = "cap-scrubbers"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/cap/visible/supply{ + icon_state = "cap-supply"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/maintenancerim) +"xP" = ( +/obj/structure/fans/tiny, +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external{ + frequency = 1459; + id_tag = "southext" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/southairlock) +"xQ" = ( +/obj/machinery/door/airlock/external{ + frequency = 1459; + id_tag = "southext" + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/southairlock) +"xR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/green{ + icon_state = "intact"; + dir = 9 + }, +/obj/machinery/meter, +/turf/simulated/floor, +/area/ship/expe/engines) +"xS" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/green, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor, +/area/ship/expe/engines) +"xT" = ( +/obj/structure/sign/poster, +/turf/simulated/wall/rpshull, +/area/ship/expe/maintenancerim) +"xU" = ( +/obj/structure/sign/department/dock, +/turf/simulated/wall/rpshull, +/area/ship/expe/southairlock) +"xV" = ( +/obj/machinery/access_button/airlock_exterior{ + pixel_x = -1; + pixel_y = 25 + }, +/turf/space, +/area/space) +"xW" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/simulated/floor, +/area/ship/expe/engines) +"xX" = ( +/obj/machinery/atmospherics/pipe/tank/phoron, +/turf/simulated/floor, +/area/ship/expe/engines) +"xY" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/simulated/floor, +/area/ship/expe/engines) +"xZ" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/turf/simulated/floor, +/area/ship/expe/engines) +"ya" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/green, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor, +/area/ship/expe/engines) +"yb" = ( +/turf/simulated/floor, +/area/ship/expe/engines) +"yc" = ( +/obj/machinery/atmospherics/binary/pump, +/turf/simulated/floor, +/area/ship/expe/engines) +"yd" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor, +/area/ship/expe/engines) +"ye" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/ship/expe/engines) +"yf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/green, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor, +/area/ship/expe/engines) +"yg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/green, +/obj/machinery/meter, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor, +/area/ship/expe/engines) +"yh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/green, +/obj/machinery/meter, +/turf/simulated/floor, +/area/ship/expe/engines) +"yi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/green, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor, +/area/ship/expe/engines) +"yj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/green{ + icon_state = "intact"; + dir = 5 + }, +/turf/simulated/floor, +/area/ship/expe/engines) +"yk" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/green, +/turf/simulated/floor, +/area/ship/expe/engines) +"yl" = ( +/obj/machinery/atmospherics/valve{ + icon_state = "map_valve0"; + dir = 4 + }, +/turf/simulated/floor, +/area/ship/expe/engines) +"ym" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/green{ + icon_state = "map"; + dir = 1 + }, +/turf/simulated/floor, +/area/ship/expe/engines) +"yn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/green{ + icon_state = "intact"; + dir = 9 + }, +/turf/simulated/floor, +/area/ship/expe/engines) +"yo" = ( +/obj/machinery/atmospherics/pipe/cap/visible{ + icon_state = "cap"; + dir = 1 + }, +/turf/simulated/floor, +/area/ship/expe/engines) +"yp" = ( /obj/machinery/atmospherics/portables_connector{ icon_state = "map_connector"; dir = 1 }, /turf/simulated/floor, /area/ship/expe/engines) -"xd" = ( +"yq" = ( /obj/machinery/atmospherics/portables_connector{ icon_state = "map_connector"; dir = 4 }, /turf/simulated/floor, /area/ship/expe/engines) -"xe" = ( +"yr" = ( /obj/item/inflatable/torn, /turf/simulated/floor, /area/ship/expe/engines) -"xf" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 5 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 5 - }, -/obj/machinery/atmospherics/unary/cryo_cell, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"xg" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 5 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"xh" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/blue, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"xi" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"xj" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 4 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 9 - }, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"xk" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/obj/structure/table/reinforced, -/obj/item/weapon/tool/wrench, -/turf/simulated/floor/tiled/white, -/area/ship/expe/medicalmain) -"xl" = ( +"ys" = ( /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/maintenance1) -"xm" = ( -/turf/simulated/floor, +/area/ship/expe/engines) +"yt" = ( +/obj/item/inflatable/torn, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engines) +"yu" = ( +/obj/effect/overmap/visitable/ship/vespa{ + fore_dir = 4 + }, +/turf/space, /area/space) -"xn" = ( +"yv" = ( +/obj/effect/shuttle_landmark{ + base_area = /area/space; + base_turf = /turf/space; + landmark_tag = "HPV_starboard"; + name = "starboard of Vespa" + }, +/turf/space, +/area/space) +"yw" = ( +/obj/effect/shuttle_landmark/automatic{ + landmark_tag = "vespaS"; + name = "starboard of Vespa" + }, +/turf/space, +/area/space) +"yH" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 26; + pixel_z = 1; + pixel_w = 0 + }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/maintenance2) +/area/ship/expe/corridor4) +"yI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 26; + pixel_z = 1; + pixel_w = 0 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor3) +"yJ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 26; + pixel_z = 1; + pixel_w = 0 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor3) +"yK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 26; + pixel_z = 1; + pixel_w = 0 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"yL" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 26; + pixel_z = 1; + pixel_w = 0 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/expedition) +"yM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 26; + pixel_z = 1; + pixel_w = 0 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"yN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 1 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 26; + pixel_z = 1; + pixel_w = 0 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor2) +"yO" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/vespaboat) +"yP" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/table/steel_reinforced, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/bridge) +"yQ" = ( +/obj/structure/closet/secure_closet, +/obj/item/weapon/handcuffs, +/obj/item/weapon/handcuffs, +/obj/item/weapon/storage/backpack/satchel/sec, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/item/clothing/under/hephaestus, +/obj/item/clothing/suit/armor/vest, +/obj/item/clothing/shoes/boots/duty, +/obj/item/clothing/head/beret, +/obj/item/clothing/gloves/black, +/obj/item/clothing/glasses/sunglasses/aviator, +/obj/item/clothing/accessory/permit/gun, +/obj/item/clothing/accessory/storage/black_drop_pouches, +/obj/item/clothing/accessory/storage/black_vest, +/obj/item/clothing/accessory/badge/corporate_tag/hephaestus, +/obj/item/device/flashlight/maglight, +/obj/item/device/radio, +/obj/item/weapon/melee/baton, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/secmain) +"yR" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/red/border, +/obj/item/weapon/folder, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby2) +"yS" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/southright, +/obj/machinery/door/window/northright, +/obj/effect/floor_decal/borderfloorblack/full, +/obj/effect/floor_decal/corner/red/borderfull, +/obj/item/weapon/deskbell, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/seclobby) (1,1,1) = {" aa @@ -14176,35 +14737,35 @@ aa aa aa aa -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS aa aa aa @@ -14318,35 +14879,35 @@ aa aa aa aa -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al -al +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS aa aa aa @@ -14460,35 +15021,35 @@ aa aa aa aa -al -al -cc -bN -bN -bN -bN -bN -bN -bN -bN -bN -bN -bN -bN -bN -bN -bN -bN -bN -bN -bN -bN -bN -bN -bN -cc -ah -al +aS +aS +bg +bh +bi +bi +bi +eW +bi +bi +bi +bi +bi +bi +bi +bi +bi +bi +bi +eW +bi +bi +bi +bi +bi +bh +bg +aS +aS aa aa aa @@ -14602,35 +15163,35 @@ aa aa aa aa -al -al -cr -du -du -du -du -du -du -du -du -du -du -du -du -du -du -du -du -du -du -du -du -du -du -du -hq -ah -al +aS +aS +bu +bU +bU +bU +bU +bU +bU +bU +bU +bU +bU +bU +bU +bU +bU +bU +bU +bU +bU +bU +bU +bU +bU +bU +xy +aS +aS aa aa aa @@ -14744,35 +15305,35 @@ aa aa aa aa -al -al -cx -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cx -ah -al +aS +aS +bv +bV +bV +bV +bV +bV +bV +bV +bV +bV +bV +bV +bV +bV +bV +bV +bV +bV +bV +bV +bV +bV +bV +bV +bw +aS +aS aa aa aa @@ -14886,35 +15447,35 @@ aa aa aa aa -al -al -cx -ap -hu -hu -hu -hu -fp -hu -hu -hu -hu -hu -hu -hu -hu -hu -hu -hu -hu -fp -hu -hu -hu -ap -cx -ah -al +aS +aS +bv +bV +cs +cs +cs +cs +fO +cs +cs +cs +cs +cs +cs +cs +cs +cs +cs +cs +cs +fO +cs +cs +cs +bV +bv +aS +aS aa aa aa @@ -15028,35 +15589,35 @@ aa aa aa aa -al -al -cx -ap -hu -bx -ci -ci -ci -ci -ci -ci -ci -ci -ci -ci -ci -ci -ci -ci -pr -ql -hu -hu -hu -ap -cx -ah -al +aS +aS +bv +bV +cs +dm +cv +cv +cv +cv +cv +cv +cv +cv +cv +cv +cv +cv +cv +cv +tc +uo +cs +cs +cs +bV +bv +aS +aS aa aa aa @@ -15170,35 +15731,35 @@ aa aa aa aa -al -al -cx -ap -hu -hd -hh -hh -hh -hh -hh -hh -hh -lE -lE -lE -hh -hh -hh -hh -hh -hh -hh -hu -hu -ap -cx -ah -al +aS +aS +bv +bV +cs +dn +eg +eg +eg +eg +eg +eg +eg +eh +eh +eh +eg +eg +eg +eg +eg +eg +eg +cs +cs +bV +bv +aS +aS aa aa aa @@ -15312,35 +15873,35 @@ aa aa aa aa -al -al -cx -ap -hu -bB -lE -pv -qS -hh -oL -si -si -si -si -si -uC -uJ -uR -si +aS +aS +bv +bV +cs +do +eh +eX +fP +eg +hp +iw +iw +iw +iw +iw +oH +pB qP -vb -hh -hh -hu -ap -cx -ah -al +iw +td +up +eg +eg +cs +bV +bv +aS +aS aa aa aa @@ -15454,35 +16015,35 @@ aa aa aa aa -al -al -cx -ap -hu -bB -lE -qN -qT -re -sd -sj -sj -sj -sj -sj -sj -uK -uS -sj -uY -vs -hh -rl -hu -ap -cx -ah -al +aS +aS +bw +bV +cs +do +eh +eY +fQ +gK +hq +ix +ix +ix +ix +ix +ix +pC +qQ +ix +te +uq +eg +vU +cs +bV +bv +aS +aS aa aa aa @@ -15596,35 +16157,35 @@ aa aa aa aa -al -al -cx -ap -hu -bB -lE -pv -fr -hh -gu -hk -hk -iW -jP -kL -mh -mL -nQ -oJ -ps -vb -hh -rl -hu -ap -cx -ah -al +aS +aS +bv +bV +cs +do +eh +eX +fR +eg +hr +iy +iy +li +me +no +oI +pD +qR +sb +tf +up +eg +vU +cs +bV +bv +aS +aS aa aa aa @@ -15739,33 +16300,33 @@ aa aa aa aa -ah -cx -ap -hu -bB -lE +aS +bv +bV +cs +do +eh +eZ +fS +eg +hs +eg +eg +eg +eg +np +eg +gL eg -fs -hh -hh -hh -hh -iX -hh -kN -hh -hh -hh sc -pt -vs -hh -rm -hu -ap -cx -ah +tg +uq +eg +eg +cs +bV +bv +aS aa aa aa @@ -15796,7 +16357,7 @@ aa aa aa aa -ts +yu aa aa aa @@ -15875,45 +16436,45 @@ aa aa aa aa -ah -ah -cj -cj -cj -cj -ah -cx -ap -cg -bB -hh -hh -hh -hh -jm -hl -sf -iZ -hh -kO -mi -mN -hh -oM -py -vs -hh -rm -rL -ap -cx -ah -cj -cj -cj -cj -ah -ah +ax +ax +aG +aG +aG +aG +aS +bv +bV +ct +do +eg +eg +eg +eg +ht +iz +hu +fP +eg +nq +oJ +pE +eg +sd +th +uq +eg +eg +wA +bV +bv +aS +aG +aG +aG +aG +ax +ax aa aa aa @@ -16017,45 +16578,45 @@ aa aa aa aa -ah -ah -bb -bh -bh -ca -ah -cx -ap +ax +ax +aH +aM +aM +aZ +aS +bv +bV +cs +do +eg +fa +fT +gL hu -bB -hh +iA +jT +fP +eg +nr +oK +pF +eg eh -ft -hh -qS -hm -uj -ja -hh -tR -mj -mP -hh -lE -pz -hh -hh -rm -hu -ap -cx -ah -bb -bh -bh -ca -ah -ah +ti +eg +eg +eg +cs +bV +bv +aS +aH +aM +aM +aZ +ax +ax aa aa aa @@ -16157,49 +16718,49 @@ aa aa aa aa -ab -ab -ah -ah +af +af +ax +ax +aI +aN +aT +aN bf -tv -bp -tv -ck -dt -ap -hu -bB -hh -ep -fv -fZ -sf -hn -ii -ja -hh -kT -mk -mQ -hh -oO -pD -qm -hh -rl -hu -ap -ob -ck -wo -vJ -tl -tl -ah -ah -ah -ah +bx +bV +cs +do +eg +fb +fU +gM +hv +iB +jU +fP +eg +ns +oL +pG +eg +se +tj +ur +eg +vU +cs +bV +xz +bf +xR +xW +yb +yb +ax +ax +ax +ax aa aa aa @@ -16297,53 +16858,53 @@ aa aa aa aa -ab -ab -ab -ab -ab -ab -ah -ah -ah -ah -ah -bN -ap +af +af +af +af +af +af +af +af +af +af +aS +bi +bV +cs +do +eg +tD +fV +eg +hw +iC hu -bB -hh -pv -fr -hh -gv -ho -qS -ja -hh -kZ -ml -mR -hh -oP -pG -qn -hh -rl -hu -ap -cx -ah -ah -ah -ah -ah -ah -ah -ah -ah -ah -ah +fP +eg +nt +oM +pH +eg +sf +tk +us +eg +vU +cs +bV +bv +aS +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax aa aa aa @@ -16437,57 +16998,57 @@ aa aa aa aa -ab -ab -ab -ab -ab -aN -aP -aX -bc -bi -br -ab +af +af +af +af +af +av +ay aC -bN -ap -hu -bB -hh +aJ +aO +aU +af +bg +bi +bV +cs +do eg -fw -hh -gx -ho -qS -jb -hh -la -mm -mS -hh -oR -pH -qo -hh -hh +yO +fW +eg +hx +iC hu -ap -cx -bN -ah -sT -sX -tj -tN +lj +eg +nu +oN +pI +eg +sg tl -xc -ah -ah -ah -ah -ah +ut +eg +eg +cs +bV +bv +bi +ax +xX +yc +yg +yj +yb +yp +ax +ax +ax +ax +ax aa aa aa @@ -16577,61 +17138,61 @@ aa aa aa aa -ab -ab -ab -ab -ab +af +af +af +af +af +ap +ar +av +aw aD -aF -aN -aO -aY -aU -bk -aE -ab -aE -bN -ap -ch -bB -hh -lE -lE -hh -hh -lE -lE -hh -hh -hh -lE -hh -hh -lE -pI -qr -hh -rn -hu -ap -cx -bN -ah -sT -sX -tk -vG -tl -xc -xd -xd -ah -ah -ah -ah -ah +aA +aP +aq +af +bh +bi +bV +cu +do +eg +eh +eh +eg +eg +eh +eh +eg +eg +eg +eh +eg +eg +eh +tm +uu +eg +vV +cs +bV +bv +bi +ax +xX +yc +yh +yk +yb +yp +yq +yq +ax +ax +ax +ax +ax aa aa aa @@ -16716,67 +17277,67 @@ aa aa aa aa -ab -ab -ab -ab -ab -ab -az -aB +af +af +af +af +af +af +an +ao +aq +aq +aq +as aE -aE -aE -aH -aZ -bd -bk -aE -ab -aE -cf -cb -ci -cG -ci -ci -fx -ci -ci -ci -fx -ci -jV -ld -mn -mT -nS -mn +aK +aP +aq +af +bi +by +bW +cv +dp +cv +cv +fX +cv +cv +cv +fX +cv +mf +nv +oO pJ -mn -mn -ro -rM -sn -oc -bN -ah -sT -sX -tk -vG -tl -tl -tl -tl -tl -tl -ah -ah -ah -ah -ah -ah +qS +oO +tn +oO +oO +vW +wB +xk +xA +xL +ax +xX +yc +yh +yk +yb +yb +yb +yb +yb +yb +ax +ax +ax +ax +ax +ax aa aa aa @@ -16858,67 +17419,67 @@ aa aa aa aa -ab -ab -ab -ab -ay -ay -ay -ay +af +af +af +af +am +am +am +am +aq +aq +aq +az aE -aE -aE -aS -aZ -bd -bk -aE -ab -aE -cC +aK +aP aq -aq -aq -aq -aq -aq -hA -hA -hA -aq -aq -ip -kx -qF -qF -qF -qF -qF -qF -qF -qF -qF -qF -od -bN -ah -sU -sY -tl -wj -tl -tl -tl -tl -tl -xe -hi -hi -ah -ah -ah -ah +af +bi +bz +bX +bX +bX +bX +bX +bX +ei +bX +bX +bX +bX +mg +nw +oP +oP +oP +oP +oP +uv +oP +oP +oP +oP +xB +bi +ax +xY +yd +yb +yl +yb +yb +yb +yb +yb +yr +ys +ys +ax +ax +ax +ax aa aa aa @@ -17000,67 +17561,67 @@ aa aa aa aa -ab -ab -ac -ac -au -au -au -au -aE -aH -aO -aU -aE -aW -bl -bs -ab -aE -cC +af +af +aj +aj +al +al +al +al aq -cH -cH -cH -eq -fz -bq -bq -bq -ij +as +aw +aA aq -eX -fn -qF -uf -rh -nA -nA -nA -nA -rh -tW -qF -od -bN -ah -sV -th -tl -wk -wp -tl -tl -tl -tl -tl -sZ -hi -hi -hi -ah -ah +aB +aQ +aV +af +bi +bz +bX +cw +dq +bX +cw +fY +bX +qf +cw +jV +bX +mh +nx +oP +pK +qT +sh +sh +sh +sh +qT +wC +oP +xC +bi +ax +xZ +ye +yb +ym +yo +yb +yb +yb +yb +yb +yt +ys +ys +ys +ax +ax aa aa aa @@ -17142,67 +17703,67 @@ aa aa aa aa -ab -ab -ae -au -au -au -au -au -aE -aJ -aE +af +af +ak +al +al +al +al +al +aq +at +aq +aB +aF +aL +aR aW ba -bg -bn -bz -bC -bF -cM -aq -bq -bq -bq -er -bq -bq -bq -bq -ik -aq -eZ -fo -qF -mU -hL -oS -pK -qu -hL -hL -rN -qF -qp -vI -sD -sW -ti -tv -wo -tl -tl -tl -tl -tl -tl -sZ -hi -hi -hi -ah -ah +bj +bA +bX +cw +dq +bX +cw +fZ +bX +hz +cw +jW +bX +mi +ny +oP +pL +qU +si +to +uw +qU +qU +wD +oP +xD +xM +xS +ya +yf +yi +yn +yb +yb +yb +yb +yb +yb +yt +ys +ys +ys +ax +ax aa aa aa @@ -17284,67 +17845,67 @@ aa aa aa aa -aM -ad -ad -ad -ad -ad -ad -ad -ad +ag +ai +ai +ai +ai +ai +ai +ai +ai +au af -ab -ab -ab -ab -ab -ab -ab -bH -ao -aq -cl -cJ -dg -dg -dg -ga -dg -dg -in -aq -fb -fu -qF -hw -nT -oV -pL -qv -rb -rr -rO -qF -al -cW -ah -ah -ah -ah -ah -ah -ah -ah -ah -ah -ah -ah -ah -ah -ah -ah -ah +af +af +af +af +af +af +aS +bK +bX +cx +dr +ei +fc +dr +bX +hy +cw +jX +bY +mj +nz +oP +yL +qV +sj +tp +ux +vy +vX +wE +oP +aS +bk +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax aa aa aa @@ -17426,67 +17987,67 @@ aa aa aa aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -al -al -bN -cU -aq -cm -cK -dh -es -fA -gb -es -es -wa -aq -fd -hI -qF -mW -hL -oX -pM -qw -rc -hL -rP -qF -bN -bN -al -al -ah -ah -ah -ah -ah -ah -ah -ah -ah -ah -ah -ah -ah -ah -ah +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +aS +aS +bg +bE +bX +cy +ds +ej +cw +ga +gN +cw +cw +jY +lk +mk +nA +oP +pN +qU +sk +tq +uy +vz +qU +wF +oP +bC +bi +aS +aS +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax aa aa aa @@ -17568,8 +18129,8 @@ aa aa aa aa -ab -ab +ah +ah aa aa aa @@ -17583,37 +18144,38 @@ aa aa aa aa -al -al -bN -dd -aq -cu -bq -bq -et -fC -gc -gy -hp -hp -jc -jX -le -qF -mX -nU -oY +aS +aS +bh +bE +bY +cw +dt +ek +fd +gb +gO +hA +hA +jZ +ll +ml +nB +oP pO -qx -rc -hL -rQ -qF -bN -bN -al -al +qW +sl +tr +uz +vz +qU +wG +oP +bC +bi +aS +aS +aa aa aa aa @@ -17626,7 +18188,6 @@ aa aa aa aa -ty ah ah aa @@ -17710,8 +18271,8 @@ aa aa aa aa -ab -ab +ah +ah aa aa aa @@ -17725,37 +18286,38 @@ aa aa aa aa -al -al -bN -dd -ar -ar -ar -ar -ar -ar -ar -ar -ar -ar -ar -fd -hI -qF -mY -ls -oZ -pQ -qy -rc -hL -rR -qF -bN -bN -al -al +aS +aS +bl +bE +bX +cz +dr +bX +fe +bX +gP +dr +ei +ka +lk +mk +nA +oP +pP +qX +sm +ts +uA +vz +qU +wH +oP +bC +xL +aS +aS +aa aa aa aa @@ -17768,7 +18330,6 @@ aa aa aa aa -ty ah ah aa @@ -17852,6 +18413,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -17865,41 +18428,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -ar -co -cL -dm -dm -fD -ge -gz -hr -ir -ar -fd -hI -qF -na -hL -pa -pR -qz -nT -nT -rS -qF -bN -bN -al -al -aa -aa +aS +aS +bi +bE +bX +cw +du +bX +pM +bX +cw +hB +bX +kb +bX +yK +nA +oP +pQ +qU +sn +tt +uB +qV +qV +wI +oP +xE +bi +aS +aS aa aa aa @@ -17913,6 +18472,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -17994,6 +18555,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -18007,41 +18570,37 @@ aa aa aa aa -aa -aa -al -al +aS +aS +bm +bF bX -dd -ar -cp -cN -do -eu -fE -gf -fT -dp -iu -ar -fd -hI -qF -nc -nV -pa -pS -pS -pS -rs -rT -qF -bN -bN -al -al -aa -aa +cw +du +bX +ff +bX +cw +hC +bX +kc +bX +mk +nA +oP +pR +qY +so +tu +tu +vA +vY +wJ +oP +bh +bi +aS +aS aa aa aa @@ -18055,6 +18614,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -18136,6 +18697,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -18148,43 +18711,39 @@ aa aa aa aa -aa -aa -aa -al -al +aS +aS +aS +aS +bG bZ -eP -ar -cq -cN -ef -eC -fF -gf -ef -hs -iv -ar -tC -hI -qF -qF -qF -tA -qF -qF -qF -qF -qF -qF -bN -bN -al -al -aa -aa -aa +bZ +dv +el +bZ +bZ +bZ +bZ +dv +bZ +bZ +mm +nA +oP +oP +oP +sp +bB +oP +oP +oP +oP +oP +aS +bk +aS +aS +aS aa aa aa @@ -18197,6 +18756,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -18278,6 +18839,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -18290,43 +18853,39 @@ aa aa aa aa -aa -aa -aa -al -al -bN -dd -ar -cs -cN -dp -eE -fG -gf -gA -ef -ix -ar -kd -lf -mp -nd -nW -pd -pT -qA -qA -rt -wi -al -bN -bN -al -al -aa -aa -aa +aS +aS +bb +bn +bH +ca +cA +cA +cA +fg +cA +gQ +cA +cA +cA +lm +mk +nC +oQ +pS +qZ +sq +tv +uC +uC +vZ +wK +xl +bn +xN +bb +aS +aS aa aa aa @@ -18339,6 +18898,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -18420,6 +18981,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -18432,43 +18995,39 @@ aa aa aa aa -aa -aa -aa -al -al -bN -dd -ar -ct -cO -dr -eL -fH -gg -gB -gB -iy -jd -kf -lg -mr -ng -nX -pe -pW -qB -rd -ru -rV -al -bN -bN -al -al -aa -aa -aa +aS +aS +bb +bo +bI +cb +cB +dw +cB +fh +gc +gR +hD +iD +iD +ln +mn +nD +oR +pT +ra +sr +tw +uD +vB +wa +wL +xm +xF +xO +bb +aS +aS aa aa aa @@ -18481,6 +19040,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -18562,6 +19123,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -18574,43 +19137,39 @@ aa aa aa aa -aa -aa -aa -al -al -bN -dd -as -as -as -as -as -fI -ar -ar -ar -ar -ar -im -im -im -kQ -im -sm -sm -im -im -qc -qR -al -bN -bN -al -al -aa -aa -aa +aS +aS +aS +aS +bG +cc +cc +cc +cc +cc +gd +gS +hE +hE +hE +hE +hE +hE +oS +oS +oS +oS +oS +oS +bZ +wb +wM +aS +aS +bk +aS +aS +aS aa aa aa @@ -18623,6 +19182,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -18704,6 +19265,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -18717,41 +19280,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -as -dR -cP +aS +aS +bi +bE +cc +cC dx -as -eI -fq -gl -ht -ht -ht -kg -ht -ht -ot -kU -qH -vF -qH -oA -qd -qg -al -bN -bN -al -al -aa -aa +em +cc +ge +gT +hE +iE +kd +lo +mo +nE +oS +pU +rb +ss +tx +uE +vC +wc +wN +aS +bh +bi +aS +aS aa aa aa @@ -18765,6 +19324,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -18846,6 +19407,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -18859,41 +19422,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -as -cv -cQ -dz -bv -cY -eS -dv -gd -gd -gd -gd -gd -gd -nh -sm -uP -wm -vq -sm -gw -qC -al -bN -bN -al -al -aa -aa +aS +aS +bi +bE +cc +cD +dy +en +fi +gf +gU +hE +iF +ke +ke +ke +ac +oS +pV +rc +ss +tx +uF +vD +wd +wO +aS +bi +bi +aS +aS aa aa aa @@ -18907,6 +19466,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -18988,6 +19549,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -19001,41 +19564,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -as -cw -dE -dA -as -eD -lh -dv -hv -hv -je -kh -li -gd -oQ -sm -uQ -wn -vq -sm -gw -um -al -bN -bN -al -al -aa -aa +aS +aS +bi +bE +cc +cE +dz +eo +cc +yI +gV +hE +iG +kf +kf +mp +nG +oT +pW +rd +ss +tx +uF +vC +wd +wP +aS +bi +bi +aS +aS aa aa aa @@ -19049,6 +19608,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -19130,6 +19691,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -19143,41 +19706,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -as -as -as -as -as -fU -hH -dv -hv -hv -je -kk -lj -gd -oQ -sm -vq -vq -vq -sm -qe -qD -al -bN -bN -al -al -aa -aa +aS +aS +bi +bE +cc +cc +cc +cc +cc +gh +gW +hE +iH +ke +lp +mq +nH +oU +pX +re +ss +tx +uF +vC +we +wQ +aS +bi +bi +aS +aS aa aa aa @@ -19191,6 +19750,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -19272,6 +19833,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -19285,41 +19848,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -at -cy -cR -dB -at -eD -lh -dv -hx -hx -jf -kk -ll -gd -oQ -sm -vq -vq -vq -sm -vW -pw -al -bN -bN -al -al -aa -aa +aS +aS +bi +bE +cd +cF +dA +ep +cd +gg +gV +hE +iI +kg +lq +mr +nI +oS +bD +rf +st +tx +tx +vC +wf +wR +xn +bi +bi +aS +aS aa aa aa @@ -19333,6 +19892,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -19414,6 +19975,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -19427,41 +19990,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -at -cz -cS -dC -dH -eG -lh -dv -hy -hv -hv -kk -lm -sm -nj -sm -vq -vq -vq -sm -gw -tE -al -bN -bN -al -al -aa -aa +aS +aS +bi +bE +cd +cG +dB +eq +fj +gi +gV +hF +hF +hF +lr +ms +hF +oS +oS +rg +oU +ty +oS +vC +yM +wS +aS +bi +bi +aS +aS aa aa aa @@ -19475,6 +20034,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -19556,6 +20117,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -19569,41 +20132,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -at -cB -cT -dD -at -eH -lA -dv -hz -iC -jg -kk -ln -sm -np -sm -vq -vq -vq -sm -nK -on -al -bN -bN -al -al -aa -aa +aS +aS +bi +bE +cd +cH +dC +er +cd +gj +gX +hF +iJ +kh +ls +mt +nJ +oV +pZ +rh +rh +tz +uG +vD +wd +wT +aS +bi +bi +aS +aS aa aa aa @@ -19617,6 +20176,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -19698,6 +20259,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -19711,41 +20274,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -at -at -at -at -at -eQ -nJ -dv -hB -iD -jh -kl -lo -ms -nq -sm -vq -vq -vq -sm -gw -on -al -bN -bN -al -al -aa -aa +aS +aS +bi +bE +cd +cd +cd +cd +cd +gk +gY +hF +iK +ki +ki +mu +nK +oW +nF +oW +oW +oW +uH +vC +wd +wT +xo +bi +bi +aS +aS aa aa aa @@ -19759,6 +20318,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -19840,6 +20401,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -19853,41 +20416,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aA -dI -lU -di -aA -eD -lh -dv -gd -gd -gd -gd -gd -gd -nr -sm -vq -vq -vq -sm -tG -on -al -bN -bN -al -al -aa -aa +aS +aS +bi +bE +ce +cI +dD +es +ce +gg +gV +hF +iL +kj +kk +mv +nL +nL +nL +ri +ri +tA +uI +vC +wg +wT +aS +bi +bi +aS +aS aa aa aa @@ -19901,6 +20460,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -19982,6 +20543,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -19995,41 +20558,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aA -dG -ei -ev -eb -eG -lh -dv -hC -iE -ji -km -lp -mt -ns -sm -vq -vq -vq -sm -gw -on -al -bN -bN -al -al -aa -aa +aS +aS +bi +bE +ce +cJ +dE +et +fk +gi +gV +hG +qd +kj +kk +ab +nM +oX +qb +yS +su +tB +uJ +vE +wd +wT +aS +bi +bi +aS +aS aa aa aa @@ -20043,6 +20602,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -20124,6 +20685,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -20137,41 +20700,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aA -rv -dK -jx -aA -eD -lh -dv -gp -iF -gp -gp -lq -mu -nt -sm -vq -vq -vq -sm -gw -on -al -bN -bN -al -al -aa -aa +aS +aS +bi +bE +ce +cK +dF +eu +ce +gg +gV +hF +rj +kj +kk +mv +nL +oY +qc +rk +sv +tC +uK +vC +wh +wT +aS +xG +bi +aS +aS aa aa aa @@ -20185,6 +20744,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -20266,6 +20827,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -20279,55 +20842,52 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aA -aA -aA -aA -aA -eF -lh -dv +aS +aS +bi +bE +ce +ce +ce +ce +ce +gl +gV hF -iH -jj -gp -mB +iM +kk +kk mv -mB -sm -vq -vq -vq -sm -gw -on -al -bN -bN -al -al -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +nL +oZ +yR +rk +sv +tC +uK +vF +wd +wT +aS +bi +bi +aS +aS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ah +ah aa aa aa @@ -20353,6 +20913,7 @@ aa aa aa aa +yv aa aa aa @@ -20408,6 +20969,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -20421,41 +20984,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aI -dL -lV -dj -aI -eD -lh -dv -hG -iI -jk -gp -lr -mw -nw -sm -vq -vq -vq -sm -gw -on -al -bN -bN -al -al -aa -aa +aS +aS +bi +bJ +cf +cL +dG +ev +cf +gg +gV +hF +yQ +kk +kk +mv +nL +oY +qe +rl +sv +tC +uK +vG +wd +wT +aS +bi +bi +xT +aS aa aa aa @@ -20469,6 +21028,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -20550,6 +21111,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -20563,41 +21126,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aI -dJ -ej +aS +aS +bi +bE +cf +cM +dH ew -eO -eG -lh -dv -hJ -iJ -jl -gp -lu -mz -ny -sm -vq -vq -vq -sm -gw -on -al -bN -bN -al -al -aa -aa +fl +gi +gV +hF +iN +kl +lt +mw +nN +pa +qa +ri +sw +pY +uL +vH +wi +wU +aS +bi +bi +aS +aS aa aa aa @@ -20611,6 +21170,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -20692,6 +21253,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -20705,41 +21268,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aI -rw -dN -kM -aI -eD -lh -dv -gp -gp -gp -iq -iq -iq -iq -sm -ud -ud -ud -vH -ol -px -al -bN -bN -al -al -aa -aa +aS +aS +bi +bE +cf +cN +dI +ex +cf +gg +gV +hH +iO +iO +iO +iO +iO +iO +iO +rm +rm +rm +rm +vI +wj +wV +aS +bi +bi +aS +aS aa aa aa @@ -20753,6 +21312,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -20834,6 +21395,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -20847,41 +21410,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aI -aI -aI -aI -aI -eD -lh -dv -aw -nx -tD -uu -uB -uX -wD -uD -vL -wB -wH -uH -uI -uL -al -bN -bN -al -al -aa -aa +aS +aS +bi +bE +cf +cf +cf +cf +cf +gg +gV +hH +iP +km +lu +mx +nO +pb +qg +rn +sx +tE +uM +vJ +wi +wW +aS +bi +bi +aS +aS aa aa aa @@ -20895,6 +21454,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -20976,6 +21537,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -20989,41 +21552,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aK -dO -lW -dk -aK -eD -lh -dv -cn -tr -rF -tr -tS -vi -vd -uE -vM -vt -wI -rX -gw -on -al -bN -bN -al -al -aa -aa +aS +aS +bi +bE +cg +cO +dJ +ey +cg +gg +gV +hH +iQ +kn +lv +kn +nP +pc +qh +ro +sy +tF +uN +vK +wd +wT +aS +bi +bi +aS +aS aa aa aa @@ -21037,6 +21596,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -21118,6 +21679,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -21131,41 +21694,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aK -dM -ek -ex -eR -eG -lh -dv -fS -rH -te -te -tT -ug -vg -kj -vP -vt -wJ -vH -gw -on -al -bN -bN -al -al -aa -aa +aS +aS +bi +bE +cg +cP +dK +ez +fm +gi +gV +hH +iR +ko +lw +lw +nQ +pd +qi +iO +sz +tF +uO +vI +wd +wT +aS +bi +bi +aS +aS aa aa aa @@ -21179,6 +21738,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -21260,6 +21821,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -21273,41 +21836,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aK -rx -dQ -oN -aK -eD -lh -dv -jr -tL -ue -vc -vh -vh -wE -kj -vQ -vu -wK -sm -mx -pw -al -bN -bN -al -al -aa -aa +aS +aS +bi +bE +cg +cQ +dL +eA +cg +gg +gV +hH +iS +kp +lx +my +nR +nR +qj +iO +sA +tG +uP +vC +wk +wR +aS +bi +bi +aS +aS aa aa aa @@ -21321,6 +21880,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -21402,6 +21963,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -21415,41 +21978,37 @@ aa aa aa aa -aa -aa -al -al -al -eT -aK -aK -aK -aK -aK -fU -lh -dv -gN -rW -hK -kj -kj -kj -kj -kj -vR -vt -wJ -sm -gw -on -al -cW -al -al -al -aa -aa +aS +aS +aS +bK +cg +cg +cg +cg +cg +gh +gV +hH +iT +kq +ly +iO +iO +iO +iO +iO +sB +tF +uO +vC +wd +wT +aS +bk +aS +aS +aS aa aa aa @@ -21463,6 +22022,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -21531,13 +22092,80 @@ aa aa aa aa +ad aa aa aa aa aa aa -lk +aa +aa +aa +aa +aa +aa +ah +ah +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aS +aS +bg +bL +ch +cR +dM +eB +ch +gg +gV +hH +iU +kr +lz +mz +nS +pe +qk +rp +sC +tF +uO +vD +wd +wT +aS +bi +bg +aS +aS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ah +ah aa aa aa @@ -21559,73 +22187,6 @@ aa aa aa aa -al -al -cc -fa -aQ -tu -lX -dl -aQ -eD -lh -dv -mV -tP -uo -oi -uT -uZ -vj -iq -vS -vt -wJ -sm -gw -on -al -bN -cc -al -al -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 -vk -aa -aa -aa -aa aa aa aa @@ -21686,6 +22247,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -21699,41 +22262,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aQ -dP -el -ey -eU -eG -lh -dv -qG -se -mC -tw -tV -up -vl -uF -vT -wC -wL -sm -tG -on -al -bN -bN -al -al -aa -aa +aS +aS +bi +bE +ch +cS +dN +eC +fn +gi +gV +hH +iV +ks +lA +mA +nT +pf +ql +rq +sD +tH +uQ +vC +wg +wT +aS +bi +bi +aS +aS aa aa aa @@ -21747,6 +22306,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -21828,6 +22389,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -21841,41 +22404,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aQ -ry -dT -oU -aQ -eH +aS +aS +bi +bE +ch +cT +dO +eD +ch +gj +gX +hH +iW +kt +lB +mB +nU lA -dv -qE -rZ -mC -sg -pb -mC -vm -tx -tx -tx -tx -sm -vK -on -al -bN -bN -al -al -aa -aa +qm +rr +rr +rr +rr +vC +wl +wT +aS +bi +bi +aS +aS aa aa aa @@ -21889,6 +22448,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -21970,6 +22531,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -21983,41 +22546,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aQ -aQ -aQ -aQ -aQ -eQ -nJ -dv -qG -se -mC -sg -tn -mC -vm -tx -wV -wX -wM -sm -gw -on -al -bN -bN -al -al -aa -aa +aS +aS +bi +bE +ch +ch +ch +ch +ch +yJ +gY +hI +iX +ks +lC +mB +nV +lA +qm +rs +sE +tI +uR +vC +wd +wT +aS +bi +bi +aS +aS aa aa aa @@ -22031,6 +22590,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -22112,6 +22673,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -22125,41 +22688,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aR -dU -lY -dn -aR -eD -lh -dv -qM -sN -tg -tz +aS +aS +bi +bE +ci +cU +dP +eE +ci +gg +gV +hH +iY +ku +lD mC -ur -wZ -tx -wr -vB -wN -sm -gw -on -al -bN -bN -al -al -aa -aa +lA +pg +qn +rr +sF +tJ +uS +vC +wd +wT +aS +bi +bi +aS +aS aa aa aa @@ -22173,6 +22732,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -22254,6 +22815,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -22267,41 +22830,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aR -dS -em -ez -eV -eG -lh -dv -qE -ta -mC -tm -tX -ut -vo -uN -ws -xb -vp -sm -gw -on -al -bN -bN -al -al -aa -aa +aS +aS +bi +bE +ci +cV +dQ +eF +fo +gi +gV +hH +iV +kv +aX +mD +nW +ph +qo +rt +sG +tK +uT +vC +wd +wT +aS +bi +bi +aS +aS aa aa aa @@ -22315,6 +22874,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -22396,6 +22957,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -22409,41 +22972,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aR -rz -dW -pA -aR -eD -lh -dv -rD -xg -mC -rZ -mC -ta -xa -tx -wt -vB -wP -sm -gw -on -al -bN -bN -al -al -aa -aa +aS +aS +bi +bE +ci +cW +dR +eG +ci +gg +gV +hH +iZ +kw +aX +ks +lA +kv +qp +rr +sH +tJ +uU +vC +wd +wT +aS +bi +bi +aS +aS aa aa aa @@ -22457,6 +23016,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -22538,6 +23099,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -22551,41 +23114,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aR -aR -aR -aR -aR -eF -lh -dv -vy -xh -mC -rZ -mC -mC -vn -tx -wW -wY -wQ -sm -ol -px -al -bN -bN -al -al -aa -aa +aS +aS +bi +bE +ci +ci +ci +ci +ci +gl +gV +hH +ja +kx +lA +ks +lA +lA +qq +ru +sI +tL +uV +vC +wj +wV +aS +bi +bi +aS +aS aa aa aa @@ -22599,6 +23158,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -22680,6 +23241,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -22693,41 +23256,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aV -dX -rp -dq -aV -eD -lh -dv -xk -xi -mC -rZ -mC -mC -vn -uc -tx -tx -tx -sm -gw -on -al -bN -bN -al -al -aa -aa +aS +aS +bi +bJ +cj +cX +dS +eH +cj +gg +gV +hH +jb +ky +lA +ks +lA +lA +qq +rv +rr +rr +rr +vC +wd +wT +aS +bi +bi +aS +aS aa aa aa @@ -22741,6 +23300,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -22822,6 +23383,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -22835,44 +23398,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aV -dV -en -eA -eW -eG -lh -dv -xf -xj -tQ -uy -uO -uO -uU -vr -vD -wF -wR -sm -gw -on -al -bN -bN -al -al -ak -ak -ak -ak -ak +aS +aS +bi +bE +cj +cY +dT +eI +fp +gi +gV +hH +jc +kz +lE +mE +nX +nX +qr +rw +sJ +tM +uW +vC +wd +wT +aS +xG +bi +aS +aS aa aa aa @@ -22886,6 +23442,11 @@ aa aa aa aa +ah +ah +aa +aa +aa aa aa aa @@ -22964,6 +23525,8 @@ aa aa aa aa +ah +ah aa aa aa @@ -22977,44 +23540,37 @@ aa aa aa aa -aa -aa -al -al -bN -dd -aV -rA -dZ -pB -aV -eD -lh -dv -gO -gO -gO -tI -gO -gO -gO -gO -wv -ww -wS -sm -gw -on -al -bN -bN -al -al -aa -oD -aa -aa -ak +aS +aS +bi +bE +cj +cZ +dU +eJ +cj +gg +gV +hH +jd +jd +jd +mF +jd +jd +jd +jd +sK +tN +uX +vC +wd +wT +aS +bi +bi +aS +aS aa aa aa @@ -23028,6 +23584,11 @@ aa aa aa aa +ah +ah +aa +aa +aa aa aa aa @@ -23106,67 +23667,67 @@ aa aa aa aa +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah aa aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -al -al -bN -dd -aV -aV -aV -aV -aV -eD -lh -dv -rE -tU -uA -uz -uV -va -vv -gO -wx -vE +aS +aS +bi +bE +cj +cj +cj +cj +cj +gg +gV +hH +je +kA +lF +mG +nY +pi +qs +jd +sL +tO +uY +vC +wd wT -sm -gw -on -al -bN -bN -al -al -aa -rG -uq -aa -ak -aa -aa -aa -aa -aa +xo +bi +bi +aS +aS aa aa aa aa aa +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah aa aa aa @@ -23248,68 +23809,67 @@ aa aa aa aa +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah aa aa aa aa +aS +aS +bi +bE +ck +da +dV +eK +ck +gj +gX +hH +jf +kB +kB +mH +nZ +kB +qt +jd +sM +tO +uY +vC +yN +wX +aS +bi +bi +xT +aS aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -al -al -bN -dd -be -ea -rq -dy -be -eH -lA -dv -rI -tb -tb -tM -ua -tb -vw -gO -wy -vE -wT -sm -mx -un -al -bN -bN -al -al -dw -aa -aa -aa -ak -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah aa aa aa @@ -23335,6 +23895,7 @@ aa aa aa aa +yw aa aa aa @@ -23398,51 +23959,51 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -al -al -bN -dd -be -dY -eo -eB -eY -fJ -nJ -dv -td -tc -to +ah +ah +ah +ah +ah +ah +ah +aS +aS +bi +bE +ck +db +dW +eL +fq +gm +gY +hH +jg +kC +lG +mI +oa +pj +qt +jd +sN tO -ub -uv -vw -gO -wz -vE +uY +vC +wg wT -sm -tG -on -al -bN -bN -al -al -aa -uk -us -vz -ak -aa -aa +aS +bi +bi +aS +aS +ah +ah +ah +ah +ah +ah +ah aa aa aa @@ -23541,49 +24102,49 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -al -al -bN -dd -be -rB -ec -pC -be -hQ -gh -fy -tq -tY -uw -wq -wu -uW +ah +ah +ah +ah +ah +ah +aS +aS +bi +bE +ck +dc +dX +eM +ck +gn +gZ +hJ +jh +kD +lH +mJ +ob +pk +qu +jd +sO +tP +uZ vC -gO -wA -wG -wU -sm -qO -rY -al -bN -bN -al -al -uM -aa -vx -vA -ak -aa +wm +wY +aS +bi +bi +aS +aS +ah +ah +ah +ah +ah +ah aa aa aa @@ -23689,42 +24250,42 @@ aa aa aa aa -al -al -bN -dd -be -be -be -be -be -fe -fP -dv -gO -gO -gO -gO -gO -gO -gO -gO -uG -uG -uG -sm -qf -rg -al -bN -bN -al -al -ak -ak -ak -ak -ak +aS +aS +bi +bE +ck +ck +ck +ck +ck +go +ha +hH +jd +jd +jd +mK +jd +jd +jd +jd +sP +sP +sP +vC +wn +wZ +aS +bi +bi +aS +aS +aa +aa +aa +aa +aa aa aa aa @@ -23831,36 +24392,36 @@ aa aa aa aa -al -al -bN -gP -lH -lH -lH -dF -bO -bK -gj -bU -gF -gj -gj -gj -bJ -gF -gj -gj -tt -kP -mD -og -rC -tZ -cW -bN -bN -al +aa +aS +bi +bM +cl +cl +cl +eN +fr +gp +hb +hK +ji +hb +hb +hb +oc +ji +hb +hb +sQ +tQ +va +vL +wo +xa +xp +bi +bi +aS aa aa aa @@ -23973,36 +24534,36 @@ aa aa aa aa -al -al -am -am -am -am -am -am -bu -eK -gk -jB -gG -hO -hO -hT -jp -ks -hO -hO -ux -nb -oh -sm -sh -sh -wO -wO -wO -al +aa +aS +bc +bc +bc +dd +bc +bc +fs +gq +hc +hL +jj +kE +kE +mL +od +pl +kE +kE +sR +tR +vb +vM +wp +wp +vM +vM +vM +aS aa aa aa @@ -24116,35 +24677,35 @@ aa aa aa aa -am -am -bP -bo -cD -cZ -aj -aT -eM -cF -cF -cF -hD -hD -hD -hD -hD -hD -hD -hD -nz -pg -oA -pf -sk -so -sx -wO -wO +bc +bc +bN +cm +de +dY +eO +ft +gr +hd +hd +hd +kF +kF +kF +kF +kF +kF +kF +kF +tS +vc +vN +wq +xb +xq +xH +vM +vM aa aa aa @@ -24258,35 +24819,35 @@ aa aa aa aa -am -am -bQ -bW -cE -da -bj -bt -eN -cF -gC -gH -hD -hP -hU -jq -kt -lw -ly -hD -nY -qa -pP -ul -sl -is -sy -wO -wO +bc +bc +bO +cn +df +dZ +eP +fu +gs +hd +hM +jk +kF +lI +mM +oe +pm +qv +rx +kF +tT +vd +vO +wr +xc +xr +xI +vM +vM aa aa aa @@ -24371,13 +24932,7 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -mG +ae aa aa aa @@ -24400,35 +24955,41 @@ aa aa aa aa -am -am -bR -bR -am -am -am -fc -ff -cF -gD -gX -hD -tB -iK -ko -kv -kv -lz -hD -nZ -fL -sm -sm -sm -sp -sp -wO -wO +aa +aa +aa +aa +aa +aa +bd +bc +bP +bP +bc +bc +bc +fv +gt +hd +hN +jl +kF +lJ +mN +of +pn +pn +ry +kF +tU +gC +vP +vP +vP +xs +xs +vM +xU aa aa aa @@ -24543,33 +25104,33 @@ aa aa aa aa -bI -bS -cd -bG -nu -eJ -bE -fB -cF -gI -hM -hD -hR -jn -kq -kv -kv -lB -hD -of -fO -rj -ln -sm -st -sz -sB +bp +bQ +co +dg +ea +eQ +fw +gu +hd +hO +jm +kF +lK +mO +og +pn +pn +rz +kF +tV +gB +vQ +ws +vP +xt +xJ +xP aa aa aa @@ -24685,33 +25246,33 @@ aa aa aa aa -bM -bS -ce -am -nv -an -bV -gE -cF -gJ -hN -hD -hS -jo -kr -lv -lv -we -hD -of -fO -sm -sv -wh -su -sz -sC +bq +bQ +cp +bc +eb +bs +fx +gv +hd +hP +jn +kF +lL +mP +oh +po +po +rA +kF +tV +gB +vP +wt +xd +xu +xJ +xQ aa aa aa @@ -24826,35 +25387,36 @@ aa aa aa aa -ai -am -am -am -am -nv -an -bY -iz -cF -gK -hV -hD -js -kw -lF -mE -mE -wf -hD -lb -nl -sm -sw -sm -wO -wO -wO -tp +be +bc +bc +bc +bc +eb +bs +fy +gw +hd +hQ +jo +kF +lM +mQ +oi +pp +pp +rB +kF +tW +ve +vP +wu +vP +vM +vM +vM +xV +aa aa aa aa @@ -24882,7 +25444,6 @@ aa aa aa aa -vY aa aa aa @@ -24969,33 +25530,33 @@ aa aa aa aa -av -io -io -lZ -nv -an -fK -iA -cF -bm -cF -cF -hD -gZ -hD -hD -hD -hD -hD -my -nm -wd -sA -sJ -sP -sL -iw +br +bR +bR +dh +eb +bs +fz +gx +hd +hR +hd +hd +kF +mR +kF +kF +kF +kF +kF +tX +vf +vP +wv +xe +xv +ws +xh aa aa aa @@ -25111,33 +25672,33 @@ aa aa aa aa -av -it -lL -lM -nv -an -aL -iz -db -hZ -hW -iL -iL -ky -iL -iL -iL -oj -ph -kV -tF -wd -sE -sI -sQ +br +bS +cq +cr +eb +bs +fA +gw +he +hS +jp +kG +kG +mS +kG +kG +kG +rC sS -iw +tY +vg +vP +ww +wz +xw +xK +xh aa aa aa @@ -25253,33 +25814,33 @@ aa aa aa aa -an -an -it -mA -rJ -an -aL -iz -db -ju -hX -iM -iM -kA -lG -mF -mF -ok -ph -kV -nk -wd -sF -sK -sR -wd -wd +bs +bs +bS +di +ec +eR +fA +gw +he +hT +jq +kH +kH +mT +oj +pq +pq +rD +sS +tY +vh +vR +wx +xf +xx +vP +vP aa aa aa @@ -25396,31 +25957,31 @@ aa aa aa aa -an -lM -lM -rK -an -aL -iz -db -iY -hb -hb -hb -hb -hE -hb -hb -hb -hb -ui -nk -wd -sH -sL -sL -wd +bT +cr +cr +ed +bs +yH +gw +he +hU +jr +jr +jr +jr +ok +jr +jr +jr +jr +tZ +vh +vP +wy +ws +ws +vP aa aa aa @@ -25538,31 +26099,31 @@ aa aa aa aa -an -an -ne -rU -an -aL -iz -db -kb -hb -kp -mq -mM -mZ -pj -pZ -sq -hb -kV -nk -wd -sH -sL -wd -wd +bs +bs +dj +ee +bs +fA +gw +he +hV +jr +kI +lN +mU +ol +pr +qw +rE +jr +tY +vh +vP +wy +ws +vP +vP aa aa aa @@ -25680,31 +26241,31 @@ aa aa aa aa -xm -an -nf -lM -an -aL -iz -db -kb -hb -ku -dc -mJ -kB -dc -dc -sr -hb -kV -nk -wd -sH -sM -wd -xm +aY +bs +dk +cr +bs +fA +gw +he +hV +jr +kJ +lO +mV +om +lO +lO +rF +jr +tY +vh +vS +wy +xg +vP +aY aa aa aa @@ -25822,31 +26383,31 @@ aa aa aa aa -xm -an -an -lM -an -aL -iz -db -kb -hb -wb -ki -mK -mO -lt -pk -ss -hb -kV -nk -wd -sH -wd -wd -xm +aY +bs +bs +cr +bs +fA +gw +he +hV +jr +kK +lP +mW +on +ps +qx +rG +jr +tY +vh +vP +wy +vP +vP +aY aa aa aa @@ -25964,31 +26525,31 @@ aa aa aa aa -xm -ag -av -lM -an -jy -iz -db -kb -hb -wc -jt -kn -lI -vX -nB -om -hb -tH -nk -wd -sH -iw -ag -xm +aY +bt +br +cr +bs +fB +gw +he +hV +jr +kL +lQ +lR +oo +pt +qy +rH +sT +ua +vh +vP +wy +xh +bt +aY aa aa aa @@ -26106,31 +26667,31 @@ aa aa aa aa -xm -ag -av -lM -an -jz -fB -db -kb -hb -iO -dc -dc -lJ -mH -pk -oo -hb -kV -nk -wd -sH -iw -ag -xm +aY +bt +br +cr +bs +fC +gu +he +hV +jr +kM +lO +lO +op +pu +qx +rI +jr +tY +vh +vP +wy +xh +bt +aY aa aa aa @@ -26248,31 +26809,31 @@ aa aa aa aa -xm -ag -av -lM -an -tJ -gE -db -kb -hb -iO -dc -dc -lK -vX -nB -om -hb -kV -nk -wd -sH -iw -ag -xm +aY +bt +br +cr +bs +fD +gv +he +hV +jr +kM +lO +lO +oq +pt +qy +rH +jr +tY +vh +vP +wy +xh +bt +aY aa aa aa @@ -26385,41 +26946,41 @@ aa aa aa aa -an -an -an -an -an -an -an -an -lM -an -jA -iA -db -kb -hb -iO -dc -dc -lN -mH -pk -oo -hb -kV -nk -wd -sH -wd -wd -wd -wd -wd -wd -wd -wd +aa +aa +aa +aa +aa +aY +bs +bs +cr +bs +fE +gx +he +hV +jr +kM +lO +lO +or +pu +qx +rI +jr +tY +vh +vP +wy +vP +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -26527,41 +27088,41 @@ aa aa aa aa -an -an -xl -xl -xl -xl -an -lM -lM -an -aL -iz -db -kR -hb -kz -dc -dc -kB -vX -nB -op -hb -kV -nk -wd -sH -sO -wd -sL -xn -xn -xn -wd -wd +aa +aa +aa +aa +aa +aY +bs +cr +cr +bs +fA +gw +he +hW +jr +kN +lO +lO +om +pt +qy +rJ +jr +tY +vh +vP +wy +xi +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -26669,41 +27230,41 @@ aa aa aa aa -an -an -xl -xl -xl -xl -an -lM -lM -an -aL -iz -db -gM -hb -kW -kn -kn +aa +aa +aa +aa +aa +aY +bs +cr +cr +eS +fA +gw +he +hX +jr +kO +lR +lR +os lO -dc -nC -oq -hb -kV -nk -wd -sH -sL -wd -xn -sL -xn -xn -wd -wd +qz +rK +jr +tY +vh +vP +wy +xj +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -26811,41 +27372,41 @@ aa aa aa aa -an -an -xl -xl -xl -xl -an -lM -lM -an -aL -iz -db -kb -hb -iP -jv -kC -lP -qq -nD -or -hb -nP -nn -wd -sH -sL -wd -xn -sL -xn -xn -wd -wd +aa +aa +aa +aa +aa +aY +bs +cr +cr +bs +fA +gw +he +hV +jr +kP +lS +mX +ot +pv +qA +rL +jr +ub +vi +vP +wy +ws +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -26953,41 +27514,41 @@ aa aa aa aa -an -an -xl -xl -xl -xl -an -lM -lM -an -aL -iz -db -bD +aa +aa +aa +aa +aa +aY +bs +cr +cr +bs +fA +gw he -hb -hb -hb -hb -hb -hb -hb -he -rf -no -wd -sH -sL -wd -sL -sL -xn -xn -wd -wd +hY +js +jr +jr +jr +jr +jr +jr +jr +js +uc +vj +vP +wy +ws +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -27095,41 +27656,41 @@ aa aa aa aa -an -an -xl -xl -lM -lM -lM -lM -lM -an -lD -ax -gi -gQ -hY -iQ -iQ -iQ -lQ -lQ -nE -lQ -pi -sa -nR -wd -sH -sL -sL -sL -sL -xn -xn -wd -wd +aa +aa +aa +aa +aa +aY +bs +cr +cr +bs +fF +gy +hf +hZ +jt +kQ +kQ +kQ +ou +ou +qB +ou +sU +ud +vk +vP +wy +ws +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -27237,41 +27798,41 @@ aa aa aa aa -an -an -xl -lM -lM -lM -an -lM -lM -an -aL -iz -kc -cA -vZ -kc -kc -kc -kc -mI -mI -mI -wg -sb -mb -wd -sH -sL -wd -xn -xn -sL -xn -wd -wd +aa +aa +aa +aa +aa +aY +bs +cr +cr +bs +fA +gw +hg +ia +ju +hg +hg +hg +hg +pw +pw +pw +sV +ue +vl +vP +wy +ws +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -27379,41 +27940,41 @@ aa aa aa aa -an -an -xl -lM -xl -xl -an -lM -lM -an -aL -iz -kc -aG -iR -jI -jI -lC -nG -mI -oE -oE -mI -kS -pE -wd -sH -sL -wd -xn -xn -xn -xn -wd -wd +aa +aa +aa +aa +aa +aY +bs +cr +cr +bs +fA +gw +hg +ib +jv +kR +kR +mY +ov +pw +qC +qC +pw +uf +vm +vP +wy +ws +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -27521,41 +28082,41 @@ aa aa aa aa -an -an -xl -xl -xl -xl -an -lM -lM -an -aL -iz -kc -gL -jT -jQ -kF -lR -nG -mI -oF -pY -mI -kV -pF -wd -sH -sL -wd -xn -xn -sL -xn -wd -wd +aa +aa +aa +aa +aa +aY +bT +cr +cr +bs +fA +gw +hg +ic +jw +kS +lT +mZ +ov +pw +qD +rM +pw +tY +vn +vS +wy +ws +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -27663,41 +28224,41 @@ aa aa aa aa -an -an -xl -xl -xl -xl -an -lM -lM -an -jA -iA -kc -bw -ib -jR -jR -jR -nH -mI -mI -qI -mI -kV -mb -wd -sH -sL -wd -xn -xn -sL -sL -wd -wd +aa +aa +aa +aa +aa +aY +bs +dl +cr +bs +fE +gx +hg +id +jx +kT +kT +na +ow +pw +pw +rN +pw +tY +vl +vP +wy +ws +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -27805,41 +28366,41 @@ aa aa aa aa -an -an -xl -xl -xl -xl -an -lZ -lM -an -bV -gE -kc -by -il -jS -kI -me -oe -ow -ow -ri -kc +aa +aa +aY +aY +aY +aY +bs +dh +cr +eR +fx +gv +hg +ie +jy +kU +lU kV -mb -wd -sH -sL -wd -xn -xn -xn -xn -wd -wd +ox +px +pA +rO +hg +tY +vl +vR +wy +ws +vP +aY +aY +aY +aY +aa +aa aa aa aa @@ -27947,41 +28508,41 @@ aa aa aa aa -an -an -an -an -an -an -an -an -lM -an -aL -iz -kc -bA -iB -jW -kc -jw -kc -kc -kc -kG -kc +aa +aa +aY +aY +aY +aY +bs +bs +cr +bs +fA +gw +hg +if +jz kV -mb -wd -sH -wd -wd -wd -wd -wd -wd -wd -wd +lV +nb +lV +py +hg +rP +hg +tY +vl +vP +wy +vP +vP +aY +aY +aY +aY +aa +aa aa aa aa @@ -28091,37 +28652,37 @@ aa aa aa aa -xm -xm -ag -ag -ag -av -lM -an -bu -iz -kc -bT -jU -ke -jw -jw -jw -kc -oK -ve -kc -kV -mb -wd -sH -iw -ag -ag -ag -xm -xm +aY +aY +bt +bt +bt +br +cr +bs +fs +gw +hg +ig +jA +kW +lW +kW +lW +kW +qE +rQ +hg +tY +vl +vP +wy +xh +bt +bt +bt +aY +aY aa aa aa @@ -28233,37 +28794,37 @@ aa aa aa aa -xm -xm -ag -ag -ag -av -lM -an -aL -iz -kc -iG -kc -ke +aY +aY +bt +bt +bt +br +cr +bs +fA +gw +hg +ih +jB kX -mo -kX -kc -oT -ia -kc -kV -mb -wd -sH -iw -ag -ag -ag -xm -xm +lW +nc +lW +la +qF +rP +hg +tY +vl +vP +wy +xh +bt +bt +bt +aY +aY aa aa aa @@ -28375,37 +28936,37 @@ aa aa aa aa -xm -xm -ag -ag -ag -av -lM -an -aL -iz -kc -cI -jD -ov -pV -pV -qs -qK -oW -ia -kc -tH -mb -wd -sH -iw -ag -ag -ag -xm -xm +aY +aY +bt +bt +bt +br +cr +bs +fA +gw +hg +ih +jC +kY +hg +lY +hg +oy +qG +rP +hg +ua +vl +vP +wy +xh +bt +bt +bt +aY +aY aa aa aa @@ -28515,41 +29076,41 @@ aa aa aa aa -an -an -an -an -an -an -an -an -lM -an -tK -iz -kc -cI -jE -ka -jY -jY -jY -qJ -oW -ia -kc -pu -no -wd -sH -wd -wd -wd -wd -wd -wd -wd -wd +aa +aa +aY +aY +aY +aY +bs +bs +cr +bs +fG +gw +hg +ih +jD +kZ +lX +nd +lY +oy +qH +rP +hg +ug +vj +vP +wy +vP +vP +aY +aY +aY +aY +aa +aa aa aa aa @@ -28657,41 +29218,41 @@ aa aa aa aa -an -an -xl -xl -xl -xl -an -lM -lM -an -aL -iz -kc -de -jF -ka -jY -qL -jY -qJ -pc -vf -kc -sG -pN -wd -sH -sL -wd -xn -xn -xn -xn -wd -wd +aa +aa +aY +aY +aY +aY +bs +cr +cr +bs +fA +gw +hh +ii +jE +kY +lY +ne +lY +oy +qH +rP +hg +uh +vo +vP +wy +ws +vP +aY +aY +aY +aY +aa +aa aa aa aa @@ -28799,41 +29360,41 @@ aa aa aa aa -an -an -xl -xl -xl -xl -an -lM -lM -an -aL -iz -kc -cI -jE -ka -jZ -jY +aa +aa +aa +aa +aa +aY +bs +cr +cr +bs +fA +gw +hg +ih +jF kY -qJ -oW -vN -kc -kV -mb -wd -sH -sL -wd -xn -xn -xn -xn -wd -wd +lY +nf +lY +oy +qH +rP +hg +tY +vl +vP +wy +ws +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -28941,41 +29502,41 @@ aa aa aa aa -an -an -xl -xl -xl -xl -an -lM -lM -an -aL -iz -kc -cI -jD -vV -pX -qb -qt -wl -oW -vN -kc -kV -mb -wd -sH -sL -wd -xn -xn -xn -xn -wd -wd +aa +aa +aa +aa +aa +aY +bs +cr +cr +bs +fA +gw +hg +ih +jG +kY +hg +ng +hg +oy +qH +rP +hg +tY +vl +vP +wy +ws +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -29083,41 +29644,41 @@ aa aa aa aa -an -an -xl -lM -lM -xl -an -lM -lM -an -aL -iz -kc -iG -kc -kc -lc -nF -lc -kc -oT -vN -kc +aa +aa +aa +aa +aa +aY +bs +cr +cr +bs +fA +gw +hg +ih +jH kV -mb -wd -sH -sL -wd -xn -xn -xn -xn -wd -wd +kY +nh +oy +pz +kX +rP +hg +tY +vl +vP +wy +ws +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -29225,41 +29786,41 @@ aa aa aa aa -an -an -xl -xl -lM -xl -an -lM -lM -an -jA -fM -kc -gR -jG -kc -jQ -jw -ia -kc -oK -vO -kc -ui -mb -wd -sH -sL -sL -sL -sL -xn -xn -wd -wd +aa +aa +aa +aa +aa +aY +bs +cr +cr +bs +fE +gz +hg +ij +jI +la +kY +jx +oz +kX +qE +rQ +hg +tZ +vl +vP +wy +ws +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -29367,41 +29928,41 @@ aa aa aa aa -an -an -xl -xl -lM -lM -lM -lM -lM -an -bV -fN -kc -gS -gU -kc -jT -jw -jT -kc -kc -vN -kc -kV -mb -wd -sH -sL -wd -xn -sL -sL -xn -wd -wd +aa +aa +aa +aa +aa +aY +bs +cr +cr +eS +fx +gA +hg +ih +jJ +lb +lb +lW +jJ +lW +lW +rP +hg +tY +vl +vP +wy +ws +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -29509,41 +30070,41 @@ aa aa aa aa -an -an -xl -xl -lM -lM -an -lM -lM -an -aL -fO -kc -gT -jH -kD -lx -me -os -ow -pU -vU -kc -kV -mb -wd -sH -sL -wd -xn -xn -sL -xn -wd -wd +aa +aa +aa +aa +aa +aY +bs +cr +cr +bs +fA +gB +hg +ik +jK +lc +lV +lV +ox +pA +pA +rR +hg +tY +vl +vP +wy +ws +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -29651,41 +30212,41 @@ aa aa aa aa -an -an -xl -xl -xl -xl -an -lM -lM -an -lD -fO -kc -kc -ic -ic -jJ -ic -ic -ic -ic -ox -kc -kV -qQ -wd -sH -sL -wd -xn -xn -xn -xn -wd -wd +aa +aa +aa +aa +aa +aY +bs +cr +cr +bs +fF +gB +hg +il +jL +jL +lZ +jL +jL +jL +jL +il +hh +tY +vp +vP +wy +ws +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -29793,41 +30354,41 @@ aa aa aa aa -an -an -xl -xl -xl -xl -an -lM -lM -an -aL -fO -ds -gV -id -id -jK -gV -lS -gV -lS -oy -ds -kV -mb -wd -sH -sL -wd -xn -xn -xn -xn -wd -wd +aa +aa +aa +aa +aa +aY +bs +cr +cr +bs +fA +gB +hg +im +jM +ld +jM +ld +jM +ld +jM +jN +hg +tY +vl +vP +wy +ws +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -29935,41 +30496,41 @@ aa aa aa aa -an -an -xl -xl -xl -xl -an -lM -lM -an -aL -fO -ds -gW -id -id -id -jK -gW -jK -gW -jK -ds -kV -mb -wd -sH -sL -wd -xn -xn -xn -xn -wd -wd +aa +aa +aa +aa +aa +aY +bs +dl +cr +eR +fA +gB +hg +in +jN +in +jN +in +jN +in +jN +rS +hg +tY +vl +vR +wy +xj +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -30077,41 +30638,41 @@ aa aa aa aa -an -an -xl -xl -xl -xl -an -lZ -lM -an -fc -fL -ds -ds -ds -ds -ds -ds -ds -ds -ds -ds -ds -oa -ou -wd -sH -sO -wd -xn -xn -xn -xn -wd -wd +aa +aa +aa +aa +aa +aY +bs +dh +cr +bs +fv +gC +hg +hg +hg +hg +hg +hg +hg +hg +hg +hg +hg +ui +vq +vP +wy +xi +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -30219,41 +30780,41 @@ aa aa aa aa -an -an -an -an -an -an -an -an -lM -an -fg -fQ -gm -gY -gY -iS -gm -gY -lT -gY -gY -gY -gY -qh -qU -wd -sH -wd -wd -wd -wd -wd -wd -wd -wd +aa +aa +aa +aa +aa +aY +bs +bs +cr +bs +fH +gD +hi +io +io +le +hi +io +oA +io +io +io +io +uj +vr +vS +wy +vP +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -30361,41 +30922,41 @@ aa aa aa aa -an -an -an -an -an -an -an -an -lM -an -fh -fR -gn -ha -ha -iT -jL -kE +aa +aa +aa +aa +aa +aY +bs +bs +cr +bs +fI +gE +hj +ip +ip +lf ma -ha -ha -oz -pl -qi -qV -wd -sH -wd -wd -wd -wd -wd -wd -wd -wd +ni +oB +ip +ip +rT +sW +uk +vs +vP +wy +vP +vP +aY +aa +aa +aa +aa +aa aa aa aa @@ -30510,27 +31071,27 @@ aa aa aa aa -av -lM -an -bL -bL -bL -bL -bL -bL -bL -jC -bL -bL -tf -ni -tf -tf -tf -tf -sH -iw +br +cr +bs +eU +eU +eU +iq +eU +eU +eU +nj +oC +eU +qI +rU +qO +qO +qO +qO +wy +xh aa aa aa @@ -30652,27 +31213,27 @@ aa aa aa aa -av -lM -ed -fi -iN -go -go -ie -go -iN -kH -mc -bL -nI -oB -uh -pm -qW -rk -sI -iw +br +cr +eT +fJ +gF +hk +hk +jO +hk +gF +nk +oD +eU +qJ +rV +sX +ul +vt +vT +wz +xh aa aa aa @@ -30794,27 +31355,27 @@ aa aa aa aa -an -an -an -fj -fV -gq -hc -if -hc -jM -kJ -md -bL -nL -oC -pn -pn -qX -tf -wd -wd +bs +bs +bs +fK +gG +hl +ir +jP +ir +mb +nl +oE +eU +qK +rW +sY +sY +vu +qO +vP +vP aa aa aa @@ -30937,26 +31498,26 @@ aa aa aa aa -df -bL -fk -fW -gr -hf -hf -hf -jN -kK -mf -bL -nM -oG -po -po -qY -tf -tf -tf +ef +eU +fL +gH +hm +is +jQ +yP +mc +nm +oF +eU +qL +rX +sZ +sZ +vv +qO +qO +qO aa aa aa @@ -31080,24 +31641,24 @@ aa aa aa aa -ee -fl -fX -gs -cV -cV -cV -cV -ig -mf -bL -nN -oH -pp -po -qZ -tf -tf +eV +fM +gI +hn +it +it +it +it +jR +oF +eU +qM +rY +ta +sZ +vw +qO +qO aa aa aa @@ -31222,24 +31783,24 @@ aa aa aa aa -ee -fm -fY -gt -hg -ig -iU -jO -jO -mg -bL -nO -oI -pq -qj -ra -tf -tf +eV +fN +gJ +ho +iu +jR +lg +md +md +oG +eU +qN +rZ +tb +um +vx +qO +qO aa aa aa @@ -31364,24 +31925,24 @@ aa aa aa aa -bL -bL -bL -bL -hj -ih -iV -bL -bL -bL -bL -tf -tf -tf -qk -qk -tf -tf +eU +eU +eU +eU +iv +jS +lh +eU +nn +eU +eU +qO +sa +qO +un +un +qO +qO aa aa aa @@ -31506,20 +32067,20 @@ aa aa aa aa -bL -bL -bL -bL -ee -ee -ee -bL -bL -bL -bL -tf -tf -tf +eU +eU +eU +eU +eV +eV +eV +eU +eU +eU +eU +qO +qO +qO aa aa aa diff --git a/maps/tether/submaps/space/_fueldepot.dm b/maps/tether/submaps/space/_fueldepot.dm new file mode 100644 index 00000000000..dfa11a53194 --- /dev/null +++ b/maps/tether/submaps/space/_fueldepot.dm @@ -0,0 +1,34 @@ +/obj/effect/overmap/visitable/sector/fueldepot + name = "Fuel Depot" + desc = "Self-service refueling depot." + icon = 'icons/obj/overmap_vr.dmi' + icon_state = "fueldepot" + color = "#33FF33" + initial_generic_waypoints = list("fueldepot_east","fueldepot_west","fueldepot_north","fueldepot_south") + +/area/tether_away/fueldepot + name = "Away Mission - Fuel Depot" + icon = 'icons/turf/areas_vr.dmi' + icon_state = "dark" + lightswitch = FALSE + +/obj/effect/shuttle_landmark/premade/fueldepot/east + name = "Fuel Depot - East Dock" + landmark_tag = "fueldepot_east" + +/obj/effect/shuttle_landmark/premade/fueldepot/west + name = "Fuel Depot - West Dock" + landmark_tag = "fueldepot_west" + +/obj/effect/shuttle_landmark/premade/fueldepot/north + name = "Fuel Depot - North Dock" + landmark_tag = "fueldepot_north" + +/obj/effect/shuttle_landmark/premade/fueldepot/south + name = "Fuel Depot - South Dock" + landmark_tag = "fueldepot_south" + +/turf/simulated/floor/tiled/techmaint/airless + oxygen = 0 + nitrogen = 0 + temperature = TCMB \ No newline at end of file diff --git a/maps/tether/submaps/space/fueldepot.dmm b/maps/tether/submaps/space/fueldepot.dmm new file mode 100644 index 00000000000..86e6cee6c0f --- /dev/null +++ b/maps/tether/submaps/space/fueldepot.dmm @@ -0,0 +1,21242 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/space, +/area/space) +"ab" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/fuel{ + icon_state = "map-fuel"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"ac" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/visible/aux{ + icon_state = "map-aux"; + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"ad" = ( +/obj/machinery/atmospherics/portables_connector/aux{ + icon_state = "map_connector-aux"; + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/blue, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"ae" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/visible/fuel{ + icon_state = "map-fuel"; + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"af" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/aux, +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"ag" = ( +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 10 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"ah" = ( +/obj/machinery/atmospherics/portables_connector/fuel{ + icon_state = "map_connector-fuel"; + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/red, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"ai" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 9 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"aj" = ( +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"ak" = ( +/obj/machinery/atmospherics/binary/pump/fuel{ + icon_state = "map_off-fuel"; + dir = 1 + }, +/obj/machinery/atmospherics/binary/pump/aux{ + icon_state = "map_off-aux"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"al" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 6 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"am" = ( +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"an" = ( +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 9 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"ao" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"ap" = ( +/obj/machinery/atmospherics/pipe/simple/visible/aux, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"aq" = ( +/obj/machinery/power/solar, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 9 + }, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"ar" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"as" = ( +/obj/machinery/power/solar, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 5 + }, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"at" = ( +/obj/machinery/power/solar, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 8 + }, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"au" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 4 + }, +/obj/structure/railing, +/turf/space, +/area/space) +"av" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 8 + }, +/turf/space, +/area/space) +"aw" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 4 + }, +/turf/space, +/area/space) +"ax" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 4 + }, +/obj/structure/railing{ + icon_state = "railing0"; + dir = 1 + }, +/turf/space, +/area/space) +"ay" = ( +/obj/structure/railing, +/turf/space, +/area/space) +"az" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 8 + }, +/obj/structure/railing, +/turf/space, +/area/space) +"aA" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 1 + }, +/obj/structure/railing{ + icon_state = "railing0"; + dir = 4 + }, +/turf/space, +/area/space) +"aB" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 1 + }, +/obj/structure/railing{ + icon_state = "railing0"; + dir = 8 + }, +/turf/space, +/area/space) +"aC" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 1 + }, +/turf/space, +/area/space) +"aD" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"aE" = ( +/obj/machinery/power/solar, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"aF" = ( +/turf/simulated/wall/rshull, +/area/tether_away/fueldepot) +"aG" = ( +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"aH" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"aI" = ( +/obj/machinery/power/solar, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 10 + }, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"aJ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"aK" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"aL" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"aM" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning/dust, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"aN" = ( +/obj/machinery/power/solar, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 6 + }, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"aO" = ( +/obj/machinery/power/tracker, +/obj/structure/cable, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"aP" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"aQ" = ( +/obj/machinery/power/apc{ + dir = 8; + icon_state = "apc0"; + pixel_x = -28 + }, +/obj/structure/cable/green{ + icon_state = "0-2" + }, +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"aR" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 6 + }, +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"aS" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 9 + }, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"aT" = ( +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 8 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -28; + pixel_y = 30 + }, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"aU" = ( +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 10 + }, +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"aV" = ( +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"aW" = ( +/obj/machinery/power/solar_control, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"aX" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"aY" = ( +/obj/machinery/power/smes/buildable/point_of_interest, +/obj/structure/cable/green{ + icon_state = "0-4" + }, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"aZ" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"ba" = ( +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bb" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/visible/fuel, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bc" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bd" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible/aux, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"be" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bf" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bg" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 6 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bh" = ( +/obj/machinery/atmospherics/binary/pump/aux{ + icon_state = "map_off-aux"; + dir = 8 + }, +/obj/machinery/atmospherics/binary/pump/fuel{ + icon_state = "map_off-fuel"; + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"bi" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 10 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bj" = ( +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"bk" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"bl" = ( +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"bm" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bn" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible/fuel, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bo" = ( +/obj/machinery/atmospherics/pipe/tank/phoron, +/obj/effect/floor_decal/industrial/outline/red, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"bp" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/visible/aux, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bq" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"br" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"bs" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"bt" = ( +/obj/machinery/atmospherics/portables_connector/fuel, +/obj/effect/floor_decal/industrial/outline/red, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"bu" = ( +/obj/machinery/atmospherics/portables_connector/aux, +/obj/effect/floor_decal/industrial/outline/blue, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"bv" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/fuel{ + icon_state = "map-fuel"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 10 + }, +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bw" = ( +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/visible/fuel{ + icon_state = "map-fuel"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/aux, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bx" = ( +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"by" = ( +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bz" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 8 + }, +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bA" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 8 + }, +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bB" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 8 + }, +/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/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bC" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/fuel, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bD" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/fuel{ + icon_state = "map-fuel"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/visible/aux, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bE" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 8 + }, +/obj/structure/cable/green{ + icon_state = "1-4" + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bF" = ( +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 10 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bG" = ( +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 5 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bH" = ( +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/visible/fuel{ + icon_state = "map-fuel"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/visible/aux, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bI" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/fuel{ + icon_state = "map-fuel"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 6 + }, +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bJ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/visible/aux, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bK" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/visible/aux{ + icon_state = "map-aux"; + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bL" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 10 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bM" = ( +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 5 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bN" = ( +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bO" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bP" = ( +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bQ" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/aux{ + icon_state = "map-aux"; + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bR" = ( +/obj/effect/shuttle_landmark/premade/fueldepot/north, +/turf/space, +/area/space) +"bS" = ( +/obj/effect/shuttle_landmark/premade/fueldepot/west, +/turf/space, +/area/space) +"bT" = ( +/obj/effect/shuttle_landmark/premade/fueldepot/east, +/turf/space, +/area/space) +"bU" = ( +/obj/effect/shuttle_landmark/premade/fueldepot/south, +/turf/space, +/area/space) +"bV" = ( +/obj/effect/overmap/visitable/sector/fueldepot, +/turf/space, +/area/space) +"bW" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/aux, +/obj/machinery/atmospherics/pipe/simple/visible/fuel, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bX" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 10 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bY" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel, +/obj/machinery/atmospherics/pipe/manifold/visible/aux{ + icon_state = "map-aux"; + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"bZ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/visible/aux, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"ca" = ( +/obj/machinery/atmospherics/portables_connector/aux{ + icon_state = "map_connector-aux"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/blue, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"cb" = ( +/obj/machinery/atmospherics/portables_connector/fuel{ + icon_state = "map_connector-fuel"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/red, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"cc" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"cd" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"ce" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 5 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"cf" = ( +/obj/machinery/atmospherics/binary/pump/aux{ + icon_state = "map_off-aux"; + dir = 4 + }, +/obj/machinery/atmospherics/binary/pump/fuel{ + icon_state = "map_off-fuel"; + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"cg" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 9 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"ch" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 8 + }, +/obj/structure/railing{ + icon_state = "railing0"; + dir = 1 + }, +/turf/space, +/area/space) +"ci" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 4 + }, +/turf/space, +/area/space) +"cj" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 8 + }, +/turf/space, +/area/space) +"ck" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 1 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/space, +/area/space) +"cl" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 1 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/space, +/area/space) +"cm" = ( +/obj/machinery/light/small, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"cn" = ( +/obj/machinery/atmospherics/pipe/tank/air{ + icon_state = "air_map"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"co" = ( +/obj/structure/cable/green{ + icon_state = "1-4" + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"cp" = ( +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 5 + }, +/obj/structure/cable/green{ + icon_state = "4-8"; + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"cq" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 6 + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"cr" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 9 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"cs" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"ct" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"cu" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"cv" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"cw" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"cx" = ( +/obj/machinery/light/small, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"cy" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning/dust, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"cz" = ( +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 6 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"cA" = ( +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"cB" = ( +/obj/machinery/atmospherics/binary/pump/fuel, +/obj/machinery/atmospherics/binary/pump/aux, +/obj/effect/floor_decal/industrial/outline, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"cC" = ( +/obj/machinery/atmospherics/portables_connector/fuel{ + icon_state = "map_connector-fuel"; + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/red, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"cD" = ( +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 5 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"cE" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/aux{ + icon_state = "map-aux"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"cF" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/visible/fuel{ + icon_state = "map-fuel"; + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"cG" = ( +/obj/machinery/atmospherics/portables_connector/aux{ + icon_state = "map_connector-aux"; + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/blue, +/turf/simulated/floor/tiled/techmaint/airless, +/area/tether_away/fueldepot) +"cH" = ( +/obj/machinery/atmospherics/pipe/simple/visible/fuel{ + icon_state = "intact-fuel"; + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/visible/aux{ + icon_state = "map-aux"; + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) +"cI" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/fuel{ + icon_state = "map-fuel"; + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible/aux{ + icon_state = "intact-aux"; + dir = 10 + }, +/obj/structure/catwalk, +/turf/simulated/shuttle/plating/airless, +/area/tether_away/fueldepot) + +(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 +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 +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 +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 +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 +bV +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 +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 +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 +"} +(4,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(5,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(6,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(7,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(8,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(9,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(10,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(11,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(12,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(13,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(14,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(15,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(16,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(17,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(18,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(19,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(20,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(21,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(22,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(23,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(24,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +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 +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 +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 +"} +(26,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(27,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(28,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(29,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(30,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(31,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(32,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(33,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(34,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +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 +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 +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 +"} +(36,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(37,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(38,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(39,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(41,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(42,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(43,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(44,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(45,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(46,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(47,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(48,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(49,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(50,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(51,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +bS +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(52,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(53,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 +aa +aa +aa +aa +aa +aa +aa +aa +ci +bv +bJ +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(54,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 +aa +aa +aa +aa +aa +aa +aa +ay +bg +bw +bK +ca +aC +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 +aa +aa +aa +aa +aa +aa +aa +"} +(55,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 +aa +aa +aa +aa +aa +aa +aa +ay +bh +bx +bL +cb +aC +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 +aa +aa +aa +aa +aa +aa +aa +"} +(56,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 +aa +aa +aa +aa +aa +aa +aa +ay +bi +by +bM +aj +aC +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 +aa +aa +aa +aa +aa +aa +aa +"} +(57,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 +aa +aa +aa +aa +aa +aa +aa +aa +cj +bz +bN +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 +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 +"} +(58,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 +aa +aa +aa +aa +aa +aa +aa +aa +ay +bz +bN +aC +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 +aa +aa +aa +aa +aa +aa +aa +aa +"} +(59,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 +aa +aa +aa +aa +aa +aa +aa +aa +ay +bz +bN +aC +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 +aa +aa +aa +aa +aa +aa +aa +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 +aa +aa +aa +aa +aa +aa +aa +aa +ay +bz +bN +aC +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 +aa +aa +aa +aa +aa +aa +aa +aa +"} +(61,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 +aa +aa +aa +aa +aa +aa +aa +aa +ay +bz +bN +aC +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 +aa +aa +aa +aa +aa +aa +aa +aa +"} +(62,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 +aa +aa +aa +aa +aa +aa +aa +aa +ay +bz +bN +aC +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 +aa +aa +aa +aa +aa +aa +aa +aa +"} +(63,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 +aq +at +at +at +aI +aa +aF +aF +aF +bz +bN +aF +aF +aF +aa +aq +at +at +at +aI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +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 +"} +(64,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 +ar +aD +aD +aD +aJ +aO +aF +aW +aT +bz +bN +bj +aG +aF +aa +cs +cw +cw +cw +cy +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 +"} +(65,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 +as +aE +aE +aE +aK +aP +aP +aX +bk +bA +bO +aP +aP +aP +aP +ct +aE +aE +aE +aN +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 +"} +(66,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 +aa +aa +aa +aa +aG +aa +aF +aY +bl +bz +bN +aG +aG +aF +aa +aG +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 +aa +aa +aa +aa +"} +(67,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 +aa +aa +aF +aF +aG +aF +aF +aZ +bc +bz +bN +aj +cm +aF +aF +aG +aF +aF +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 +aa +aa +"} +(68,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 +aw +aw +aw +aa +aa +aa +aa +aa +aa +aF +aG +aG +aG +aQ +ba +bm +bB +bP +be +be +co +aG +aG +aG +aF +aa +aa +aa +aa +aa +aa +aw +aw +aw +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 +"} +(69,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 +au +ad +ah +aj +ax +aw +aw +aw +aw +aw +aF +aH +aG +aG +aR +bb +bn +bC +bQ +ap +ap +cp +aG +aG +cx +aF +aw +aw +aw +aw +aw +au +cz +cB +cD +ax +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 +"} +(70,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 +bR +aa +ab +ae +ai +al +ao +ao +ao +ao +ao +ao +ao +ao +ao +ao +aS +bc +bo +bC +bQ +cc +cn +aU +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +cA +aj +cE +cH +aa +bU +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 +"} +(71,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 +ac +af +aj +am +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +cp +bc +bo +bC +bQ +cc +cn +cq +ao +ao +ao +ao +ao +ao +ao +ao +ao +ao +ai +al +cF +cI +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 +"} +(72,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 +az +ag +ak +an +ch +av +av +av +av +av +aF +aH +aG +aG +aU +bd +bp +bD +bW +cd +cd +cr +aG +aG +cx +aF +av +av +av +av +av +az +aj +cC +cG +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 +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 +"} +(73,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 +av +av +av +aa +aa +aa +aa +aa +aa +aF +aG +aG +aG +aV +be +bm +bE +bN +aj +aj +aj +aG +aG +aG +aF +aa +aa +aa +aa +aa +aa +av +av +av +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 +"} +(74,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 +aa +aa +aF +aF +aG +aF +aF +bf +bc +bz +bN +aj +cm +aF +aF +aG +aF +aF +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 +aa +aa +"} +(75,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 +aa +aa +aa +aa +aG +aa +aF +aG +bq +bz +bN +aG +aG +aF +aa +aG +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 +aa +aa +aa +aa +"} +(76,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 +aq +at +at +at +aL +aP +aP +aP +br +bA +bO +aP +aP +aP +aP +cu +at +at +at +aI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +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 +"} +(77,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 +ar +aD +aD +aD +aM +aa +aF +aG +bs +bz +bN +bs +aG +aF +aa +cv +cw +cw +cw +cy +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 +"} +(78,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 +as +aE +aE +aE +aN +aa +aF +aF +aF +bz +bN +aF +aF +aF +aa +as +aE +aE +aE +aN +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 +"} +(79,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 +aa +aa +aa +aa +aa +aa +aa +aa +ay +bz +bN +aC +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 +aa +aa +aa +aa +aa +aa +aa +aa +"} +(80,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 +aa +aa +aa +aa +aa +aa +aa +aa +ay +bz +bN +aC +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 +aa +aa +aa +aa +aa +aa +aa +aa +"} +(81,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 +aa +aa +aa +aa +aa +aa +aa +aa +ay +bz +bN +aC +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 +aa +aa +aa +aa +aa +aa +aa +aa +"} +(82,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 +aa +aa +aa +aa +aa +aa +aa +aa +ay +bz +bN +aC +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 +aa +aa +aa +aa +aa +aa +aa +aa +"} +(83,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 +aa +aa +aa +aa +aa +aa +aa +aa +ay +bz +bN +aC +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 +aa +aa +aa +aa +aa +aa +aa +aa +"} +(84,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 +aa +aa +aa +aa +aa +aa +aa +aa +au +bz +bN +ck +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 +aa +aa +aa +aa +aa +aa +aa +aa +"} +(85,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 +aa +aa +aa +aa +aa +aa +aa +ay +aj +bF +bX +ce +aC +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 +aa +aa +aa +aa +aa +aa +aa +"} +(86,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 +aa +aa +aa +aa +aa +aa +aa +ay +bt +bG +aj +cf +aC +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 +aa +aa +aa +aa +aa +aa +aa +"} +(87,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 +aa +aa +aa +aa +aa +aa +aa +ay +bu +bH +bY +cg +aC +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 +aa +aa +aa +aa +aa +aa +aa +"} +(88,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 +aa +aa +aa +aa +aa +aa +aa +aa +az +bI +bZ +cl +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 +aa +aa +aa +aa +aa +aa +aa +aa +"} +(89,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(90,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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +bT +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(91,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(92,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(93,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(94,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(95,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(96,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(97,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(98,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(99,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(100,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(101,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(102,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(103,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(104,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(105,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(106,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(107,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(108,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(109,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(110,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(111,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(112,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(113,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(114,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(115,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(116,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(117,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(118,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(119,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(120,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(121,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(122,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(123,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(124,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(125,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(126,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(127,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(128,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(129,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(130,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(131,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(132,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(133,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(134,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(135,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(136,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(137,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(138,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(139,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(140,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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} diff --git a/maps/tether/submaps/tether_misc.dmm b/maps/tether/submaps/tether_misc.dmm index 46b36efe270..7176f98c98f 100644 --- a/maps/tether/submaps/tether_misc.dmm +++ b/maps/tether/submaps/tether_misc.dmm @@ -436,25 +436,22 @@ /turf/simulated/floor/holofloor/tiled/dark, /area/holodeck/source_thunderdomecourt) "bs" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "burst_l" - }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry{ - dir = 1 - }, -/area/shuttle/supply) +/turf/simulated/fitness, +/area/holodeck/source_boxingcourt) "bt" = ( /obj/structure/bed/chair/holochair, /turf/simulated/floor/holofloor/wood, /area/holodeck/source_courtroom) "bu" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry{ +/obj/structure/fitness/boxing_ropes{ dir = 1 }, -/area/shuttle/supply) +/obj/structure/fitness/boxing_turnbuckle{ + dir = 8; + layer = 3.4 + }, +/turf/simulated/fitness, +/area/holodeck/source_boxingcourt) "bv" = ( /obj/structure/window/reinforced/holowindow{ dir = 1 @@ -463,27 +460,21 @@ /turf/simulated/floor/holofloor/wood, /area/holodeck/source_courtroom) "bw" = ( -/obj/structure/shuttle/engine/propulsion, -/obj/effect/shuttle_landmark{ - base_area = /area/space; - base_turf = /turf/space; - landmark_tag = "supply_cc"; - name = "Centcom Supply Depot" - }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry{ +/obj/structure/fitness/boxing_ropes{ dir = 1 }, -/area/shuttle/supply) +/turf/simulated/fitness, +/area/holodeck/source_boxingcourt) "bx" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "burst_r" - }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry{ +/obj/structure/fitness/boxing_ropes{ dir = 1 }, -/area/shuttle/supply) +/obj/structure/fitness/boxing_turnbuckle{ + dir = 4; + layer = 3.4 + }, +/turf/simulated/fitness, +/area/holodeck/source_boxingcourt) "by" = ( /obj/machinery/light{ dir = 8; @@ -498,9 +489,39 @@ }, /turf/simulated/shuttle/floor, /area/shuttle/supply) +"bA" = ( +/obj/structure/fitness/boxing_ropes{ + dir = 8 + }, +/turf/simulated/fitness, +/area/holodeck/source_boxingcourt) "bB" = ( /turf/simulated/floor/holofloor/desert, /area/holodeck/source_picnicarea) +"bC" = ( +/obj/structure/fitness/boxing_ropes{ + dir = 4 + }, +/turf/simulated/fitness, +/area/holodeck/source_boxingcourt) +"bD" = ( +/obj/structure/fitness/boxing_turnbuckle{ + dir = 8 + }, +/obj/structure/fitness/boxing_ropes_bottom, +/turf/simulated/fitness, +/area/holodeck/source_boxingcourt) +"bE" = ( +/obj/structure/fitness/boxing_ropes_bottom, +/turf/simulated/fitness, +/area/holodeck/source_boxingcourt) +"bF" = ( +/obj/structure/fitness/boxing_turnbuckle{ + dir = 4 + }, +/obj/structure/fitness/boxing_ropes_bottom, +/turf/simulated/fitness, +/area/holodeck/source_boxingcourt) "bG" = ( /obj/effect/floor_decal/spline/plain{ dir = 1 @@ -566,6 +587,35 @@ /obj/structure/bed/chair/holochair, /turf/simulated/floor/holofloor/wood, /area/holodeck/source_courtroom) +"bN" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "burst_l" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry{ + dir = 1 + }, +/area/shuttle/supply) +"bO" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry{ + dir = 1 + }, +/area/shuttle/supply) +"bP" = ( +/obj/structure/shuttle/engine/propulsion, +/obj/effect/shuttle_landmark{ + base_area = /area/space; + base_turf = /turf/space; + landmark_tag = "supply_cc"; + name = "Centcom Supply Depot" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry{ + dir = 1 + }, +/area/shuttle/supply) "bQ" = ( /obj/machinery/door/airlock/glass_external{ frequency = 1380; @@ -591,6 +641,15 @@ /obj/structure/table/woodentable/holotable, /turf/simulated/floor/holofloor/desert, /area/holodeck/source_picnicarea) +"bT" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "burst_r" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry{ + dir = 1 + }, +/area/shuttle/supply) "bU" = ( /obj/structure/flora/ausbushes/ywflowers, /obj/effect/floor_decal/spline/fancy/wood{ @@ -670,6 +729,20 @@ }, /turf/simulated/floor/holofloor/carpet, /area/holodeck/source_courtroom) +"cd" = ( +/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 = 4; + teleport_z_offset = 4 + }, +/turf/space, +/turf/space/transit/north, +/area/space) "cj" = ( /obj/effect/floor_decal/industrial/warning{ icon_state = "warning"; @@ -1195,19 +1268,6 @@ /obj/effect/overlay/coconut, /turf/simulated/floor/holofloor/beach/sand, /area/holodeck/source_beach) -"ev" = ( -/obj/machinery/door/window/holowindoor{ - base_state = "right"; - dir = 2; - icon_state = "right"; - name = "Red Corner" - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_boxingcourt) -"ew" = ( -/obj/structure/window/reinforced/holowindow, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_boxingcourt) "eJ" = ( /obj/structure/flora/tree/dead, /turf/simulated/floor/holofloor/snow, @@ -1222,33 +1282,6 @@ /obj/item/weapon/beach_ball, /turf/simulated/floor/holofloor/beach/sand, /area/holodeck/source_beach) -"eN" = ( -/obj/structure/window/reinforced/holowindow{ - dir = 4 - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_boxingcourt) -"eO" = ( -/obj/effect/floor_decal/corner/red/full{ - dir = 8 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) -"eP" = ( -/obj/effect/floor_decal/corner/red{ - dir = 5 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) -"eQ" = ( -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) -"eR" = ( -/obj/structure/window/reinforced/holowindow{ - dir = 8 - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_boxingcourt) "eS" = ( /obj/effect/floor_decal/industrial/danger, /turf/simulated/floor/tiled/steel, @@ -1351,30 +1384,6 @@ }, /turf/simulated/floor/holofloor/tiled, /area/holodeck/source_thunderdomecourt) -"fg" = ( -/obj/effect/floor_decal/corner/red{ - dir = 9 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) -"fh" = ( -/obj/effect/floor_decal/corner/blue/full{ - dir = 8 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) -"fi" = ( -/obj/effect/floor_decal/corner/blue/full{ - dir = 1 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) -"fj" = ( -/obj/effect/floor_decal/corner/green{ - dir = 6 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) "fn" = ( /obj/structure/holostool, /obj/effect/floor_decal/carpet{ @@ -1438,16 +1447,6 @@ }, /turf/simulated/floor/holofloor/tiled, /area/holodeck/source_thunderdomecourt) -"fw" = ( -/obj/effect/floor_decal/corner/blue/full, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) -"fx" = ( -/obj/effect/floor_decal/corner/blue/full{ - dir = 4 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) "fz" = ( /obj/effect/floor_decal/corner/green{ dir = 9 @@ -1472,18 +1471,6 @@ }, /turf/simulated/floor/holofloor/tiled, /area/holodeck/source_thunderdomecourt) -"fD" = ( -/obj/effect/floor_decal/corner/green{ - dir = 10 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) -"fE" = ( -/obj/effect/floor_decal/corner/green/full{ - dir = 4 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) "fG" = ( /obj/structure/flora/grass/brown, /turf/simulated/floor/holofloor/snow, @@ -1508,19 +1495,6 @@ icon_state = "beach" }, /area/holodeck/source_beach) -"fM" = ( -/obj/structure/window/reinforced/holowindow{ - dir = 1 - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_boxingcourt) -"fN" = ( -/obj/machinery/door/window/holowindoor{ - dir = 1; - name = "Green Corner" - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_boxingcourt) "fO" = ( /obj/structure/holostool, /obj/effect/floor_decal/carpet{ @@ -1725,10 +1699,6 @@ }, /turf/simulated/floor/holofloor/grass, /area/holodeck/holodorm/source_garden) -"hn" = ( -/obj/machinery/telecomms/relay/preset/centcom/tether/base_high, -/turf/unsimulated/floor/steel, -/area/centcom/control) "hx" = ( /turf/simulated/floor/holofloor/wood, /area/holodeck/holodorm/source_seating) @@ -1876,7 +1846,7 @@ /turf/space/transit/west, /area/space) "kh" = ( -/obj/machinery/telecomms/relay/preset/centcom/tether/base_mid, +/obj/machinery/telecomms/relay/preset/centcom/tether, /turf/unsimulated/floor/steel, /area/centcom/control) "kn" = ( @@ -1889,10 +1859,6 @@ /obj/machinery/telecomms/server/presets/centcomm, /turf/unsimulated/floor/steel, /area/centcom/control) -"kF" = ( -/obj/machinery/telecomms/relay/preset/centcom/tether/midpoint, -/turf/unsimulated/floor/steel, -/area/centcom/control) "le" = ( /obj/effect/floor_decal/transit/orange{ dir = 4 @@ -2054,10 +2020,6 @@ icon = 'icons/turf/transit_vr.dmi' }, /area/space) -"vt" = ( -/obj/machinery/telecomms/relay/preset/centcom/tether/station_high, -/turf/unsimulated/floor/steel, -/area/centcom/control) "vG" = ( /obj/effect/step_trigger/lost_in_space/tram, /turf/simulated/floor/maglev{ @@ -2127,6 +2089,7 @@ /area/space) "xe" = ( /obj/machinery/account_database{ + dir = 1; name = "CentComm Accounts database" }, /turf/unsimulated/floor/steel, @@ -2243,7 +2206,7 @@ /turf/simulated/sky/virgo3b/south, /area/space) "Ct" = ( -/obj/machinery/telecomms/relay/preset/centcom/tether/station_low, +/obj/machinery/ntnet_relay, /turf/unsimulated/floor/steel, /area/centcom/control) "Cw" = ( @@ -2256,20 +2219,12 @@ }, /turf/simulated/floor/tiled/steel, /area/centcom/simulated/main_hall) -"Dc" = ( -/obj/machinery/telecomms/relay/preset/centcom/tether/station_mid, -/turf/unsimulated/floor/steel, -/area/centcom/control) "Dk" = ( /obj/effect/floor_decal/industrial/warning{ dir = 8 }, /turf/simulated/floor/tiled/steel, /area/space) -"Dn" = ( -/obj/machinery/telecomms/relay/preset/centcom/tether/sci_outpost, -/turf/unsimulated/floor/steel, -/area/centcom/control) "Dw" = ( /obj/structure/table/standard, /obj/item/weapon/reagent_containers/food/snacks/chips, @@ -2335,10 +2290,6 @@ icon_state = "techfloor_grid" }, /area/space) -"FW" = ( -/obj/machinery/telecomms/relay/preset/centcom/underdark, -/turf/unsimulated/floor/steel, -/area/centcom/control) "Ga" = ( /turf/unsimulated/floor/steel, /area/centcom/control) @@ -2497,20 +2448,6 @@ }, /turf/simulated/floor/tiled/steel, /area/space) -"Lw" = ( -/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 = 4; - teleport_z_offset = 4 - }, -/turf/space, -/turf/space/transit/north, -/area/space) "Lz" = ( /obj/effect/step_trigger/teleporter/planetary_fall/virgo3b, /turf/simulated/sky/virgo3b/south, @@ -4851,10 +4788,6 @@ }, /turf/simulated/floor/tiled/white, /area/centcom/simulated/medical) -"ZA" = ( -/obj/machinery/telecomms/relay/preset/centcom/tether/base_low, -/turf/unsimulated/floor/steel, -/area/centcom/control) "ZC" = ( /obj/machinery/light{ icon_state = "tube1"; @@ -9378,10 +9311,10 @@ Jz Jz Jz Jz -Lw -Lw -Lw -Lw +cd +cd +cd +cd ap Xl OY @@ -9523,7 +9456,7 @@ jf Gs Gs Gs -Lw +cd ap Xl OY @@ -9665,7 +9598,7 @@ jf Gs Gs Gs -Lw +cd ap Xl OY @@ -9807,7 +9740,7 @@ jf Gs Gs Gs -Lw +cd ap Xl Xl @@ -9949,7 +9882,7 @@ jf Gs Gs Gs -Lw +cd ap ap ap @@ -10091,7 +10024,7 @@ jf Gs Gs Gs -Lw +cd ap ap ap @@ -10233,7 +10166,7 @@ jf Gs Gs Gs -Lw +cd ap ap ap @@ -10375,7 +10308,7 @@ jf Gs Gs Gs -Lw +cd ap ap ap @@ -10517,7 +10450,7 @@ jf Gs Gs Gs -Lw +cd ap ap ap @@ -10659,7 +10592,7 @@ jf Gs Gs Gs -Lw +cd ap ap ap @@ -10801,7 +10734,7 @@ jf Gs Gs Gs -Lw +cd ap ap ap @@ -10943,7 +10876,7 @@ jf Gs Gs Gs -Lw +cd ap ap ap @@ -11085,7 +11018,7 @@ jf Gs Gs Gs -Lw +cd ap ap ap @@ -11227,7 +11160,7 @@ jf Gs Gs Gs -Lw +cd ap ap ap @@ -11369,7 +11302,7 @@ jf Gs Gs Gs -Lw +cd ap ap ap @@ -11511,7 +11444,7 @@ jf Gs Gs Gs -Lw +cd ap ap ap @@ -11653,7 +11586,7 @@ jf Gs Gs Gs -Lw +cd ap ap ap @@ -11795,7 +11728,7 @@ jf Gs Gs Gs -Lw +cd ap ap ap @@ -11937,7 +11870,7 @@ jf Gs Gs Gs -Lw +cd ap ap ap @@ -12079,7 +12012,7 @@ jf Gs Gs Gs -Lw +cd ap ap ap @@ -12198,30 +12131,30 @@ ap ap ap ap -Lw -Lw -Lw -Lw -Lw -Lw -Lw -Lw -Lw -Lw -Lw -Lw -Lw -Lw -Lw -Lw -Lw -Lw -Lw -Lw -Lw -Lw -Lw -Lw +cd +cd +cd +cd +cd +cd +cd +cd +cd +cd +cd +cd +cd +cd +cd +cd +cd +cd +cd +cd +cd +cd +cd +cd ap ap ap @@ -17130,7 +17063,7 @@ ae wy rE Ga -HQ +Iq wl Up Vj @@ -17270,9 +17203,9 @@ ae ae ae wy -kF +HQ +Ga Ga -Iq wl Up Vj @@ -17838,9 +17771,9 @@ ae ae ae wy -Dc -Ga -hn +wy +wy +wy wl Up Vj @@ -17979,10 +17912,10 @@ ae ae ae ae -wy -vt -Ga -FW +ae +ae +ae +ae wl Up Vj @@ -18121,10 +18054,10 @@ ae ae ae ae -wy -Dn -Ga -ZA +ae +ae +ae +ae wl Up Vj @@ -18263,10 +18196,10 @@ ae ae ae ae -wy -wy -wy -wy +ae +ae +ae +ae wl Up Vj @@ -20673,7 +20606,7 @@ di by bc bc -bs +bN aq ae ae @@ -20815,7 +20748,7 @@ di bn bn dE -bu +bO aq ae ae @@ -20957,7 +20890,7 @@ di bn bn dE -bw +bP aq ae ae @@ -21099,7 +21032,7 @@ bn bn bn dE -bu +bO aq ae ae @@ -21241,7 +21174,7 @@ bn bz bc bc -bx +bT aq ae ae @@ -23493,10 +23426,10 @@ dB dY dY dY -eN -eN -eN -eN +dY +dY +dY +dY dY dY dY @@ -23634,12 +23567,12 @@ dw dB dY dY -ev -eO -fg -fg -eQ -fM +dY +bu +bA +bA +bD +dY eo dY fZ @@ -23776,12 +23709,12 @@ dw dB dY eo -ew -eP -fh -fw -fD -fM +dY +bw +bs +bs +bE +dY eo dY dB @@ -23918,12 +23851,12 @@ dw dB dY eo -ew -eP -fi -fx -fD -fM +dY +bw +bs +bs +bE +dY eo dY dB @@ -24060,12 +23993,12 @@ dx dB dY eo -ew -eQ -fj -fj -fE -fN +dY +bx +bC +bC +bF +dY dY dY dB @@ -24203,10 +24136,10 @@ dB dY dY dY -eR -eR -eR -eR +dY +dY +dY +dY dY dY dY diff --git a/maps/tether/tether-01-surface1.dmm b/maps/tether/tether-01-surface1.dmm index a2d2530e6f8..1bf1e4b8f71 100644 --- a/maps/tether/tether-01-surface1.dmm +++ b/maps/tether/tether-01-surface1.dmm @@ -41616,7 +41616,7 @@ aad aad aad aad -aah +aad aah aah aah @@ -41758,7 +41758,7 @@ aad aad aad aad -aah +aad aah aah aah @@ -41900,7 +41900,7 @@ aad aad aad aad -aah +aad aah aah aah diff --git a/maps/tether/tether-02-surface2.dmm b/maps/tether/tether-02-surface2.dmm index f98681f9b04..c654a6866cc 100644 --- a/maps/tether/tether-02-surface2.dmm +++ b/maps/tether/tether-02-surface2.dmm @@ -20553,15 +20553,6 @@ temperature = 80 }, /area/tcommsat/chamber) -"aMA" = ( -/obj/machinery/telecomms/relay/preset/tether/midpoint, -/turf/simulated/floor/bluegrid{ - name = "Mainframe Base"; - nitrogen = 100; - oxygen = 0; - temperature = 80 - }, -/area/tcommsat/chamber) "aMB" = ( /obj/machinery/telecomms/server/presets/common, /turf/simulated/floor/tiled/dark{ @@ -20835,16 +20826,8 @@ temperature = 80 }, /area/tcommsat/chamber) -"aNc" = ( -/obj/machinery/telecomms/relay/preset/tether/base_high, -/turf/simulated/floor/tiled/dark{ - nitrogen = 100; - oxygen = 0; - temperature = 80 - }, -/area/tcommsat/chamber) "aNd" = ( -/obj/machinery/telecomms/broadcaster/preset_right, +/obj/machinery/telecomms/broadcaster/preset_right/tether, /turf/simulated/floor/bluegrid{ name = "Mainframe Base"; nitrogen = 100; @@ -20870,14 +20853,6 @@ temperature = 80 }, /area/tcommsat/chamber) -"aNg" = ( -/obj/machinery/telecomms/relay/preset/tether/base_low, -/turf/simulated/floor/tiled/dark{ - nitrogen = 100; - oxygen = 0; - temperature = 80 - }, -/area/tcommsat/chamber) "aNh" = ( /obj/machinery/telecomms/bus/preset_four, /turf/simulated/floor/tiled/dark{ @@ -21104,15 +21079,6 @@ temperature = 80 }, /area/tcommsat/chamber) -"aNC" = ( -/obj/machinery/telecomms/relay/preset/tether/base_mid, -/turf/simulated/floor/bluegrid{ - name = "Mainframe Base"; - nitrogen = 100; - oxygen = 0; - temperature = 80 - }, -/area/tcommsat/chamber) "aND" = ( /obj/machinery/door/blast/regular{ density = 0; @@ -32280,18 +32246,18 @@ aab aab aab aab -acK -acK -acK -acK -acK -acK -acK +ajM +ajM +ajM +ajM +ajM +ajM +ajM aac aac -acK -acK -acK +ajM +ajM +ajM aab acI acI @@ -32422,13 +32388,13 @@ aab aab aab aab -acK -acK -acK -acK -acK -acK -acK +ajM +ajM +ajM +ajM +ajM +ajM +ajM aac aac aac @@ -32564,10 +32530,10 @@ aab aab aab aab -acK -acK -acK -acK +ajM +ajM +ajM +ajM aac aac aac @@ -32625,10 +32591,10 @@ aab aac aac aac -aab -aab -aab -aab +aac +aac +aac +aac aab aab aab @@ -32706,10 +32672,10 @@ aab aab aab aab -acK -acK -acK -acK +ajM +ajM +ajM +ajM aac aac aac @@ -32771,7 +32737,7 @@ aac aac aac aac -aab +aac aab aab aab @@ -32848,10 +32814,10 @@ aab aab aab aab -acK -acK -acK -acK +ajM +ajM +ajM +ajM aac aac aac @@ -32990,8 +32956,8 @@ aab aab aab aab -acK -acK +ajM +ajM aac aac aac @@ -33483,9 +33449,9 @@ aac aac aac aac -ajM -ajM -ajM +aac +aac +aac aab aab aab @@ -33625,9 +33591,9 @@ aac aac aac aac -ajM -ajM -ajM +aac +aac +aac aab aab aab @@ -33766,10 +33732,10 @@ aac aac aac aac -ajM -ajM -ajM -ajM +aac +aac +aac +aac aab aab aab @@ -33908,10 +33874,10 @@ aac aac aac aac -ajM -ajM -ajM -ajM +aac +aac +aac +aac aab aab aab @@ -34050,10 +34016,10 @@ aac aac aac aac -ajM -ajM -ajM -ajM +aac +aac +aac +aac aab aab aab @@ -34192,10 +34158,10 @@ aac aac aac aac -ajM -ajM -ajM -ajM +aac +aac +aac +aac aab aab aab @@ -34337,7 +34303,7 @@ aac aac aac aac -ajM +aac aab aab aab @@ -34479,7 +34445,7 @@ aac aac aac aac -ajM +aac aab aab aab @@ -34620,8 +34586,8 @@ aac aac aac aac -ajM -ajM +aac +aac aab aab aab @@ -34761,9 +34727,9 @@ aac aac aac aac -ajM -ajM -ajM +aac +aac +aac aab aab aab @@ -34903,8 +34869,8 @@ aac aac aac aac -ajM -aab +aac +aac aab aab aab @@ -35045,7 +35011,7 @@ aka aac aac aac -ajM +aac aab aab aab @@ -35187,7 +35153,7 @@ aka aac aac aac -ajM +aac aab aab aab @@ -35329,7 +35295,7 @@ aka aac aac aac -ajM +aac aab aab aab @@ -35471,7 +35437,7 @@ aka aac aac aac -ajM +aac aab aab aab @@ -37185,8 +37151,8 @@ aEi aka aac aac -ajM -ajM +aac +aac aab aab aab @@ -37249,7 +37215,7 @@ aab aab aab aab -aab +aac aac aac aac @@ -37327,8 +37293,8 @@ aFl aka aac aac -ajM -ajM +aac +aac aab aab aab @@ -37675,7 +37641,7 @@ aab aab aab aab -aab +aac aac aac aac @@ -43448,7 +43414,7 @@ aLE aLM aMz aLM -aNc +aLM aLM aLM aNL @@ -43872,11 +43838,11 @@ aXa aLo aLH aMe -aMA +aLD aMN aNe aNr -aNC +aLD aNN aOg aKh @@ -44300,7 +44266,7 @@ aLK aLM aLM aLM -aNg +aLM aLM aLM aNP diff --git a/maps/tether/tether-03-surface3.dmm b/maps/tether/tether-03-surface3.dmm index dc251a72d40..e69195c8f58 100644 --- a/maps/tether/tether-03-surface3.dmm +++ b/maps/tether/tether-03-surface3.dmm @@ -35524,8 +35524,8 @@ aab aab aab aab -aab -aab +aac +aac aab aac aac @@ -35534,8 +35534,8 @@ aab aab aab aab -aab -aab +aac +aac aab aab aab @@ -35676,10 +35676,10 @@ aac aac aac aac -aab -aab -aab -aab +aac +aac +aac +aac aab aab aab @@ -35793,11 +35793,11 @@ aac aac aac aac -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac aab aab aab @@ -35822,8 +35822,8 @@ aac aac aac aac -aab -aab +aac +aac aab aab aab @@ -35935,12 +35935,14 @@ aac aac aac aac +aac +aac +aac +aac +aac aab -aab -aab -aab -aab -aab +aac +aac aac aac aac @@ -35966,15 +35968,13 @@ aac aac aab aab -aab -aab -aab -aab -aab aac aac -aab -aab +aac +aac +aac +aac +aac aab aab aab @@ -36115,9 +36115,9 @@ aac aac aac aac -aab -aab -aab +aac +aac +aac aab aab aab @@ -36261,8 +36261,8 @@ aac aac aac aac -aab -aab +aac +aac aab aab aab @@ -36403,8 +36403,8 @@ aac aac aac aac -aab -aab +aac +aac aab aab aab @@ -36545,8 +36545,8 @@ aac aac aac aac -aab -aab +aac +aac aab aab aab @@ -36687,8 +36687,8 @@ aac aac aac aac -aab -aab +aac +aac aab aab aab @@ -36829,9 +36829,9 @@ aac aac aac aac -aab -aab -aab +aac +aac +aac aab aab aab @@ -36971,9 +36971,9 @@ aac aac aac aac -aab -aab -aab +aac +aac +aac aab aab aab @@ -37112,10 +37112,10 @@ aac aac aac aac -aab -aab -aab -aab +aac +aac +aac +aac aab aab aab @@ -37254,10 +37254,10 @@ aac aac aac aac -aab -aab -aab -aab +aac +aac +aac +aac aab aab aab @@ -37396,10 +37396,10 @@ aac aac aac aac -aab -aab -aab -aab +aac +aac +aac +aac aab aab aab @@ -37538,10 +37538,10 @@ aac aac aac aac -aab -aab -aab -aab +aac +aac +aac +aac aab aab aab @@ -37683,7 +37683,7 @@ aac aac aac aac -aab +aac aab aab aab @@ -37825,7 +37825,7 @@ aac aac aac aac -aMG +aac aMG aMG aMG @@ -37966,8 +37966,8 @@ aac aac aac aac -adG -adG +aac +aac adG adG adG @@ -39316,7 +39316,7 @@ aab aab aab aab -aab +aac aac aac aac @@ -40595,7 +40595,7 @@ aab aab aab aab -aab +aac aac aac aac @@ -41021,7 +41021,7 @@ aab aab aab aab -aab +aac aac aac aac @@ -41398,8 +41398,8 @@ aab aac aac aac -aac -aac +aab +aab aab aab aab @@ -41540,8 +41540,8 @@ aac aac aac aac -aac -aac +aab +aab aab aab aab @@ -41683,7 +41683,7 @@ aac aac aac aac -aac +aab aab aab aab @@ -41825,8 +41825,8 @@ aac aac aac aac -aac -aac +aab +aab aab aab aab @@ -49131,10 +49131,10 @@ aac aac aab aab -aab -aab -aab -aab +aac +aac +aac +aac aac aac aac @@ -49411,7 +49411,7 @@ aab aab aab aab -aab +aac aac aab aab @@ -49546,7 +49546,7 @@ aac aac aac aac -aab +aac aab aab aab diff --git a/maps/tether/tether-05-station1.dmm b/maps/tether/tether-05-station1.dmm index 987ab85a4ad..bc473fd7da8 100644 --- a/maps/tether/tether-05-station1.dmm +++ b/maps/tether/tether-05-station1.dmm @@ -10499,7 +10499,6 @@ icon_state = "alarm0"; pixel_y = -22 }, -/obj/machinery/telecomms/relay/preset/tether/station_mid, /turf/simulated/floor/tiled/techfloor, /area/crew_quarters/heads/chief) "asp" = ( @@ -22814,14 +22813,12 @@ /obj/effect/floor_decal/techfloor{ dir = 10 }, -/obj/machinery/telecomms/relay/preset/tether/station_high, /turf/simulated/floor/tiled/techfloor, /area/crew_quarters/heads/chief) "bYK" = ( /obj/effect/floor_decal/techfloor{ dir = 6 }, -/obj/machinery/telecomms/relay/preset/tether/station_low, /turf/simulated/floor/tiled/techfloor, /area/crew_quarters/heads/chief) "bYN" = ( diff --git a/maps/tether/tether-08-mining.dmm b/maps/tether/tether-08-mining.dmm index 342fc603025..7bf87c5ee58 100644 --- a/maps/tether/tether-08-mining.dmm +++ b/maps/tether/tether-08-mining.dmm @@ -773,10 +773,6 @@ /obj/structure/cable/green, /turf/simulated/floor/plating, /area/outpost/mining_main/maintenance) -"bG" = ( -/obj/machinery/telecomms/relay/preset/underdark, -/turf/simulated/floor/plating, -/area/outpost/mining_main/maintenance) "bH" = ( /obj/machinery/telecomms/relay/preset/mining, /turf/simulated/floor/plating, @@ -4104,7 +4100,7 @@ bd bl bq bz -bG +bp SF ab aF diff --git a/maps/tether/tether-09-solars.dmm b/maps/tether/tether-09-solars.dmm index 7fccc627e51..167568a6d10 100644 --- a/maps/tether/tether-09-solars.dmm +++ b/maps/tether/tether-09-solars.dmm @@ -1909,7 +1909,6 @@ /turf/simulated/floor/virgo3b, /area/mine/explored) "ed" = ( -/obj/machinery/telecomms/relay/preset/tether/sci_outpost, /turf/simulated/floor, /area/maintenance/substation/outpost) "ee" = ( diff --git a/maps/tether/tether.dm b/maps/tether/tether.dm index 4660e3d1aea..8c8790f0498 100644 --- a/maps/tether/tether.dm +++ b/maps/tether/tether.dm @@ -8,7 +8,8 @@ #include "tether_shuttle_defs.dm" #include "tether_shuttles.dm" #include "tether_telecomms.dm" - + #include "tether_jobs.dm" + #if !AWAY_MISSION_TEST //Don't include these for just testing away missions #include "tether-01-surface1.dmm" #include "tether-02-surface2.dmm" diff --git a/maps/tether/tether_defines.dm b/maps/tether/tether_defines.dm index b027c3b96ac..1ba9bea31c6 100644 --- a/maps/tether/tether_defines.dm +++ b/maps/tether/tether_defines.dm @@ -11,16 +11,19 @@ #define Z_LEVEL_MISC 10 #define Z_LEVEL_UNDERDARK 11 #define Z_LEVEL_PLAINS 12 -#define Z_LEVEL_ROGUEMINE_1 13 -#define Z_LEVEL_ROGUEMINE_2 14 -#define Z_LEVEL_ROGUEMINE_3 15 -#define Z_LEVEL_ROGUEMINE_4 16 -#define Z_LEVEL_BEACH 17 -#define Z_LEVEL_BEACH_CAVE 18 -#define Z_LEVEL_AEROSTAT 19 -#define Z_LEVEL_AEROSTAT_SURFACE 20 -#define Z_LEVEL_DEBRISFIELD 21 -#define Z_LEVEL_GATEWAY 22 +#define Z_LEVEL_OFFMAP1 13 +#define Z_LEVEL_OFFMAP2 14 +#define Z_LEVEL_ROGUEMINE_1 15 +#define Z_LEVEL_ROGUEMINE_2 16 +#define Z_LEVEL_ROGUEMINE_3 17 +#define Z_LEVEL_ROGUEMINE_4 18 +#define Z_LEVEL_BEACH 19 +#define Z_LEVEL_BEACH_CAVE 20 +#define Z_LEVEL_AEROSTAT 21 +#define Z_LEVEL_AEROSTAT_SURFACE 22 +#define Z_LEVEL_DEBRISFIELD 23 +#define Z_LEVEL_FUELDEPOT 24 +#define Z_LEVEL_GATEWAY 25 //Camera networks #define NETWORK_TETHER "Tether" @@ -98,12 +101,14 @@ NETWORK_COMMUNICATORS, NETWORK_ALARM_ATMOS, NETWORK_ALARM_POWER, - NETWORK_ALARM_FIRE + NETWORK_ALARM_FIRE, + NETWORK_TALON_HELMETS, + NETWORK_TALON_SHIP ) bot_patrolling = FALSE - allowed_spawns = list("Tram Station","Gateway","Cryogenic Storage","Cyborg Storage") + allowed_spawns = list("Tram Station","Gateway","Cryogenic Storage","Cyborg Storage","ITV Talon Cryo") spawnpoint_died = /datum/spawnpoint/tram spawnpoint_left = /datum/spawnpoint/tram spawnpoint_stayed = /datum/spawnpoint/cryo @@ -121,7 +126,9 @@ /area/crew_quarters/sleep/Dorm_3/holo, /area/crew_quarters/sleep/Dorm_5/holo, /area/crew_quarters/sleep/Dorm_7/holo, - /area/rnd/miscellaneous_lab) + /area/looking_glass/lg_1, + /area/rnd/miscellaneous_lab + ) //TFF 5/4/20 - Mining Ops move, airlock path change unit_test_exempt_from_atmos = list( @@ -134,10 +141,12 @@ lateload_z_levels = list( list("Tether - Misc","Tether - Underdark","Tether - Plains"), //Stock Tether lateload maps + list("Offmap Ship - Talon Z1","Offmap Ship - Talon Z2"), list("Asteroid Belt 1","Asteroid Belt 2","Asteroid Belt 3","Asteroid Belt 4"), list("Desert Planet - Z1 Beach","Desert Planet - Z2 Cave"), list("Remmi Aerostat - Z1 Aerostat","Remmi Aerostat - Z2 Surface"), - list("Debris Field - Z1 Space") + list("Debris Field - Z1 Space"), + list("Fuel Depot - Z1 Space") ) lateload_single_pick = list( @@ -197,34 +206,6 @@ Z_LEVEL_PLAINS ) -// Short range computers see only the six main levels, others can see the surrounding surface levels. -/datum/map/tether/get_map_levels(var/srcz, var/long_range = TRUE) - if (long_range && (srcz in map_levels)) - return map_levels - else if (srcz == Z_LEVEL_MISC) //technical levels - return list() // Nothing on these z-levels- sensors won't show, and GPSes won't see each other. - else if (srcz >= Z_LEVEL_SURFACE_LOW && srcz <= Z_LEVEL_SOLARS) //Zs 1-3, 5-9, Z4 will return same list, but is not included into it - return list( - Z_LEVEL_SURFACE_LOW, - Z_LEVEL_SURFACE_MID, - Z_LEVEL_SURFACE_HIGH, - Z_LEVEL_SPACE_LOW, - Z_LEVEL_SPACE_MID, - Z_LEVEL_SPACE_HIGH, - Z_LEVEL_SURFACE_MINE, - Z_LEVEL_SOLARS, - Z_LEVEL_PLAINS) - else if(srcz >= Z_LEVEL_BEACH && srcz <= Z_LEVEL_BEACH_CAVE) - return list( - Z_LEVEL_BEACH, - Z_LEVEL_BEACH_CAVE) - else if(srcz >= Z_LEVEL_AEROSTAT && srcz <= Z_LEVEL_AEROSTAT_SURFACE) - return list( - Z_LEVEL_AEROSTAT, - Z_LEVEL_AEROSTAT_SURFACE) - else - return list(srcz) //prevents runtimes when using CMC. any Z-level not defined above will be 'isolated' and only show to GPSes/CMCs on that same Z (e.g. CentCom). - // Overmap represetation of tether /obj/effect/overmap/visitable/sector/virgo3b name = "Virgo 3B" diff --git a/maps/tether/tether_jobs.dm b/maps/tether/tether_jobs.dm new file mode 100644 index 00000000000..a09d05a2478 --- /dev/null +++ b/maps/tether/tether_jobs.dm @@ -0,0 +1,195 @@ +/////////////////////////////////// +//// Talon Jobs +/datum/department/talon + name = DEPARTMENT_TALON + short_name = "Talon" + color = "#888888" + sorting_order = -2 + assignable = FALSE + visible = FALSE + +/datum/job/talon/captain + title = "Talon Captain" + flag = TALCAP + department_flag = TALON + departments_managed = list(DEPARTMENT_TALON) + job_description = "The captain's job is to generate profit through trade or other means such as salvage or even privateering." + supervisors = "yourself" + outfit_type = /decl/hierarchy/outfit/job/talon_captain + + offmap_spawn = TRUE + faction = "Station" //Required for SSjob to allow people to join as it + departments = list(DEPARTMENT_TALON) + total_positions = 1 + spawn_positions = 1 + selection_color = "#999999" + economic_modifier = 7 + minimal_player_age = 14 + pto_type = null + access = list(access_talon) + minimal_access = list(access_talon) + +/datum/job/talon/doctor + title = "Talon Doctor" + flag = TALDOC + department_flag = TALON + job_description = "The doctor's job is to make sure the crew of the ITV Talon remain in good health and to monitor them when away from the ship." + supervisors = "the ITV Talon's captain" + outfit_type = /decl/hierarchy/outfit/job/talon_doctor + + offmap_spawn = TRUE + faction = "Station" //Required for SSjob to allow people to join as it + departments = list(DEPARTMENT_TALON) + total_positions = 1 + spawn_positions = 1 + selection_color = "#aaaaaa" + economic_modifier = 5 + minimal_player_age = 14 + pto_type = null + access = list(access_talon) + minimal_access = list(access_talon) + +/datum/job/talon/engineer + title = "Talon Engineer" + flag = TALENG + department_flag = TALON + job_description = "The engineer's job is to ensure the ITV Talon remains in tip-top shape and to repair any damage as well as manage the shields." + supervisors = "the ITV Talon's captain" + outfit_type = /decl/hierarchy/outfit/job/talon_engineer + + offmap_spawn = TRUE + faction = "Station" //Required for SSjob to allow people to join as it + departments = list(DEPARTMENT_TALON) + total_positions = 1 + spawn_positions = 1 + selection_color = "#aaaaaa" + economic_modifier = 5 + minimal_player_age = 14 + pto_type = null + access = list(access_talon) + minimal_access = list(access_talon) + +/datum/job/talon/pilot + title = "Talon Pilot" + flag = TALPIL + department_flag = TALON + job_description = "The pilot's job is to fly the ITV Talon in the most efficient and profitable way possible." + supervisors = "the ITV Talon's captain" + outfit_type = /decl/hierarchy/outfit/job/talon_pilot + + offmap_spawn = TRUE + faction = "Station" //Required for SSjob to allow people to join as it + departments = list(DEPARTMENT_TALON) + total_positions = 1 + spawn_positions = 1 + selection_color = "#aaaaaa" + economic_modifier = 5 + minimal_player_age = 14 + pto_type = null + access = list(access_talon) + minimal_access = list(access_talon) + +/datum/job/talon/guard + title = "Talon Guard" + flag = TALSEC + department_flag = TALON + job_description = "The guard's job is to keep the crew of the ITV Talon safe and ensure the captain's wishes are carried out." + supervisors = "the ITV Talon's captain" + outfit_type = /decl/hierarchy/outfit/job/talon_security + + offmap_spawn = TRUE + faction = "Station" //Required for SSjob to allow people to join as it + departments = list(DEPARTMENT_TALON) + total_positions = 1 + spawn_positions = 1 + selection_color = "#aaaaaa" + economic_modifier = 5 + minimal_player_age = 14 + pto_type = null + access = list(access_talon) + minimal_access = list(access_talon) + +/decl/hierarchy/outfit/job/talon_captain + name = OUTFIT_JOB_NAME("Talon Captain") + + id_type = /obj/item/weapon/card/id/gold + id_slot = slot_wear_id + pda_type = null + + l_ear = /obj/item/device/radio/headset/talon + glasses = /obj/item/clothing/glasses/sunglasses + uniform = /obj/item/clothing/under/rank/captain + shoes = /obj/item/clothing/shoes/brown + backpack = /obj/item/weapon/storage/backpack/captain + satchel_one = /obj/item/weapon/storage/backpack/satchel/cap + messenger_bag = /obj/item/weapon/storage/backpack/messenger/com + +/decl/hierarchy/outfit/job/talon_pilot + name = OUTFIT_JOB_NAME("Talon Pilot") + id_pda_assignment = "Pilot" + + id_slot = slot_wear_id + pda_type = null + flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL + + l_ear = /obj/item/device/radio/headset/talon + shoes = /obj/item/clothing/shoes/black + uniform = /obj/item/clothing/under/rank/pilot1 + suit = /obj/item/clothing/suit/storage/toggle/bomber/pilot + gloves = /obj/item/clothing/gloves/fingerless + glasses = /obj/item/clothing/glasses/fakesunglasses/aviator + +/decl/hierarchy/outfit/job/talon_doctor + name = OUTFIT_JOB_NAME("Talon Doctor") + hierarchy_type = /decl/hierarchy/outfit/job + + id_type = /obj/item/weapon/card/id/medical + id_slot = slot_wear_id + pda_type = null + + l_ear = /obj/item/device/radio/headset/talon + shoes = /obj/item/clothing/shoes/white + backpack = /obj/item/weapon/storage/backpack/medic + satchel_one = /obj/item/weapon/storage/backpack/satchel/med + messenger_bag = /obj/item/weapon/storage/backpack/messenger/med + uniform = /obj/item/clothing/under/rank/medical + suit = /obj/item/clothing/suit/storage/toggle/labcoat + l_hand = /obj/item/weapon/storage/firstaid/regular + r_pocket = /obj/item/device/flashlight/pen + +/decl/hierarchy/outfit/job/talon_security + name = OUTFIT_JOB_NAME("Talon Security") + hierarchy_type = /decl/hierarchy/outfit/job + + id_type = /obj/item/weapon/card/id/security + id_slot = slot_wear_id + pda_type = null + backpack_contents = list(/obj/item/weapon/handcuffs = 1) + + l_ear = /obj/item/device/radio/headset/talon + gloves = /obj/item/clothing/gloves/black + shoes = /obj/item/clothing/shoes/boots/jackboots + backpack = /obj/item/weapon/storage/backpack/security + satchel_one = /obj/item/weapon/storage/backpack/satchel/sec + messenger_bag = /obj/item/weapon/storage/backpack/messenger/sec + uniform = /obj/item/clothing/under/rank/security + l_pocket = /obj/item/device/flash + +/decl/hierarchy/outfit/job/talon_engineer + name = OUTFIT_JOB_NAME("Talon Engineer") + hierarchy_type = /decl/hierarchy/outfit/job + + id_type = /obj/item/weapon/card/id/engineering + id_slot = slot_wear_id + pda_type = null + flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL + + l_ear = /obj/item/device/radio/headset/talon + belt = /obj/item/weapon/storage/belt/utility/full + shoes = /obj/item/clothing/shoes/boots/workboots + r_pocket = /obj/item/device/t_scanner + backpack = /obj/item/weapon/storage/backpack/industrial + satchel_one = /obj/item/weapon/storage/backpack/satchel/eng + messenger_bag = /obj/item/weapon/storage/backpack/messenger/engi + uniform = /obj/item/clothing/under/rank/atmospheric_technician + belt = /obj/item/weapon/storage/belt/utility/atmostech diff --git a/maps/tether/tether_phoronlock.dm b/maps/tether/tether_phoronlock.dm index cddc6e256cb..4921680f15f 100644 --- a/maps/tether/tether_phoronlock.dm +++ b/maps/tether/tether_phoronlock.dm @@ -27,7 +27,7 @@ obj/machinery/airlock_sensor/phoron/process() if(abs(pressure - previousPressure) > 0.1 || previousPressure == null || abs(phoron - previousPhoron) > 0.1 || previousPhoron == null) var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal + signal.transmission_method = TRANSMISSION_RADIO //radio signal signal.data["tag"] = id_tag signal.data["timestamp"] = world.time signal.data["pressure"] = num2text(pressure) @@ -81,7 +81,7 @@ obj/machinery/airlock_sensor/phoron/airlock_exterior if(!radio_connection) return 0 var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal + signal.transmission_method = TRANSMISSION_RADIO signal.source = src signal.data = list( "tag" = scrub_id, diff --git a/maps/tether/tether_telecomms.dm b/maps/tether/tether_telecomms.dm index e64a33d40c2..5f7cd195994 100644 --- a/maps/tether/tether_telecomms.dm +++ b/maps/tether/tether_telecomms.dm @@ -3,94 +3,31 @@ // #### Relays #### // Telecomms doesn't know about connected z-levels, so we need relays even for the other surface levels. -/obj/machinery/telecomms/relay/preset/tether/base_low - id = "Base Relay 1" +/obj/machinery/telecomms/relay/preset/tether + id = "Tether Relay" listening_level = Z_LEVEL_SURFACE_LOW - autolinkers = list("tbl_relay") + autolinkers = list("tether_relay") -/obj/machinery/telecomms/relay/preset/centcom/tether/base_low +/obj/machinery/telecomms/relay/preset/centcom/tether listening_level = Z_LEVEL_SURFACE_LOW -/obj/machinery/telecomms/relay/preset/tether/base_mid - id = "Base Relay 2" - listening_level = Z_LEVEL_SURFACE_MID - autolinkers = list("tbm_relay") - -/obj/machinery/telecomms/relay/preset/centcom/tether/base_mid - listening_level = Z_LEVEL_SURFACE_MID - -/obj/machinery/telecomms/relay/preset/tether/base_high - id = "Base Relay 3" - listening_level = Z_LEVEL_SURFACE_HIGH - autolinkers = list("tbh_relay") - -/obj/machinery/telecomms/relay/preset/centcom/tether/base_high - listening_level = Z_LEVEL_SURFACE_HIGH - -//Some coverage for midpoint -/obj/machinery/telecomms/relay/preset/tether/midpoint - id = "Midpoint Relay" - listening_level = Z_LEVEL_TRANSIT - autolinkers = list("tmp_relay") - -/obj/machinery/telecomms/relay/preset/centcom/tether/midpoint - listening_level = Z_LEVEL_TRANSIT - -// 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" - listening_level = Z_LEVEL_SPACE_LOW - autolinkers = list("tsl_relay") - -/obj/machinery/telecomms/relay/preset/centcom/tether/station_low - listening_level = Z_LEVEL_SPACE_LOW - -/obj/machinery/telecomms/relay/preset/tether/station_mid - id = "Station Relay 2" - listening_level = Z_LEVEL_SPACE_MID - autolinkers = list("tsm_relay") - -/obj/machinery/telecomms/relay/preset/centcom/tether/station_mid - listening_level = Z_LEVEL_SPACE_MID - -/obj/machinery/telecomms/relay/preset/tether/station_high - id = "Station Relay 3" - listening_level = Z_LEVEL_SPACE_HIGH - autolinkers = list("tsh_relay") - -/obj/machinery/telecomms/relay/preset/centcom/tether/station_high - listening_level = Z_LEVEL_SPACE_HIGH - -/obj/machinery/telecomms/relay/preset/tether/sci_outpost - id = "Science Outpost Relay" - listening_level = Z_LEVEL_SOLARS - autolinkers = list("sci_o_relay") - -/obj/machinery/telecomms/relay/preset/centcom/tether/sci_outpost - listening_level = Z_LEVEL_SOLARS - -/obj/machinery/telecomms/relay/preset/underdark - id = "Mining Underground Relay" - listening_level = Z_LEVEL_UNDERDARK - autolinkers = list("ud_relay") - -/obj/machinery/telecomms/relay/preset/centcom/underdark - listening_level = Z_LEVEL_UNDERDARK - // #### Hub #### /obj/machinery/telecomms/hub/preset/tether id = "Hub" network = "tcommsat" autolinkers = list("hub", - "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", + "tether_relay", "c_relay", "m_relay", "r_relay", "science", "medical", "supply", "service", "common", "command", "engineering", "security", "explorer", "unused", "hb_relay", "receiverA", "broadcasterA" ) /obj/machinery/telecomms/receiver/preset_right/tether + id = "tether_rx" freq_listening = list(AI_FREQ, SCI_FREQ, MED_FREQ, SUP_FREQ, SRV_FREQ, COMM_FREQ, ENG_FREQ, SEC_FREQ, ENT_FREQ, EXP_FREQ) +/obj/machinery/telecomms/broadcaster/preset_right/tether + id = "tether_tx" + /obj/machinery/telecomms/bus/preset_two/tether freq_listening = list(SUP_FREQ, SRV_FREQ, EXP_FREQ) diff --git a/maps/tether/tether_things.dm b/maps/tether/tether_things.dm index a104a929982..035c704af3b 100644 --- a/maps/tether/tether_things.dm +++ b/maps/tether/tether_things.dm @@ -367,7 +367,7 @@ var/global/list/latejoin_tram = list() /obj/structure/closet/secure_closet/guncabinet/excursion/New() ..() for(var/i = 1 to 3) - new /obj/item/weapon/gun/energy/frontier/locked(src) + new /obj/item/weapon/gun/energy/locked/frontier(src) // Used at centcomm for the elevator /obj/machinery/cryopod/robot/door/dorms diff --git a/maps/~map_system/maps.dm b/maps/~map_system/maps.dm index c3dd9ba0f15..8a1f360c719 100644 --- a/maps/~map_system/maps.dm +++ b/maps/~map_system/maps.dm @@ -159,20 +159,44 @@ var/list/all_maps = list() empty_levels = list(world.maxz) return pick(empty_levels) -// Get the list of zlevels that a computer on srcz can see maps of (for power/crew monitor, cameras, etc) -// The long_range parameter expands the coverage. Default is to return map_levels for long range otherwise just srcz. -// zLevels outside station_levels will return an empty list. -/datum/map/proc/get_map_levels(var/srcz, var/long_range = TRUE) - if (long_range && (srcz in map_levels)) - return map_levels - else if (srcz in station_levels) - return list(srcz) +// Get a list of 'nearby' or 'connected' zlevels. +// You should at least return a list with the given z if nothing else. +/datum/map/proc/get_map_levels(var/srcz, var/long_range = FALSE, var/om_range = -1) + //Overmap behavior + if(use_overmap) + //Get what sector we're in + var/obj/effect/overmap/visitable/O = get_overmap_sector(srcz) + if(!istype(O)) + //Anything in multiz then (or just themselves) + return GetConnectedZlevels(srcz) + + //Just the sector we're in + if(om_range == -1) + return O.map_z.Copy() + + //Otherwise every sector we're on top of + var/list/connections = list() + var/turf/T = get_turf(O) + var/turfrange = long_range ? max(0, om_range) : om_range + for(var/obj/effect/overmap/visitable/V in range(turfrange, T)) + connections += V.map_z // Adding list to list adds contents + return connections + + //Traditional behavior else - return list() + //If long range, and they're at least in contact levels, return contact levels. + if (long_range && (srcz in contact_levels)) + return contact_levels.Copy() + //If in station levels, return station levels + else if (srcz in station_levels) + return station_levels.Copy() + //Anything in multiz then (or just themselves) + else + return GetConnectedZlevels(srcz) /datum/map/proc/get_zlevel_name(var/index) var/datum/map_z_level/Z = zlevels["[index]"] - return Z.name + return Z?.name // Access check is of the type requires one. These have been carefully selected to avoid allowing the janitor to see channels he shouldn't // This list needs to be purged but people insist on adding more cruft to the radio. @@ -194,10 +218,9 @@ var/list/all_maps = list() ) /datum/map/proc/get_skybox_datum(z) - if(map_levels["[z]"]) - var/datum/map_z_level/picked = map_levels["[z]"] - if(picked.custom_skybox) - return picked.custom_skybox + var/datum/map_z_level/picked = zlevels["[z]"] + if(picked?.custom_skybox) + return picked.custom_skybox return default_skybox diff --git a/nano/images/nanomap_z13.png b/nano/images/nanomap_z13.png new file mode 100644 index 00000000000..6f87d9911fd Binary files /dev/null and b/nano/images/nanomap_z13.png differ diff --git a/nano/images/nanomap_z14.png b/nano/images/nanomap_z14.png new file mode 100644 index 00000000000..84d106a5ac5 Binary files /dev/null and b/nano/images/nanomap_z14.png differ diff --git a/nano/templates/sec_camera.tmpl b/nano/templates/sec_camera.tmpl index 1d46f1868f8..21ecea71e78 100644 --- a/nano/templates/sec_camera.tmpl +++ b/nano/templates/sec_camera.tmpl @@ -8,7 +8,8 @@ Used In File(s): \code\game\machinery\computer\camera.dm {{:helper.link('Reset', 'refresh', {'reset' : 1})}}
      -
      Current Camera: 
      +
      Current Camera: 
      +
      {{if data.current_camera}}
      {{:data.current_camera.name}}
      {{else}} diff --git a/nano/templates/shield_generator.tmpl b/nano/templates/shield_generator.tmpl new file mode 100644 index 00000000000..b93ddc62209 --- /dev/null +++ b/nano/templates/shield_generator.tmpl @@ -0,0 +1,158 @@ +{{if data.offline_for}} +

      EMERGENCY SHUTDOWN

      + An emergency shutdown has been initiated - generator cooling down
      + Please wait until the generator cools down before resuming operation. Estimated time left: {{:data.offline_for}} seconds. +{{else}} +

      SYSTEM STATUS

      +
      +
      + Generator is: +
      +
      + {{if data.running == 2}} + {{if data.overloaded}} + Recovering + {{else}} + Active + {{/if}} + {{else data.running == 1}} + Shutting Down + {{else data.running == 3}} + Inactive + {{else data.running == 4}} + Spinning Up  + {{if data.target_radius != data.field_radius}} + (Adjusting Radius) + {{else}} + ({{:data.spinup_counter * 2}}s) + {{/if}} + {{else}} + Offline + {{/if}} +
      +
      +
      +
      + Energy Storage: +
      +
      + {{:data.current_energy}}/{{:data.max_energy}} MJ ({{:data.percentage_energy}}%) +
      +
      +
      +
      + Shield Integrity: +
      +
      + {{:data.field_integrity}}% +
      +
      +
      +
      + Mitigation: +
      +
      + {{:data.mitigation_em}}% EM / {{:data.mitigation_physical}}% PH / {{:data.mitigation_heat}}% HE / {{:data.mitigation_max}}% MAX +
      +
      +
      +
      + Upkeep Energy Use: +
      +
      + {{:data.upkeep_power_usage}} kW +
      +
      +
      +
      + Total Energy Use: +
      +
      + {{if data.input_cap_kw}} + {{:data.power_usage}} / {{:data.input_cap_kw}} kW + {{else}} + {{:data.power_usage}} kW (No Limit) + {{/if}} +
      +
      +
      +
      + Field Size: +
      +
      + {{:data.functional_segments}} / {{:data.total_segments}} m2 (radius {{:data.field_radius}}, target {{:data.target_radius}}) +
      +
      +

      CONTROLS

      + + + {{if (data.running >= 2)}} + + {{else}} + + {{/if}} + {{else}} + + + + +
      {{:helper.link('Turn off', null, {'begin_shutdown' : '1'})}} + {{if (data.running == 3)}} + {{:helper.link('Activate', null, {'toggle_idle' : '0'})}} {{:helper.link('Deactivate', null, {'toggle_idle' : '1'})}} {{:helper.link('Turn on', null, {'start_generator' : '1'})}} + {{/if}} + {{if data.running}} + {{if data.hacked}} + {{:helper.link('EMERGENCY SHUTDOWN', null, {'emergency_shutdown' : '1'}, null, 'redButton')}} + {{/if}} + {{/if}} + +
      {{:helper.link('Set Field Range', null, {'set_range' : '1'})}} + {{:helper.link('Set Input Cap', null, {'set_input_cap' : '1'})}} +
      Set inactive power use intensity: + {{for data.idle_valid_values}} + {{:helper.link(value, null, {'switch_idle' : value}, (value == data.idle_multiplier) ? 'selected' : (data.running == 4 ? 'disabled' : null))}} + {{/for}} +
      +

      FIELD CALIBRATION

      +
      + {{for data.modes}} +
      +
      + Mode: +
      +
      + {{:value.name}} +
      +
      +
      +
      + Description: +
      +
      + {{:value.desc}} +
      +
      +
      +
      + Status: +
      +
      + {{if value.status}} + Enabled + {{else}} + Disabled + {{/if}} + {{:helper.link('Toggle', null, {'toggle_mode' : value.flag})}} +
      +
      +
      +
      + Multiplier: +
      +
      + {{:value.multiplier}} +
      +
      +
      + {{/for}} +{{/if}} \ No newline at end of file diff --git a/nano/templates/shuttle_control_console_exploration.tmpl b/nano/templates/shuttle_control_console_exploration.tmpl index 17f5a0b2d29..e368f484dba 100644 --- a/nano/templates/shuttle_control_console_exploration.tmpl +++ b/nano/templates/shuttle_control_console_exploration.tmpl @@ -49,6 +49,12 @@ ERROR {{/if}}
      +
      + Docking Codes: +
      +
      + {{:helper.link(data.docking_codes ? data.docking_codes : 'Not set', null, {'set_codes' : '1'}, null , null)}} +
    {{/if}} diff --git a/nano/templates/uplink.tmpl b/nano/templates/uplink.tmpl index 470f27064cb..0773883d703 100644 --- a/nano/templates/uplink.tmpl +++ b/nano/templates/uplink.tmpl @@ -4,6 +4,61 @@ Title: Syndicate Uplink, uses some javascript to change nanoUI up a bit. Used In File(s): \code\game\objects\items\devices\uplinks.dm --> {{:helper.syndicateMode()}} + + +

    {{:data.welcome}}


    @@ -11,10 +66,14 @@ Used In File(s): \code\game\objects\items\devices\uplinks.dm Functions:
    - {{:helper.link('Request Items', 'gear', {'menu' : 0}, null, 'fixedLeftWider')}} - {{:helper.link('Exploitable Information', 'gear', {'menu' : 2}, null, 'fixedLeftWider')}} - {{:helper.link('Return', 'arrowreturn-1-w', {'return' : 1}, null, 'fixedLeft')}} - {{:helper.link('Close', 'gear', {'lock' : "1"}, null, 'fixedLeft')}} +
    + {{:helper.link('Request Items', 'gear', {'menu' : 0}, null, 'fixedLeftWider')}} + {{:helper.link('Exploitable Information', 'gear', {'menu' : 2}, null, 'fixedLeftWider')}} +
    +
    + {{:helper.link('Return', 'arrowreturn-1-w', {'return' : 1}, null, 'fixedLeft')}} + {{:helper.link('Close', 'gear', {'lock' : "1"}, null, 'fixedLeft')}} +

    @@ -28,9 +87,10 @@ Used In File(s): \code\game\objects\items\devices\uplinks.dm + {{if data.menu == 0}} {{if data.discount_amount < 100}} -
    +
    Currently discounted:
    @@ -40,24 +100,37 @@ Used In File(s): \code\game\objects\items\devices\uplinks.dm
    {{/if}} -

    Categories:

    - {{for data.categories}} -
    - {{:helper.link(value.name, 'gear', {'menu' : 1, 'category' : value.ref})}} +
    +
    Categories
    + {{for data.categories}} +
    + {{:helper.link(value.name, 'gear', {'category' : value.ref}, (value.name == data.current_category) ? 'categoryActive' : '', 'category')}} +
    + {{/for}} +
    + +
    +
    + Request Items
    - {{/for}} -{{else data.menu == 1}} -

    Request items:

    - Each item costs a number of tele-crystals as indicated by the number following their name. - - {{for data.items}} -
    - {{:helper.link(value.name, 'gear', {'buy_item' : value.ref}, value.can_buy ? null : 'disabled')}} - {{:value.cost}} +
    +
    +
    + {{for data.items}} +
    +
    + +
    {{:value.cost}} points
    +
    +
    + {{/for}} +
    +
    -
    - {{:value.description}} -
    - {{/for}} +
    + {{else data.menu == 2}}

    Information Record List:


    diff --git a/sound/effects/light_flicker.ogg b/sound/effects/light_flicker.ogg new file mode 100644 index 00000000000..58be2c6ebda Binary files /dev/null and b/sound/effects/light_flicker.ogg differ diff --git a/sound/goonstation/LICENSE.md b/sound/goonstation/LICENSE.md new file mode 100644 index 00000000000..bb6102702e6 --- /dev/null +++ b/sound/goonstation/LICENSE.md @@ -0,0 +1,2 @@ +All files located in this directory and any subdirectories are licensed under the +Creative Commons 3.0 BY-NC-SA license (https://creativecommons.org/licenses/by-nc-sa/3.0) \ No newline at end of file diff --git a/sound/goonstation/industrial/AncientPowerPlant_Creaking1.ogg b/sound/goonstation/industrial/AncientPowerPlant_Creaking1.ogg new file mode 100644 index 00000000000..c08636ef73f Binary files /dev/null and b/sound/goonstation/industrial/AncientPowerPlant_Creaking1.ogg differ diff --git a/sound/goonstation/industrial/AncientPowerPlant_Creaking2.ogg b/sound/goonstation/industrial/AncientPowerPlant_Creaking2.ogg new file mode 100644 index 00000000000..5909357c025 Binary files /dev/null and b/sound/goonstation/industrial/AncientPowerPlant_Creaking2.ogg differ diff --git a/sound/goonstation/industrial/AncientPowerPlant_Drone1.ogg b/sound/goonstation/industrial/AncientPowerPlant_Drone1.ogg new file mode 100644 index 00000000000..c0a464860a9 Binary files /dev/null and b/sound/goonstation/industrial/AncientPowerPlant_Drone1.ogg differ diff --git a/sound/goonstation/industrial/AncientPowerPlant_Drone2.ogg b/sound/goonstation/industrial/AncientPowerPlant_Drone2.ogg new file mode 100644 index 00000000000..0435e538732 Binary files /dev/null and b/sound/goonstation/industrial/AncientPowerPlant_Drone2.ogg differ diff --git a/sound/goonstation/industrial/AncientPowerPlant_Drone3.ogg b/sound/goonstation/industrial/AncientPowerPlant_Drone3.ogg new file mode 100644 index 00000000000..edf61c73da6 Binary files /dev/null and b/sound/goonstation/industrial/AncientPowerPlant_Drone3.ogg differ diff --git a/sound/goonstation/industrial/LavaPowerPlant_FallingMetal1.ogg b/sound/goonstation/industrial/LavaPowerPlant_FallingMetal1.ogg new file mode 100644 index 00000000000..9b70ed712e6 Binary files /dev/null and b/sound/goonstation/industrial/LavaPowerPlant_FallingMetal1.ogg differ diff --git a/sound/goonstation/industrial/LavaPowerPlant_FallingMetal2.ogg b/sound/goonstation/industrial/LavaPowerPlant_FallingMetal2.ogg new file mode 100644 index 00000000000..4035dd8b852 Binary files /dev/null and b/sound/goonstation/industrial/LavaPowerPlant_FallingMetal2.ogg differ diff --git a/sound/goonstation/industrial/LavaPowerPlant_Rumbling1.ogg b/sound/goonstation/industrial/LavaPowerPlant_Rumbling1.ogg new file mode 100644 index 00000000000..41119f2cb64 Binary files /dev/null and b/sound/goonstation/industrial/LavaPowerPlant_Rumbling1.ogg differ diff --git a/sound/goonstation/industrial/LavaPowerPlant_Rumbling2.ogg b/sound/goonstation/industrial/LavaPowerPlant_Rumbling2.ogg new file mode 100644 index 00000000000..6223cdb9187 Binary files /dev/null and b/sound/goonstation/industrial/LavaPowerPlant_Rumbling2.ogg differ diff --git a/sound/goonstation/industrial/LavaPowerPlant_Rumbling3.ogg b/sound/goonstation/industrial/LavaPowerPlant_Rumbling3.ogg new file mode 100644 index 00000000000..3dec3c0ef72 Binary files /dev/null and b/sound/goonstation/industrial/LavaPowerPlant_Rumbling3.ogg differ diff --git a/sound/goonstation/industrial/LavaPowerPlant_SteamHiss1.ogg b/sound/goonstation/industrial/LavaPowerPlant_SteamHiss1.ogg new file mode 100644 index 00000000000..d50109322cb Binary files /dev/null and b/sound/goonstation/industrial/LavaPowerPlant_SteamHiss1.ogg differ diff --git a/sound/goonstation/industrial/LavaPowerPlant_SteamHiss2.ogg b/sound/goonstation/industrial/LavaPowerPlant_SteamHiss2.ogg new file mode 100644 index 00000000000..5f3147edff3 Binary files /dev/null and b/sound/goonstation/industrial/LavaPowerPlant_SteamHiss2.ogg differ diff --git a/sound/goonstation/industrial/MarsFacility_Glitchy.ogg b/sound/goonstation/industrial/MarsFacility_Glitchy.ogg new file mode 100644 index 00000000000..e52e9d67b66 Binary files /dev/null and b/sound/goonstation/industrial/MarsFacility_Glitchy.ogg differ diff --git a/sound/goonstation/industrial/MarsFacility_MovingEquipment.ogg b/sound/goonstation/industrial/MarsFacility_MovingEquipment.ogg new file mode 100644 index 00000000000..b2f0897e05d Binary files /dev/null and b/sound/goonstation/industrial/MarsFacility_MovingEquipment.ogg differ diff --git a/sound/goonstation/industrial/Precursor_Bells.ogg b/sound/goonstation/industrial/Precursor_Bells.ogg new file mode 100644 index 00000000000..d2df6510e22 Binary files /dev/null and b/sound/goonstation/industrial/Precursor_Bells.ogg differ diff --git a/sound/goonstation/industrial/Precursor_Choir.ogg b/sound/goonstation/industrial/Precursor_Choir.ogg new file mode 100644 index 00000000000..aad88d31c77 Binary files /dev/null and b/sound/goonstation/industrial/Precursor_Choir.ogg differ diff --git a/sound/goonstation/industrial/Precursor_Drone1.ogg b/sound/goonstation/industrial/Precursor_Drone1.ogg new file mode 100644 index 00000000000..e1bb5a2a541 Binary files /dev/null and b/sound/goonstation/industrial/Precursor_Drone1.ogg differ diff --git a/sound/goonstation/industrial/Precursor_Drone2.ogg b/sound/goonstation/industrial/Precursor_Drone2.ogg new file mode 100644 index 00000000000..58272f870cf Binary files /dev/null and b/sound/goonstation/industrial/Precursor_Drone2.ogg differ diff --git a/sound/goonstation/industrial/Precursor_Drone3.ogg b/sound/goonstation/industrial/Precursor_Drone3.ogg new file mode 100644 index 00000000000..b748f50843b Binary files /dev/null and b/sound/goonstation/industrial/Precursor_Drone3.ogg differ diff --git a/sound/goonstation/industrial/Timeship_Atmospheric.ogg b/sound/goonstation/industrial/Timeship_Atmospheric.ogg new file mode 100644 index 00000000000..fb0bda5ad7b Binary files /dev/null and b/sound/goonstation/industrial/Timeship_Atmospheric.ogg differ diff --git a/sound/goonstation/industrial/Timeship_Glitchy1.ogg b/sound/goonstation/industrial/Timeship_Glitchy1.ogg new file mode 100644 index 00000000000..082be8f2e47 Binary files /dev/null and b/sound/goonstation/industrial/Timeship_Glitchy1.ogg differ diff --git a/sound/goonstation/industrial/Timeship_Glitchy2.ogg b/sound/goonstation/industrial/Timeship_Glitchy2.ogg new file mode 100644 index 00000000000..061d0eecd94 Binary files /dev/null and b/sound/goonstation/industrial/Timeship_Glitchy2.ogg differ diff --git a/sound/goonstation/industrial/Timeship_Glitchy3.ogg b/sound/goonstation/industrial/Timeship_Glitchy3.ogg new file mode 100644 index 00000000000..ccfaa94892d Binary files /dev/null and b/sound/goonstation/industrial/Timeship_Glitchy3.ogg differ diff --git a/sound/goonstation/industrial/Timeship_Gong.ogg b/sound/goonstation/industrial/Timeship_Gong.ogg new file mode 100644 index 00000000000..3160dffeb2d Binary files /dev/null and b/sound/goonstation/industrial/Timeship_Gong.ogg differ diff --git a/sound/goonstation/industrial/Timeship_Malfunction.ogg b/sound/goonstation/industrial/Timeship_Malfunction.ogg new file mode 100644 index 00000000000..853212fbb96 Binary files /dev/null and b/sound/goonstation/industrial/Timeship_Malfunction.ogg differ diff --git a/sound/goonstation/industrial/Timeship_Tones.ogg b/sound/goonstation/industrial/Timeship_Tones.ogg new file mode 100644 index 00000000000..0ca6883e18f Binary files /dev/null and b/sound/goonstation/industrial/Timeship_Tones.ogg differ diff --git a/sound/goonstation/spooky/Evilreaver_Ambience.ogg b/sound/goonstation/spooky/Evilreaver_Ambience.ogg new file mode 100644 index 00000000000..11b8dca7cb8 Binary files /dev/null and b/sound/goonstation/spooky/Evilreaver_Ambience.ogg differ diff --git a/sound/goonstation/spooky/Flock_Reactor.ogg b/sound/goonstation/spooky/Flock_Reactor.ogg new file mode 100644 index 00000000000..78785e35b54 Binary files /dev/null and b/sound/goonstation/spooky/Flock_Reactor.ogg differ diff --git a/sound/goonstation/spooky/Hospital_Chords.ogg b/sound/goonstation/spooky/Hospital_Chords.ogg new file mode 100644 index 00000000000..174261932f9 Binary files /dev/null and b/sound/goonstation/spooky/Hospital_Chords.ogg differ diff --git a/sound/goonstation/spooky/Hospital_Drone1.ogg b/sound/goonstation/spooky/Hospital_Drone1.ogg new file mode 100644 index 00000000000..d0994dfeaf2 Binary files /dev/null and b/sound/goonstation/spooky/Hospital_Drone1.ogg differ diff --git a/sound/goonstation/spooky/Hospital_Drone2.ogg b/sound/goonstation/spooky/Hospital_Drone2.ogg new file mode 100644 index 00000000000..f2c71c40b35 Binary files /dev/null and b/sound/goonstation/spooky/Hospital_Drone2.ogg differ diff --git a/sound/goonstation/spooky/Hospital_Drone3.ogg b/sound/goonstation/spooky/Hospital_Drone3.ogg new file mode 100644 index 00000000000..07e64e61481 Binary files /dev/null and b/sound/goonstation/spooky/Hospital_Drone3.ogg differ diff --git a/sound/goonstation/spooky/Hospital_Feedback.ogg b/sound/goonstation/spooky/Hospital_Feedback.ogg new file mode 100644 index 00000000000..1a7656be3eb Binary files /dev/null and b/sound/goonstation/spooky/Hospital_Feedback.ogg differ diff --git a/sound/goonstation/spooky/Hospital_Haunted1.ogg b/sound/goonstation/spooky/Hospital_Haunted1.ogg new file mode 100644 index 00000000000..f3b4b1bad27 Binary files /dev/null and b/sound/goonstation/spooky/Hospital_Haunted1.ogg differ diff --git a/sound/goonstation/spooky/Hospital_Haunted2.ogg b/sound/goonstation/spooky/Hospital_Haunted2.ogg new file mode 100644 index 00000000000..69d94397f08 Binary files /dev/null and b/sound/goonstation/spooky/Hospital_Haunted2.ogg differ diff --git a/sound/goonstation/spooky/Hospital_Haunted3.ogg b/sound/goonstation/spooky/Hospital_Haunted3.ogg new file mode 100644 index 00000000000..4468e4f6fe5 Binary files /dev/null and b/sound/goonstation/spooky/Hospital_Haunted3.ogg differ diff --git a/sound/goonstation/spooky/Hospital_ScaryChimes.ogg b/sound/goonstation/spooky/Hospital_ScaryChimes.ogg new file mode 100644 index 00000000000..9de8b4722a3 Binary files /dev/null and b/sound/goonstation/spooky/Hospital_ScaryChimes.ogg differ diff --git a/sound/goonstation/spooky/MFortuna.ogg b/sound/goonstation/spooky/MFortuna.ogg new file mode 100644 index 00000000000..c0802cfdcfd Binary files /dev/null and b/sound/goonstation/spooky/MFortuna.ogg differ diff --git a/sound/goonstation/spooky/Meatzone_BreathingAndAnthem.ogg b/sound/goonstation/spooky/Meatzone_BreathingAndAnthem.ogg new file mode 100644 index 00000000000..f738c7f082d Binary files /dev/null and b/sound/goonstation/spooky/Meatzone_BreathingAndAnthem.ogg differ diff --git a/sound/goonstation/spooky/Meatzone_BreathingFast.ogg b/sound/goonstation/spooky/Meatzone_BreathingFast.ogg new file mode 100644 index 00000000000..1e643ed75c3 Binary files /dev/null and b/sound/goonstation/spooky/Meatzone_BreathingFast.ogg differ diff --git a/sound/goonstation/spooky/Meatzone_BreathingSlow.ogg b/sound/goonstation/spooky/Meatzone_BreathingSlow.ogg new file mode 100644 index 00000000000..32edb034a3f Binary files /dev/null and b/sound/goonstation/spooky/Meatzone_BreathingSlow.ogg differ diff --git a/sound/goonstation/spooky/Meatzone_Gurgle.ogg b/sound/goonstation/spooky/Meatzone_Gurgle.ogg new file mode 100644 index 00000000000..55468d9617f Binary files /dev/null and b/sound/goonstation/spooky/Meatzone_Gurgle.ogg differ diff --git a/sound/goonstation/spooky/Meatzone_Howl.ogg b/sound/goonstation/spooky/Meatzone_Howl.ogg new file mode 100644 index 00000000000..55cf4ada241 Binary files /dev/null and b/sound/goonstation/spooky/Meatzone_Howl.ogg differ diff --git a/sound/goonstation/spooky/Meatzone_Rumble.ogg b/sound/goonstation/spooky/Meatzone_Rumble.ogg new file mode 100644 index 00000000000..0121653d648 Binary files /dev/null and b/sound/goonstation/spooky/Meatzone_Rumble.ogg differ diff --git a/sound/goonstation/spooky/Meatzone_Squishy.ogg b/sound/goonstation/spooky/Meatzone_Squishy.ogg new file mode 100644 index 00000000000..0b6e8546384 Binary files /dev/null and b/sound/goonstation/spooky/Meatzone_Squishy.ogg differ diff --git a/sound/goonstation/spooky/Somewhere_Tone.ogg b/sound/goonstation/spooky/Somewhere_Tone.ogg new file mode 100644 index 00000000000..c8566f3b5fc Binary files /dev/null and b/sound/goonstation/spooky/Somewhere_Tone.ogg differ diff --git a/sound/goonstation/spooky/Station_SpookyAtmosphere1.ogg b/sound/goonstation/spooky/Station_SpookyAtmosphere1.ogg new file mode 100644 index 00000000000..6fa3192da4f Binary files /dev/null and b/sound/goonstation/spooky/Station_SpookyAtmosphere1.ogg differ diff --git a/sound/goonstation/spooky/Station_SpookyAtmosphere2.ogg b/sound/goonstation/spooky/Station_SpookyAtmosphere2.ogg new file mode 100644 index 00000000000..9a33f0acdd6 Binary files /dev/null and b/sound/goonstation/spooky/Station_SpookyAtmosphere2.ogg differ diff --git a/sound/goonstation/spooky/TheBlindPig.ogg b/sound/goonstation/spooky/TheBlindPig.ogg new file mode 100644 index 00000000000..f1084dbfd34 Binary files /dev/null and b/sound/goonstation/spooky/TheBlindPig.ogg differ diff --git a/sound/goonstation/spooky/TheBlindPig2.ogg b/sound/goonstation/spooky/TheBlindPig2.ogg new file mode 100644 index 00000000000..9595bbb9b1f Binary files /dev/null and b/sound/goonstation/spooky/TheBlindPig2.ogg differ diff --git a/sound/goonstation/spooky/Void_Calls.ogg b/sound/goonstation/spooky/Void_Calls.ogg new file mode 100644 index 00000000000..a7d4be4ad03 Binary files /dev/null and b/sound/goonstation/spooky/Void_Calls.ogg differ diff --git a/sound/goonstation/spooky/Void_Hisses.ogg b/sound/goonstation/spooky/Void_Hisses.ogg new file mode 100644 index 00000000000..2182b8e0648 Binary files /dev/null and b/sound/goonstation/spooky/Void_Hisses.ogg differ diff --git a/sound/goonstation/spooky/Void_Screaming.ogg b/sound/goonstation/spooky/Void_Screaming.ogg new file mode 100644 index 00000000000..75797b831fc Binary files /dev/null and b/sound/goonstation/spooky/Void_Screaming.ogg differ diff --git a/sound/goonstation/spooky/Void_Song.ogg b/sound/goonstation/spooky/Void_Song.ogg new file mode 100644 index 00000000000..7371bac33d2 Binary files /dev/null and b/sound/goonstation/spooky/Void_Song.ogg differ diff --git a/sound/goonstation/spooky/Void_Wail.ogg b/sound/goonstation/spooky/Void_Wail.ogg new file mode 100644 index 00000000000..dfc7cbf77b6 Binary files /dev/null and b/sound/goonstation/spooky/Void_Wail.ogg differ diff --git a/sound/goonstation/spooky/basket_noises1.ogg b/sound/goonstation/spooky/basket_noises1.ogg new file mode 100644 index 00000000000..b885f6ccbe4 Binary files /dev/null and b/sound/goonstation/spooky/basket_noises1.ogg differ diff --git a/sound/goonstation/spooky/basket_noises2.ogg b/sound/goonstation/spooky/basket_noises2.ogg new file mode 100644 index 00000000000..528dc2cb40f Binary files /dev/null and b/sound/goonstation/spooky/basket_noises2.ogg differ diff --git a/sound/goonstation/spooky/basket_noises3.ogg b/sound/goonstation/spooky/basket_noises3.ogg new file mode 100644 index 00000000000..daf78c16873 Binary files /dev/null and b/sound/goonstation/spooky/basket_noises3.ogg differ diff --git a/sound/goonstation/spooky/basket_noises4.ogg b/sound/goonstation/spooky/basket_noises4.ogg new file mode 100644 index 00000000000..d18a5345cf7 Binary files /dev/null and b/sound/goonstation/spooky/basket_noises4.ogg differ diff --git a/sound/goonstation/spooky/basket_noises5.ogg b/sound/goonstation/spooky/basket_noises5.ogg new file mode 100644 index 00000000000..70a1d6f0688 Binary files /dev/null and b/sound/goonstation/spooky/basket_noises5.ogg differ diff --git a/sound/goonstation/spooky/basket_noises6.ogg b/sound/goonstation/spooky/basket_noises6.ogg new file mode 100644 index 00000000000..d84430982d8 Binary files /dev/null and b/sound/goonstation/spooky/basket_noises6.ogg differ diff --git a/sound/goonstation/spooky/basket_noises7.ogg b/sound/goonstation/spooky/basket_noises7.ogg new file mode 100644 index 00000000000..5f53b578b3a Binary files /dev/null and b/sound/goonstation/spooky/basket_noises7.ogg differ diff --git a/sound/goonstation/spooky/chanting.ogg b/sound/goonstation/spooky/chanting.ogg new file mode 100644 index 00000000000..568309d706c Binary files /dev/null and b/sound/goonstation/spooky/chanting.ogg differ diff --git a/sound/goonstation/spooky/creepyshriek.ogg b/sound/goonstation/spooky/creepyshriek.ogg new file mode 100644 index 00000000000..83b7810131b Binary files /dev/null and b/sound/goonstation/spooky/creepyshriek.ogg differ diff --git a/sound/goonstation/spooky/creepywhisper_1.ogg b/sound/goonstation/spooky/creepywhisper_1.ogg new file mode 100644 index 00000000000..51ac11108a6 Binary files /dev/null and b/sound/goonstation/spooky/creepywhisper_1.ogg differ diff --git a/sound/goonstation/spooky/creepywhisper_2.ogg b/sound/goonstation/spooky/creepywhisper_2.ogg new file mode 100644 index 00000000000..3b262ce0105 Binary files /dev/null and b/sound/goonstation/spooky/creepywhisper_2.ogg differ diff --git a/sound/goonstation/spooky/creepywhisper_3.ogg b/sound/goonstation/spooky/creepywhisper_3.ogg new file mode 100644 index 00000000000..2738710a1e9 Binary files /dev/null and b/sound/goonstation/spooky/creepywhisper_3.ogg differ diff --git a/sound/goonstation/spooky/flockstatic.ogg b/sound/goonstation/spooky/flockstatic.ogg new file mode 100644 index 00000000000..001ab69c3f5 Binary files /dev/null and b/sound/goonstation/spooky/flockstatic.ogg differ diff --git a/sound/goonstation/spooky/mechmonstrositylaugh.ogg b/sound/goonstation/spooky/mechmonstrositylaugh.ogg new file mode 100644 index 00000000000..f256bf3975e Binary files /dev/null and b/sound/goonstation/spooky/mechmonstrositylaugh.ogg differ diff --git a/vorestation.dme b/vorestation.dme index 66f46dedc4d..8c9a921f990 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -64,10 +64,12 @@ #include "code\__defines\objects.dm" #include "code\__defines\overmap.dm" #include "code\__defines\planets.dm" +#include "code\__defines\preferences.dm" #include "code\__defines\process_scheduler.dm" #include "code\__defines\qdel.dm" #include "code\__defines\research.dm" #include "code\__defines\roguemining_vr.dm" +#include "code\__defines\shields.dm" #include "code\__defines\shuttle.dm" #include "code\__defines\sound.dm" #include "code\__defines\species_languages.dm" @@ -222,9 +224,6 @@ #include "code\controllers\subsystem.dm" #include "code\controllers\verbs.dm" #include "code\controllers\observer_listener\atom\observer.dm" -#include "code\controllers\Processes\emergencyShuttle.dm" -#include "code\controllers\Processes\game_master.dm" -#include "code\controllers\Processes\ticker.dm" #include "code\controllers\ProcessScheduler\core\process.dm" #include "code\controllers\ProcessScheduler\core\processScheduler.dm" #include "code\controllers\subsystems\ai.dm" @@ -246,6 +245,7 @@ #include "code\controllers\subsystems\mapping_vr.dm" #include "code\controllers\subsystems\mobs.dm" #include "code\controllers\subsystems\nanoui.dm" +#include "code\controllers\subsystems\open_space.dm" #include "code\controllers\subsystems\orbits.dm" #include "code\controllers\subsystems\overlays.dm" #include "code\controllers\subsystems\persist_vr.dm" @@ -256,6 +256,7 @@ #include "code\controllers\subsystems\sqlite.dm" #include "code\controllers\subsystems\sun.dm" #include "code\controllers\subsystems\supply.dm" +#include "code\controllers\subsystems\ticker.dm" #include "code\controllers\subsystems\time_track.dm" #include "code\controllers\subsystems\timer.dm" #include "code\controllers\subsystems\transcore_vr.dm" @@ -310,6 +311,7 @@ #include "code\datums\autolathe\medical_vr.dm" #include "code\datums\autolathe\tools.dm" #include "code\datums\autolathe\tools_vr.dm" +#include "code\datums\game_masters\_common.dm" #include "code\datums\helper_datums\construction_datum.dm" #include "code\datums\helper_datums\events.dm" #include "code\datums\helper_datums\getrev.dm" @@ -451,6 +453,7 @@ #include "code\datums\wires\radio.dm" #include "code\datums\wires\robot.dm" #include "code\datums\wires\seedstorage.dm" +#include "code\datums\wires\shield_generator.dm" #include "code\datums\wires\smartfridge.dm" #include "code\datums\wires\smes.dm" #include "code\datums\wires\suit_storage_unit.dm" @@ -531,7 +534,6 @@ #include "code\game\gamemodes\events.dm" #include "code\game\gamemodes\game_mode.dm" #include "code\game\gamemodes\game_mode_latespawn.dm" -#include "code\game\gamemodes\gameticker.dm" #include "code\game\gamemodes\objective.dm" #include "code\game\gamemodes\setupgame.dm" #include "code\game\gamemodes\calamity\calamity.dm" @@ -1126,6 +1128,7 @@ #include "code\game\objects\items\devices\radio\jammer_vr.dm" #include "code\game\objects\items\devices\radio\radio.dm" #include "code\game\objects\items\devices\radio\radio_vr.dm" +#include "code\game\objects\items\devices\radio\radiopack.dm" #include "code\game\objects\items\robot\robot_items.dm" #include "code\game\objects\items\robot\robot_parts.dm" #include "code\game\objects\items\robot\robot_upgrades.dm" @@ -1195,6 +1198,7 @@ #include "code\game\objects\items\weapons\circuitboards\computer\camera_monitor.dm" #include "code\game\objects\items\weapons\circuitboards\computer\computer.dm" #include "code\game\objects\items\weapons\circuitboards\computer\research.dm" +#include "code\game\objects\items\weapons\circuitboards\computer\shuttle.dm" #include "code\game\objects\items\weapons\circuitboards\computer\supply.dm" #include "code\game\objects\items\weapons\circuitboards\computer\telecomms.dm" #include "code\game\objects\items\weapons\circuitboards\machinery\biogenerator.dm" @@ -1322,6 +1326,7 @@ #include "code\game\objects\structures\fence.dm" #include "code\game\objects\structures\fireaxe.dm" #include "code\game\objects\structures\fitness.dm" +#include "code\game\objects\structures\fitness_vr.dm" #include "code\game\objects\structures\flora.dm" #include "code\game\objects\structures\flora_vr.dm" #include "code\game\objects\structures\girders.dm" @@ -1586,6 +1591,7 @@ #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\topic_list.dm" #include "code\modules\admin\view_variables\view_variables.dm" #include "code\modules\ai\_defines.dm" #include "code\modules\ai\ai_holder.dm" @@ -1638,7 +1644,7 @@ #include "code\modules\awaymissions\zlevel.dm" #include "code\modules\blob\blob.dm" #include "code\modules\blob2\_defines.dm" -#include "code\modules\blob2\announcement.dm" +#include "code\modules\blob2\core_chunk.dm" #include "code\modules\blob2\blobs\base_blob.dm" #include "code\modules\blob2\blobs\core.dm" #include "code\modules\blob2\blobs\factory.dm" @@ -1649,6 +1655,25 @@ #include "code\modules\blob2\overmind\overmind.dm" #include "code\modules\blob2\overmind\powers.dm" #include "code\modules\blob2\overmind\types.dm" +#include "code\modules\blob2\overmind\types\blazing_oil.dm" +#include "code\modules\blob2\overmind\types\classic.dm" +#include "code\modules\blob2\overmind\types\cryogenic_goo.dm" +#include "code\modules\blob2\overmind\types\ectoplasmic_horror.dm" +#include "code\modules\blob2\overmind\types\electromagnetic_web.dm" +#include "code\modules\blob2\overmind\types\energized_jelly.dm" +#include "code\modules\blob2\overmind\types\explosive_lattice.dm" +#include "code\modules\blob2\overmind\types\fabrication_swarm.dm" +#include "code\modules\blob2\overmind\types\fulminant_organism.dm" +#include "code\modules\blob2\overmind\types\fungal_bloom.dm" +#include "code\modules\blob2\overmind\types\grey_goo.dm" +#include "code\modules\blob2\overmind\types\pressurized_slime.dm" +#include "code\modules\blob2\overmind\types\radioactive_ooze.dm" +#include "code\modules\blob2\overmind\types\ravenous_macrophage.dm" +#include "code\modules\blob2\overmind\types\reactive_spines.dm" +#include "code\modules\blob2\overmind\types\roiling_mold.dm" +#include "code\modules\blob2\overmind\types\shifting_fragments.dm" +#include "code\modules\blob2\overmind\types\synchronous_mesh.dm" +#include "code\modules\blob2\overmind\types\volatile_alluvium.dm" #include "code\modules\busy_space\air_traffic.dm" #include "code\modules\busy_space\loremaster.dm" #include "code\modules\busy_space_vr\organizations.dm" @@ -2026,56 +2051,49 @@ #include "code\modules\food\kitchen\cooking_machines\fryer.dm" #include "code\modules\food\kitchen\cooking_machines\grill.dm" #include "code\modules\food\kitchen\cooking_machines\oven.dm" -#include "code\modules\gamemaster\controller.dm" #include "code\modules\gamemaster\defines.dm" -#include "code\modules\gamemaster\game_master.dm" -#include "code\modules\gamemaster\helpers.dm" -#include "code\modules\gamemaster\actions\action.dm" -#include "code\modules\gamemaster\actions\atmos_leak.dm" -#include "code\modules\gamemaster\actions\blob.dm" -#include "code\modules\gamemaster\actions\brand_intelligence.dm" -#include "code\modules\gamemaster\actions\camera_damage.dm" -#include "code\modules\gamemaster\actions\canister_leak.dm" -#include "code\modules\gamemaster\actions\carp_migration.dm" -#include "code\modules\gamemaster\actions\carp_migration_vr.dm" -#include "code\modules\gamemaster\actions\comms_blackout.dm" -#include "code\modules\gamemaster\actions\drill_announcement.dm" -#include "code\modules\gamemaster\actions\dust.dm" -#include "code\modules\gamemaster\actions\electrical_storm.dm" -#include "code\modules\gamemaster\actions\electrified_door.dm" -#include "code\modules\gamemaster\actions\gravity.dm" -#include "code\modules\gamemaster\actions\grid_check.dm" -#include "code\modules\gamemaster\actions\infestation.dm" -#include "code\modules\gamemaster\actions\ion_storm.dm" -#include "code\modules\gamemaster\actions\manifest_malfunction.dm" -#include "code\modules\gamemaster\actions\meteor_defense.dm" -#include "code\modules\gamemaster\actions\money_hacker.dm" -#include "code\modules\gamemaster\actions\money_lotto.dm" -#include "code\modules\gamemaster\actions\money_spam.dm" -#include "code\modules\gamemaster\actions\planet_weather_change.dm" -#include "code\modules\gamemaster\actions\prison_break.dm" -#include "code\modules\gamemaster\actions\radiation_storm.dm" -#include "code\modules\gamemaster\actions\random_antagonist.dm" -#include "code\modules\gamemaster\actions\rogue_drones.dm" -#include "code\modules\gamemaster\actions\security_advisement.dm" -#include "code\modules\gamemaster\actions\shipping_error.dm" -#include "code\modules\gamemaster\actions\solar_storm.dm" -#include "code\modules\gamemaster\actions\spacevine.dm" -#include "code\modules\gamemaster\actions\spider_infestation.dm" -#include "code\modules\gamemaster\actions\spontaneous_appendicitis.dm" -#include "code\modules\gamemaster\actions\station_fundraise.dm" -#include "code\modules\gamemaster\actions\stowaway.dm" -#include "code\modules\gamemaster\actions\supply_conversion.dm" -#include "code\modules\gamemaster\actions\supplyrequest.dm" -#include "code\modules\gamemaster\actions\surprise_carp_attack.dm" -#include "code\modules\gamemaster\actions\surprise_meteor.dm" -#include "code\modules\gamemaster\actions\swarmboarder.dm" -#include "code\modules\gamemaster\actions\viral_infection.dm" -#include "code\modules\gamemaster\actions\viral_outbreak.dm" -#include "code\modules\gamemaster\actions\wallrot.dm" -#include "code\modules\gamemaster\actions\waste_disposal.dm" -#include "code\modules\gamemaster\actions\window_break.dm" -#include "code\modules\gamemaster\actions\wormholes.dm" +#include "code\modules\gamemaster\event2\event.dm" +#include "code\modules\gamemaster\event2\meta.dm" +#include "code\modules\gamemaster\event2\events\ghost_pod_spawner.dm" +#include "code\modules\gamemaster\event2\events\mob_spawning.dm" +#include "code\modules\gamemaster\event2\events\cargo\shipping_error.dm" +#include "code\modules\gamemaster\event2\events\command\manifest_malfunction.dm" +#include "code\modules\gamemaster\event2\events\command\money_hacker.dm" +#include "code\modules\gamemaster\event2\events\command\raise_funds.dm" +#include "code\modules\gamemaster\event2\events\engineering\airlock_failure.dm" +#include "code\modules\gamemaster\event2\events\engineering\blob.dm" +#include "code\modules\gamemaster\event2\events\engineering\brand_intelligence.dm" +#include "code\modules\gamemaster\event2\events\engineering\camera_damage.dm" +#include "code\modules\gamemaster\event2\events\engineering\canister_leak.dm" +#include "code\modules\gamemaster\event2\events\engineering\dust.dm" +#include "code\modules\gamemaster\event2\events\engineering\gas_leak.dm" +#include "code\modules\gamemaster\event2\events\engineering\grid_check.dm" +#include "code\modules\gamemaster\event2\events\engineering\meteor_defense.dm" +#include "code\modules\gamemaster\event2\events\engineering\spacevine.dm" +#include "code\modules\gamemaster\event2\events\engineering\wallrot.dm" +#include "code\modules\gamemaster\event2\events\engineering\window_break.dm" +#include "code\modules\gamemaster\event2\events\everyone\comms_blackout.dm" +#include "code\modules\gamemaster\event2\events\everyone\electrical_fault.dm" +#include "code\modules\gamemaster\event2\events\everyone\gravity.dm" +#include "code\modules\gamemaster\event2\events\everyone\infestation.dm" +#include "code\modules\gamemaster\event2\events\everyone\pda_spam.dm" +#include "code\modules\gamemaster\event2\events\everyone\radiation_storm.dm" +#include "code\modules\gamemaster\event2\events\everyone\random_antag.dm" +#include "code\modules\gamemaster\event2\events\everyone\solar_storm.dm" +#include "code\modules\gamemaster\event2\events\everyone\sudden_weather_shift.dm" +#include "code\modules\gamemaster\event2\events\legacy\legacy.dm" +#include "code\modules\gamemaster\event2\events\medical\appendicitis.dm" +#include "code\modules\gamemaster\event2\events\medical\virus.dm" +#include "code\modules\gamemaster\event2\events\security\carp_migration.dm" +#include "code\modules\gamemaster\event2\events\security\drill_announcement.dm" +#include "code\modules\gamemaster\event2\events\security\prison_break.dm" +#include "code\modules\gamemaster\event2\events\security\rogue_drones.dm" +#include "code\modules\gamemaster\event2\events\security\security_advisement.dm" +#include "code\modules\gamemaster\event2\events\security\spider_infestation.dm" +#include "code\modules\gamemaster\event2\events\security\stowaway.dm" +#include "code\modules\gamemaster\event2\events\security\surprise_carp.dm" +#include "code\modules\gamemaster\event2\events\security\swarm_boarder.dm" +#include "code\modules\gamemaster\event2\events\synthetic\ion_storm.dm" #include "code\modules\games\cah.dm" #include "code\modules\games\cah_black_cards.dm" #include "code\modules\games\cah_white_cards.dm" @@ -2785,6 +2803,8 @@ #include "code\modules\modular_computers\file_system\programs\research\ntmonitor.dm" #include "code\modules\modular_computers\file_system\programs\security\alarm_monitor.dm" #include "code\modules\modular_computers\file_system\programs\security\digitalwarrant.dm" +#include "code\modules\modular_computers\file_system\programs\ships\navigation.dm" +#include "code\modules\modular_computers\file_system\programs\ships\ship.dm" #include "code\modules\modular_computers\hardware\_hardware.dm" #include "code\modules\modular_computers\hardware\battery_module.dm" #include "code\modules\modular_computers\hardware\card_slot.dm" @@ -2806,7 +2826,6 @@ #include "code\modules\multiz\ladder_assembly_vr.dm" #include "code\modules\multiz\movement.dm" #include "code\modules\multiz\movement_vr.dm" -#include "code\modules\multiz\open_space_controller.dm" #include "code\modules\multiz\pipes.dm" #include "code\modules\multiz\structures.dm" #include "code\modules\multiz\structures_vr.dm" @@ -2888,6 +2907,7 @@ #include "code\modules\organs\subtypes\vox_vr.dm" #include "code\modules\organs\subtypes\xenos.dm" #include "code\modules\overmap\bluespace_rift_vr.dm" +#include "code\modules\overmap\helpers.dm" #include "code\modules\overmap\overmap_object.dm" #include "code\modules\overmap\overmap_shuttle.dm" #include "code\modules\overmap\sectors.dm" @@ -2947,6 +2967,7 @@ #include "code\modules\power\lighting_vr.dm" #include "code\modules\power\lightswitch_vr.dm" #include "code\modules\power\port_gen.dm" +#include "code\modules\power\port_gen_vr.dm" #include "code\modules\power\power.dm" #include "code\modules\power\powernet.dm" #include "code\modules\power\smes.dm" @@ -3014,20 +3035,33 @@ #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\bsharpoon_vr.dm" +#include "code\modules\projectiles\guns\energy\crestrose_vr.dm" +#include "code\modules\projectiles\guns\energy\dominator_vr.dm" +#include "code\modules\projectiles\guns\energy\gunsword_vr.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_vr.dm" #include "code\modules\projectiles\guns\energy\netgun_vr.dm" #include "code\modules\projectiles\guns\energy\nuclear.dm" #include "code\modules\projectiles\guns\energy\nuclear_vr.dm" #include "code\modules\projectiles\guns\energy\particle.dm" #include "code\modules\projectiles\guns\energy\phase.dm" +#include "code\modules\projectiles\guns\energy\protector_vr.dm" #include "code\modules\projectiles\guns\energy\pulse.dm" +#include "code\modules\projectiles\guns\energy\pummeler_vr.dm" +#include "code\modules\projectiles\guns\energy\sickshot_vr.dm" #include "code\modules\projectiles\guns\energy\special.dm" #include "code\modules\projectiles\guns\energy\special_vr.dm" #include "code\modules\projectiles\guns\energy\stun.dm" #include "code\modules\projectiles\guns\energy\stun_vr.dm" #include "code\modules\projectiles\guns\energy\temperature.dm" +#include "code\modules\projectiles\guns\energy\cell_loaded_vr\cell_loaded.dm" +#include "code\modules\projectiles\guns\energy\cell_loaded_vr\ml3m.dm" +#include "code\modules\projectiles\guns\energy\cell_loaded_vr\ml3m_cells.dm" +#include "code\modules\projectiles\guns\energy\cell_loaded_vr\nsfw.dm" +#include "code\modules\projectiles\guns\energy\cell_loaded_vr\nsfw_cells.dm" #include "code\modules\projectiles\guns\launcher\crossbow.dm" #include "code\modules\projectiles\guns\launcher\grenade_launcher.dm" #include "code\modules\projectiles\guns\launcher\pneumatic.dm" @@ -3044,11 +3078,14 @@ #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\dartgun_vr.dm" #include "code\modules\projectiles\guns\projectile\pistol.dm" #include "code\modules\projectiles\guns\projectile\pistol_vr.dm" #include "code\modules\projectiles\guns\projectile\revolver.dm" +#include "code\modules\projectiles\guns\projectile\revolver_vr.dm" #include "code\modules\projectiles\guns\projectile\semiauto.dm" #include "code\modules\projectiles\guns\projectile\shotgun.dm" +#include "code\modules\projectiles\guns\projectile\shotgun_vr.dm" #include "code\modules\projectiles\guns\projectile\sniper.dm" #include "code\modules\projectiles\guns\projectile\sniper\collapsible_sniper.dm" #include "code\modules\projectiles\projectile\arc.dm" @@ -3235,12 +3272,15 @@ #include "code\modules\shieldgen\directional_shield.dm" #include "code\modules\shieldgen\emergency_shield.dm" #include "code\modules\shieldgen\energy_field.dm" +#include "code\modules\shieldgen\energy_shield.dm" #include "code\modules\shieldgen\handheld_defuser.dm" #include "code\modules\shieldgen\sheldwallgen.dm" #include "code\modules\shieldgen\shield_capacitor.dm" #include "code\modules\shieldgen\shield_diffuser.dm" #include "code\modules\shieldgen\shield_gen.dm" #include "code\modules\shieldgen\shield_gen_external.dm" +#include "code\modules\shieldgen\shield_generator.dm" +#include "code\modules\shieldgen\shield_modes.dm" #include "code\modules\shuttles\antagonist.dm" #include "code\modules\shuttles\crashes.dm" #include "code\modules\shuttles\departmental.dm" @@ -3379,22 +3419,9 @@ #include "code\modules\vore\eating\vorepanel_vr.dm" #include "code\modules\vore\fluffstuff\custom_boxes_vr.dm" #include "code\modules\vore\fluffstuff\custom_clothes_vr.dm" -#include "code\modules\vore\fluffstuff\custom_guns_vr.dm" #include "code\modules\vore\fluffstuff\custom_items_vr.dm" #include "code\modules\vore\fluffstuff\custom_mecha_vr.dm" #include "code\modules\vore\fluffstuff\custom_permits_vr.dm" -#include "code\modules\vore\fluffstuff\guns\bsharpoon.dm" -#include "code\modules\vore\fluffstuff\guns\crestrose.dm" -#include "code\modules\vore\fluffstuff\guns\dominator.dm" -#include "code\modules\vore\fluffstuff\guns\gunsword.dm" -#include "code\modules\vore\fluffstuff\guns\protector.dm" -#include "code\modules\vore\fluffstuff\guns\pummeler.dm" -#include "code\modules\vore\fluffstuff\guns\sickshot.dm" -#include "code\modules\vore\fluffstuff\guns\cell_loaded\cell_loaded.dm" -#include "code\modules\vore\fluffstuff\guns\cell_loaded\ml3m.dm" -#include "code\modules\vore\fluffstuff\guns\cell_loaded\ml3m_cells.dm" -#include "code\modules\vore\fluffstuff\guns\cell_loaded\nsfw.dm" -#include "code\modules\vore\fluffstuff\guns\cell_loaded\nsfw_cells.dm" #include "code\modules\vore\persist\persist_vr.dm" #include "code\modules\vore\resizing\grav_pull_vr.dm" #include "code\modules\vore\resizing\holder_micro_vr.dm"