diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm index b1830b2ad4..ea7e87e385 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm @@ -1033,7 +1033,7 @@ /obj/structure/table/wood, /obj/item/twohanded/spear, /obj/item/storage/belt, -/turf/open/indestructible/boss/air, +/turf/open/indestructible/boss, /area/ruin/unpowered/ash_walkers) "cI" = ( /obj/structure/stone_tile/cracked{ @@ -1075,7 +1075,7 @@ /obj/structure/table/wood, /obj/item/twohanded/spear, /obj/item/scythe, -/turf/open/indestructible/boss/air, +/turf/open/indestructible/boss, /area/ruin/unpowered/ash_walkers) "cM" = ( /obj/structure/stone_tile/block{ diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_swarmer_crash.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_swarmer_crash.dmm index 513605014d..e04a7106d5 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_swarmer_crash.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_swarmer_crash.dmm @@ -9,7 +9,9 @@ /turf/closed/wall/mineral/plastitanium, /area/ruin/unpowered) "d" = ( -/turf/open/floor/mineral/plastitanium, +/turf/open/floor/mineral/plastitanium{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, /area/ruin/unpowered) "e" = ( /obj/structure/shuttle/engine/propulsion{ @@ -19,7 +21,9 @@ /area/ruin/unpowered) "f" = ( /mob/living/simple_animal/hostile/megafauna/swarmer_swarm_beacon, -/turf/open/floor/mineral/plastitanium, +/turf/open/floor/mineral/plastitanium{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, /area/ruin/unpowered) (1,1,1) = {" diff --git a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm index 20f28906e1..4ecd040eb3 100644 --- a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm +++ b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm @@ -49,9 +49,8 @@ /area/ruin/space/has_grav/deepstorage/crusher) "an" = ( /obj/machinery/conveyor{ - dir = 1; - id = "bunkerrecycle"; - movedir = 2 + dir = 2; + id = "bunkerrecycle" }, /turf/open/floor/plating, /area/ruin/space/has_grav/deepstorage/crusher) @@ -2985,6 +2984,20 @@ /obj/effect/baseturf_helper/asteroid/airless, /turf/closed/wall/mineral/iron, /area/ruin/space/has_grav/deepstorage/power) +"rz" = ( +/obj/machinery/conveyor{ + dir = 6; + id = "bunkerrecycle" + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/deepstorage/crusher) +"Bb" = ( +/obj/machinery/conveyor{ + dir = 10; + id = "bunkerrecycle" + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/deepstorage/crusher) (1,1,1) = {" aa @@ -4610,9 +4623,9 @@ ab ab ab ag +rz an -an -an +Bb aQ bh bB diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index 2d88ed442d..932b3f3060 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -9441,13 +9441,11 @@ width = 6 }, /obj/docking_port/stationary{ - baseturf_type = /turf/open/floor/engine; dir = 4; dwidth = 3; height = 6; id = "snowdin_excavation_top"; name = "snowdin excavation top"; - turf_type = /turf/open/floor/engine; width = 6 }, /turf/open/floor/plating, @@ -9478,13 +9476,11 @@ /area/awaymission/snowdin/post/mining_dock) "xP" = ( /obj/docking_port/stationary{ - baseturf_type = /turf/open/floor/plating/snowed; dir = 4; dwidth = 3; height = 6; id = "snowdin_excavation_down"; name = "snowdin excavation down"; - turf_type = /turf/open/floor/plating/snowed; width = 6 }, /turf/open/floor/plating, @@ -13821,13 +13817,11 @@ width = 5 }, /obj/docking_port/stationary{ - baseturf_type = /turf/open/floor/engine; dir = 4; dwidth = 2; height = 5; id = "snowdin_mining_top"; name = "snowdin mining top"; - turf_type = /turf/open/floor/engine; width = 5 }, /turf/open/floor/plating, @@ -13874,13 +13868,11 @@ "Kt" = ( /obj/docking_port/stationary{ area_type = /area/awaymission/snowdin/post/mining_dock; - baseturf_type = /turf/open/floor/engine; dir = 4; dwidth = 2; height = 5; id = "snowdin_mining_down"; name = "snowdin mining bottom"; - turf_type = /turf/open/floor/engine; width = 5 }, /turf/open/floor/plating, diff --git a/_maps/cit_map_files/BoxStation/BoxStation.dmm b/_maps/cit_map_files/BoxStation/BoxStation.dmm index 91d975de6f..1b9ee66537 100644 --- a/_maps/cit_map_files/BoxStation/BoxStation.dmm +++ b/_maps/cit_map_files/BoxStation/BoxStation.dmm @@ -53,6 +53,9 @@ /turf/open/space, /area/space/nearstation) "aah" = ( +/obj/structure/sign/warning/securearea{ + pixel_y = -32 + }, /turf/open/space, /area/space/nearstation) "aai" = ( @@ -277,11 +280,6 @@ /obj/structure/lattice, /turf/open/space, /area/space/nearstation) -"aaT" = ( -/obj/machinery/flasher/portable, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/security/armory) "aaU" = ( /obj/machinery/computer/arcade, /turf/open/floor/plasteel/floorgrime, @@ -1847,15 +1845,6 @@ }, /turf/open/floor/plating, /area/security/main) -"aeD" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_3) -"aeE" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_3) "aeG" = ( /obj/structure/cable, /obj/machinery/power/solar{ @@ -2086,7 +2075,6 @@ height = 18; id = "emergency_home"; name = "BoxStation emergency evac bay"; - turf_type = /turf/open/space; width = 32 }, /turf/open/space/basic, @@ -2192,51 +2180,15 @@ /turf/open/floor/plating, /area/security/main) "afp" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ +/obj/docking_port/stationary{ dir = 4; - id = "pod3"; - name = "escape pod 3"; - port_direction = 2; - preferred_direction = 4; - timid = 0 + dwidth = 1; + height = 4; + roundstart_template = /datum/map_template/shuttle/escape_pod/default; + width = 3 }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_3) -"afq" = ( -/obj/machinery/computer/shuttle/pod{ - pixel_y = -32; - possible_destinations = "pod_lavaland3"; - shuttleId = "pod3" - }, -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_3) -"afr" = ( -/obj/item/device/radio/intercom{ - pixel_y = 25 - }, -/obj/item/storage/pod{ - pixel_x = 6; - pixel_y = -32 - }, -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/light/small, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_3) -"afs" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_3) +/turf/open/space/basic, +/area/space) "aft" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 5 @@ -5939,8 +5891,14 @@ dir = 4 }, /area/hallway/primary/fore) +"apn" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/closed/wall, +/area/maintenance/fore/secondary) "apo" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, /turf/closed/wall, /area/maintenance/fore/secondary) "app" = ( @@ -6022,10 +5980,9 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "apw" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Air In"; - on = 1 + name = "Air In" }, /obj/effect/landmark/blobstart, /obj/effect/turf_decal/stripes/line{ @@ -6107,10 +6064,6 @@ /obj/machinery/portable_atmospherics/canister/water_vapor, /turf/open/floor/plasteel, /area/janitor) -"apH" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_1) "apI" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on{ dir = 1; @@ -6124,10 +6077,6 @@ "apJ" = ( /turf/closed/wall, /area/construction/mining/aux_base) -"apK" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_2) "apL" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance{ @@ -6144,11 +6093,8 @@ /turf/open/floor/plasteel/floorgrime, /area/maintenance/port/fore) "apN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, /turf/open/floor/plating, -/area/shuttle/auxillary_base) +/area/construction/mining/aux_base) "apO" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 @@ -6220,9 +6166,6 @@ dir = 8; pixel_x = 24 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, /turf/open/floor/plasteel/red/corner{ dir = 4 }, @@ -6456,9 +6399,6 @@ /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"aqF" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_1) "aqG" = ( /obj/docking_port/stationary/random{ dir = 4; @@ -6467,15 +6407,6 @@ }, /turf/open/space, /area/space/nearstation) -"aqH" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_2) -"aqI" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "aqJ" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/external{ @@ -6501,13 +6432,6 @@ /obj/machinery/meter, /turf/open/floor/plating, /area/maintenance/port/fore) -"aqN" = ( -/obj/structure/closet/secure_closet/miner/unlocked, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "aqO" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance{ @@ -6776,15 +6700,6 @@ "arB" = ( /turf/closed/wall/r_wall, /area/hallway/secondary/entry) -"arC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"arD" = ( -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "arE" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/yellow/side{ @@ -7161,12 +7076,6 @@ "asC" = ( /turf/open/floor/plasteel/airless, /area/space/nearstation) -"asD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "asE" = ( /turf/closed/wall, /area/hallway/secondary/entry) @@ -7174,10 +7083,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/construction/mining/aux_base) -"asG" = ( -/obj/machinery/light, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "asH" = ( /obj/structure/closet/toolcloset, /turf/open/floor/plasteel/yellow/side{ @@ -7380,27 +7285,6 @@ dir = 8 }, /area/crew_quarters/dorms) -"atk" = ( -/obj/machinery/camera{ - c_tag = "Auxillary Mining Base"; - dir = 8; - network = list("ss13","auxbase") - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"atl" = ( -/obj/docking_port/mobile/auxillary_base{ - dheight = 4; - dir = 4; - dwidth = 4; - height = 9; - width = 9; - timid = 0 - }, -/obj/machinery/bluespace_beacon, -/obj/machinery/computer/auxillary_base, -/turf/closed/wall, -/area/shuttle/auxillary_base) "atm" = ( /turf/open/floor/wood, /area/crew_quarters/dorms) @@ -7930,10 +7814,6 @@ }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/department/electrical) -"auN" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "auO" = ( /obj/structure/closet/emcloset, /turf/open/floor/plating, @@ -8380,7 +8260,6 @@ height = 17; id = "syndicate_ne"; name = "northeast of station"; - turf_type = /turf/open/space; width = 23 }, /turf/open/space, @@ -8845,12 +8724,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/hallway/secondary/entry) -"awX" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "awY" = ( /obj/machinery/light{ dir = 1 @@ -9523,8 +9396,7 @@ "ayK" = ( /obj/structure/closet/crate/rcd, /obj/machinery/camera/motion{ - c_tag = "EVA Motion Sensor"; - name = "motion-sensitive security camera" + c_tag = "EVA Motion Sensor" }, /turf/open/floor/plasteel/dark, /area/ai_monitored/storage/eva) @@ -11181,13 +11053,6 @@ dir = 4 }, /area/construction/mining/aux_base) -"aCU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel, -/area/security/armory) "aCW" = ( /obj/structure/reagent_dispensers/watertank, /obj/effect/spawner/lootdrop/maintenance, @@ -11761,19 +11626,16 @@ /obj/structure/fans/tiny, /turf/open/floor/plating, /area/chapel/main) -"aEp" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 +"aEs" = ( +/obj/structure/window/reinforced, +/obj/vehicle/ridden/secway, +/obj/item/key/security, +/obj/machinery/door/window/eastleft{ + name = "Secway Docking Port" }, -/obj/structure/ore_box, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"aEt" = ( -/obj/item/restraints/handcuffs/fake, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears, -/turf/open/floor/plating, -/area/maintenance/bar) +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/showroomfloor, +/area/space) "aEz" = ( /obj/machinery/power/apc{ dir = 4; @@ -12224,13 +12086,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/dark, /area/chapel/main) -"aFD" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "aFG" = ( /turf/open/floor/plasteel/arrival{ dir = 4 @@ -14315,8 +14170,8 @@ /turf/open/floor/wood, /area/crew_quarters/theatre) "aKK" = ( -/obj/structure/closet/wardrobe/botanist, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/closet/secure_closet/hydroponics, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "aKL" = ( @@ -15037,6 +14892,7 @@ /area/library) "aMI" = ( /obj/machinery/light/small, +/obj/structure/closet/wardrobe/botanist, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "aMJ" = ( @@ -21729,7 +21585,7 @@ /area/maintenance/disposal) "beP" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /turf/open/floor/plating, @@ -21748,7 +21604,7 @@ /area/maintenance/disposal) "beR" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/machinery/recycler, @@ -21760,7 +21616,7 @@ /area/maintenance/disposal) "beS" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/machinery/light/small{ @@ -21775,8 +21631,7 @@ "beU" = ( /obj/machinery/conveyor{ dir = 6; - id = "garbage"; - verted = -1 + id = "garbage" }, /turf/open/floor/plating, /area/maintenance/disposal) @@ -22230,23 +22085,15 @@ /area/hallway/secondary/entry) "bgj" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "garbage" }, /turf/open/floor/plating, /area/maintenance/disposal) "bgk" = ( -/obj/machinery/conveyor{ - dir = 5; - id = "garbage" - }, -/turf/open/floor/plating, -/area/maintenance/disposal) -"bgl" = ( /obj/machinery/conveyor{ dir = 10; - id = "garbage"; - verted = -1 + id = "garbage" }, /turf/open/floor/plating, /area/maintenance/disposal) @@ -22835,7 +22682,6 @@ /area/maintenance/starboard) "bhI" = ( /obj/machinery/conveyor{ - dir = 1; id = "garbage" }, /turf/open/floor/plating, @@ -22894,13 +22740,6 @@ }, /turf/open/floor/plating, /area/maintenance/port) -"bhP" = ( -/obj/machinery/flasher{ - id = "Cell 2"; - pixel_x = -28 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) "bhQ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -23376,7 +23215,6 @@ /area/maintenance/disposal) "bjb" = ( /obj/machinery/conveyor{ - dir = 1; id = "garbage" }, /obj/structure/sign/warning/vacuum{ @@ -23963,9 +23801,7 @@ /area/maintenance/starboard) "bkz" = ( /obj/machinery/conveyor{ - dir = 1; - id = "garbage"; - layer = 2.5 + id = "garbage" }, /obj/machinery/door/poddoor/preopen{ id = "Disposal Exit"; @@ -28298,8 +28134,8 @@ /area/maintenance/starboard) "buB" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = -1; - id = "QMLoad" + id = "QMLoad"; + dir = 8 }, /turf/open/floor/plasteel, /area/quartermaster/storage) @@ -28866,7 +28702,7 @@ /area/maintenance/starboard) "bvS" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "QMLoad" }, /obj/machinery/door/poddoor{ @@ -28878,14 +28714,14 @@ "bvT" = ( /obj/structure/plasticflaps, /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "QMLoad" }, /turf/open/floor/plating, /area/quartermaster/storage) "bvU" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "QMLoad" }, /obj/machinery/light, @@ -28900,7 +28736,7 @@ /area/quartermaster/storage) "bvV" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "QMLoad" }, /obj/effect/turf_decal/stripes/line{ @@ -30403,11 +30239,7 @@ /turf/open/floor/plating, /area/science/server) "bzx" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - target_temperature = 80; - dir = 2; - on = 1 - }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plasteel/dark, /area/science/server) @@ -36005,7 +35837,7 @@ id = "mixingsparker"; pixel_x = 25 }, -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output{ dir = 4 }, /turf/open/floor/engine/vacuum, @@ -36016,9 +35848,8 @@ master_tag = "tox_airlock_control"; pixel_y = 24 }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/engine, @@ -36850,10 +36681,8 @@ id = "mixingsparker"; pixel_x = 25 }, -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 4; - frequency = 1441; - id = "air_in" +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input{ + dir = 4 }, /turf/open/floor/engine/vacuum, /area/science/mixing) @@ -36861,9 +36690,8 @@ /obj/structure/sign/warning/fire{ pixel_y = -32 }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/engine, @@ -40926,8 +40754,7 @@ "bYv" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Mix to Space"; - on = 0 + name = "Mix to Space" }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/port/aft) @@ -41186,8 +41013,7 @@ "bZl" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Mix to Port"; - on = 0 + name = "Mix to Port" }, /obj/machinery/light/small, /turf/open/floor/plating, @@ -42056,10 +41882,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Mix to Space"; - on = 1 + name = "Mix to Space" }, /turf/open/floor/plating/airless, /area/maintenance/port/aft) @@ -43990,11 +43815,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "cgn" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - target_temperature = 80; - dir = 2; - on = 1 - }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, /obj/effect/turf_decal/stripes/line{ dir = 9 }, @@ -45180,8 +45001,7 @@ "cju" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Incinerator to Output"; - on = 0 + name = "Incinerator to Output" }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -45544,12 +45364,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"ckq" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_2) "ckr" = ( /obj/structure/reagent_dispensers/fueltank, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -45832,8 +45646,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/components/binary/pump{ dir = 4; - name = "Mix to Incinerator"; - on = 0 + name = "Mix to Incinerator" }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) @@ -46187,6 +46000,18 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, +/obj/machinery/embedded_controller/radio/airlock_controller{ + airpump_tag = "incinerator_airlock_pump"; + exterior_door_tag = "incinerator_airlock_exterior"; + id_tag = "incinerator_airlock_control"; + interior_door_tag = "incinerator_airlock_interior"; + name = "Incinerator Access Console"; + pixel_x = 38; + pixel_y = 6; + req_access_txt = "12"; + sanitize_external = 1; + sensor_tag = "incinerator_airlock_sensor" + }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "cmg" = ( @@ -46412,9 +46237,8 @@ /turf/open/floor/plasteel, /area/construction) "cmY" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 2; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 2 }, /obj/machinery/light/small{ dir = 8 @@ -46434,9 +46258,8 @@ /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "cmZ" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1 }, /obj/structure/sign/warning/fire{ pixel_x = 32 @@ -46674,10 +46497,9 @@ /turf/open/floor/plating, /area/maintenance/aft) "cnF" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 2; - name = "Waste Out"; - on = 1 + name = "Waste Out" }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -46893,15 +46715,13 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cop" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 1; - frequency = 1441; - id = "inc_in" +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input{ + dir = 1 }, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "coq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/incinerator_output{ dir = 1 }, /obj/structure/sign/warning/vacuum/external{ @@ -46911,14 +46731,15 @@ /area/maintenance/disposal/incinerator) "cor" = ( /obj/machinery/igniter{ - icon_state = "igniter0"; - id = "Incinerator"; - luminosity = 2; - on = 0 + id = "Incinerator" }, /obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/machinery/air_sensor{ + pixel_x = -32; + pixel_y = -32 + }, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cos" = ( @@ -47132,15 +46953,6 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"cpc" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_4) -"cpd" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_4) "cpe" = ( /obj/docking_port/stationary/random{ dir = 8; @@ -47294,6 +47106,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/light{ + dir = 8 + }, /turf/open/floor/plasteel, /area/engine/engineering) "cpE" = ( @@ -47318,52 +47133,6 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"cpJ" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ - dir = 4; - id = "pod4"; - name = "escape pod 4"; - port_direction = 2; - preferred_direction = 4; - timid = 0 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_4) -"cpK" = ( -/obj/machinery/computer/shuttle/pod{ - pixel_y = -32; - possible_destinations = "pod_lavaland2"; - shuttleId = "pod2" - }, -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_2) -"cpL" = ( -/obj/item/storage/pod{ - pixel_x = 6; - pixel_y = -28 - }, -/obj/item/device/radio/intercom{ - pixel_y = 25 - }, -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/light/small, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_2) -"cpM" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_4) "cpN" = ( /obj/machinery/power/turbine{ luminosity = 2 @@ -47544,18 +47313,16 @@ /turf/open/floor/plating, /area/engine/engineering) "cqq" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ +/obj/docking_port/stationary{ dir = 8; - id = "pod2"; - name = "escape pod 2"; - port_direction = 2; - timid = 0 + dwidth = 1; + height = 4; + name = "escape pod loader"; + roundstart_template = /datum/map_template/shuttle/escape_pod/default; + width = 3 }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_2) +/turf/open/space/basic, +/area/space) "cqr" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -47960,13 +47727,13 @@ /obj/structure/lattice/catwalk, /turf/open/space, /area/solar/starboard/aft) +"crH" = ( +/turf/open/space/basic, +/area/space/nearstation) "crI" = ( /obj/structure/chair/stool, /turf/open/floor/plating, /area/engine/engineering) -"crJ" = ( -/turf/open/space/basic, -/area/space/nearstation) "crK" = ( /obj/structure/cable{ icon_state = "1-2" @@ -48026,13 +47793,6 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) -"csb" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "csc" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, @@ -48100,18 +47860,6 @@ /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "csr" = ( -/obj/machinery/embedded_controller/radio/airlock_controller{ - name = "Incinerator Access Console"; - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_access_control"; - interior_door_tag = "incinerator_airlock_interior"; - pixel_x = 6; - pixel_y = -26; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor"; - req_access_txt = "12" - }, /obj/machinery/button/ignition{ id = "Incinerator"; pixel_x = -6; @@ -48123,23 +47871,6 @@ /obj/machinery/meter, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) -"css" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"csx" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) "csy" = ( /obj/structure/table, /obj/item/weldingtool, @@ -48704,8 +48435,7 @@ "cuq" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 0; - name = "Air Out"; - on = 0 + name = "Air Out" }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, @@ -49824,12 +49554,6 @@ /obj/machinery/light/small, /turf/open/floor/plating, /area/hallway/secondary/entry) -"cwU" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_1) "cwV" = ( /obj/docking_port/stationary/random{ dir = 8; @@ -49848,39 +49572,11 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) -"cxl" = ( -/obj/machinery/computer/shuttle/pod{ - pixel_y = -32; - possible_destinations = "pod_lavaland1"; - shuttleId = "pod1" - }, -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) "cxn" = ( /obj/structure/lattice, /obj/effect/landmark/carpspawn, /turf/open/space, /area/space/nearstation) -"cxx" = ( -/obj/item/storage/pod{ - pixel_x = 6; - pixel_y = -28 - }, -/obj/item/device/radio/intercom{ - pixel_y = 25 - }, -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/light/small, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) "cxA" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -49894,24 +49590,10 @@ height = 13; id = "ferry_home"; name = "port bay 2"; - turf_type = /turf/open/space; width = 5 }, /turf/open/space/basic, /area/space) -"cxF" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ - dir = 8; - id = "pod1"; - name = "escape pod 1"; - port_direction = 2; - timid = 0 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) "cxG" = ( /obj/machinery/door/airlock/external{ cyclelinkeddir = 0; @@ -50221,34 +49903,6 @@ "czK" = ( /turf/closed/wall, /area/security/vacantoffice) -"czL" = ( -/obj/machinery/computer/shuttle/pod{ - pixel_y = -32; - possible_destinations = "pod_lavaland4"; - shuttleId = "pod4" - }, -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_4) -"czM" = ( -/obj/item/device/radio/intercom{ - pixel_y = 25 - }, -/obj/item/storage/pod{ - pixel_x = 6; - pixel_y = -32 - }, -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/light/small, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_4) "czN" = ( /obj/docking_port/stationary/random{ dir = 4; @@ -50531,7 +50185,7 @@ /area/maintenance/port/aft) "cAI" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = -1; + dir = 8; id = "garbage"; name = "disposal conveyor" }, @@ -50908,6 +50562,7 @@ /area/maintenance/aft) "cBE" = ( /obj/effect/landmark/event_spawn, +/obj/machinery/air_sensor/atmos/toxins_mixing_tank, /turf/open/floor/engine/vacuum, /area/science/mixing) "cBF" = ( @@ -51155,21 +50810,9 @@ /obj/machinery/deepfryer, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) -"cCs" = ( -/obj/structure/mining_shuttle_beacon{ - dir = 4 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cCt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/docking_port/stationary/public_mining_dock{ - dir = 8 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) +"cCS" = ( +/turf/open/space, +/area/space/nearstation) "cCT" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -51351,13 +50994,6 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) -"cFn" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "cFI" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -51373,7 +51009,7 @@ state = 2 }, /turf/open/floor/plating/airless, -/area/space/nearstation) +/area/space) "cFU" = ( /obj/machinery/power/emitter/anchored{ dir = 8; @@ -51412,11 +51048,11 @@ dir = 8 }, /turf/open/floor/plating/airless, -/area/space/nearstation) +/area/space) "cGV" = ( /obj/machinery/the_singularitygen/tesla, /turf/open/floor/plating/airless, -/area/space/nearstation) +/area/space) "cGZ" = ( /obj/machinery/light{ dir = 4 @@ -51732,15 +51368,6 @@ }, /turf/open/floor/plating, /area/hallway/secondary/entry) -"cIK" = ( -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/maintenance/bar) -"cKY" = ( -/obj/structure/table/wood/poker, -/obj/item/coin/iron, -/turf/open/floor/wood, -/area/maintenance/bar) "cMm" = ( /obj/structure/cable{ icon_state = "1-2" @@ -51803,6 +51430,13 @@ }, /turf/open/floor/plasteel/airless/solarpanel, /area/solar/starboard/aft) +"cNt" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/engine/engineering) "cNE" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, @@ -51990,10 +51624,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"cQG" = ( -/obj/structure/lattice, -/turf/open/space, -/area/space) "cSz" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -52029,6 +51659,10 @@ /obj/machinery/power/tesla_coil, /turf/open/floor/plating/airless, /area/space) +"cSI" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space) "cSK" = ( /obj/structure/cable/yellow{ icon_state = "0-4" @@ -52360,10 +51994,17 @@ "cVb" = ( /turf/closed/wall, /area/hallway/secondary/service) -"dcQ" = ( -/obj/effect/spawner/structure/window/reinforced, +"cXd" = ( +/obj/structure/falsewall, +/obj/effect/turf_decal/delivery/white, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"cZO" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/cleanable/blood/old, +/obj/item/device/assembly/signaler, /turf/open/floor/plating, -/area/space/nearstation) +/area/maintenance/bar) "dfh" = ( /obj/machinery/power/apc{ areastring = "/area/science/circuit"; @@ -52378,21 +52019,9 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"diu" = ( -/obj/structure/chair/stool, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/bar) -"dlj" = ( -/turf/open/floor/plating/airless, -/area/engine/engineering) -"dnc" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "0" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, +"dpp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, /area/maintenance/bar) "dqu" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -52404,66 +52033,44 @@ }, /turf/closed/wall, /area/science/circuit) -"dxw" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Singularity"; - name = "radiation shutters" +"dwQ" = ( +/obj/structure/grille, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"dKf" = ( +/turf/closed/wall/r_wall, +/area/security/armory) +"dMY" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"dAs" = ( -/obj/structure/sign/poster/random{ - pixel_y = -32 +/obj/structure/cable{ + icon_state = "1-2" }, /turf/open/floor/wood, /area/maintenance/bar) -"dCs" = ( -/obj/machinery/button/door{ - id = "Singularity"; - name = "Shutters Control"; - pixel_x = -25; - req_access_txt = "11" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"dFc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/bar) -"dFm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) "dMZ" = ( /obj/structure/sign/poster/official/random{ pixel_y = 32 }, /turf/open/floor/plasteel/white, /area/science/circuit) -"dVC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +"dPI" = ( +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"dTy" = ( +/obj/effect/spawner/lootdrop/keg, +/turf/open/floor/wood{ + icon_state = "wood-broken7" }, -/obj/machinery/light, -/turf/open/floor/plasteel/red/side, -/area/security/brig) +/area/maintenance/bar) +"dUz" = ( +/obj/structure/table/wood, +/obj/item/storage/box/drinkingglasses, +/turf/open/floor/wood, +/area/maintenance/bar) "eaI" = ( /obj/structure/table/reinforced, /obj/item/device/radio/intercom{ @@ -52471,20 +52078,57 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"erb" = ( +"ebz" = ( +/obj/structure/window/reinforced, +/obj/vehicle/ridden/secway, +/obj/item/key/security, +/obj/machinery/door/window/eastleft{ + name = "Secway Docking Port" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/showroomfloor, +/area/space/nearstation) +"eeA" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 + dir = 4 }, -/turf/open/floor/plasteel/red/side{ - dir = 1 +/turf/closed/wall, +/area/maintenance/bar) +"eeO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 }, +/turf/open/floor/plating/airless, +/area/space) +"ejP" = ( +/obj/machinery/suit_storage_unit/security, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"ekX" = ( +/obj/machinery/flasher{ + id = "Cell 4"; + pixel_x = -28 + }, +/turf/open/floor/plasteel/floorgrime, /area/security/brig) -"erH" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable{ - icon_state = "4-8" +"enX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel, +/area/security/armory) +"exs" = ( +/turf/open/floor/plasteel/showroomfloor, +/area/space/nearstation) +"exQ" = ( +/obj/structure/table, +/obj/item/storage/toolbox/drone, +/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "eyM" = ( /obj/machinery/mineral/ore_redemption{ @@ -52494,41 +52138,12 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel, /area/quartermaster/miningdock) -"eyV" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "seclobby"; - name = "security shutters" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/security/brig) -"eCQ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood, -/area/maintenance/bar) "eHI" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) -"eLY" = ( -/obj/effect/turf_decal/stripes/white/line, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 1 - }, -/obj/machinery/door_timer{ - id = "Secure Cell"; - name = "Secure Cell"; - pixel_y = -32 - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) "eRz" = ( /obj/structure/lattice, /obj/structure/grille, @@ -52544,42 +52159,39 @@ }, /turf/open/floor/plasteel, /area/quartermaster/miningdock) -"eXc" = ( -/obj/structure/window/reinforced, -/obj/vehicle/ridden/secway, -/obj/item/key/security, -/obj/machinery/door/window/eastleft{ - name = "Secway Docking Port" +"faG" = ( +/turf/open/floor/plasteel/purple/side{ + tag = "icon-purple (NORTH)"; + icon_state = "purple"; + dir = 1 }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/showroomfloor, -/area/space) -"eXD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/obj/structure/tank_dispenser/oxygen, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"eYQ" = ( -/obj/machinery/vending/kink, -/turf/open/floor/wood, -/area/maintenance/bar) -"fbL" = ( -/obj/structure/table, -/obj/item/storage/toolbox/drone, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/area/crew_quarters/cryopod) "fcG" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, /turf/closed/wall/r_wall, /area/science/mixing) +"fev" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "seclobby"; + name = "security shutters" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/security/brig) "flc" = ( /obj/machinery/bookbinder, /turf/open/floor/plasteel/white, /area/science/circuit) +"flZ" = ( +/turf/open/floor/plasteel/red/side{ + dir = 6 + }, +/area/security/brig) "fnC" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -52593,87 +52205,88 @@ }, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"fnP" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/decal/cleanable/blood/old, -/obj/item/device/assembly/signaler, -/turf/open/floor/plating, -/area/maintenance/bar) -"fpI" = ( -/turf/open/floor/plasteel/red/side{ - dir = 8 +"fvg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/area/security/brig) -"fAn" = ( +/turf/open/floor/plating/airless, +/area/space) +"fBa" = ( /obj/structure/grille, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plating/airless, /area/engine/engineering) -"fAq" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/red/side{ - dir = 4 +"fBP" = ( +/obj/machinery/power/emitter/anchored{ + dir = 4; + state = 2 }, -/area/security/brig) -"fDs" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 +/obj/structure/cable{ + icon_state = "0-8" }, -/turf/open/floor/wood, -/area/maintenance/bar) +/turf/open/floor/plating/airless, +/area/engine/engineering) +"fGf" = ( +/obj/machinery/smartfridge/disks, +/turf/open/floor/plasteel/hydrofloor, +/area/hydroponics) +"fGu" = ( +/obj/structure/lattice, +/obj/structure/grille, +/turf/open/space, +/area/space) +"fJG" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/white/corner, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) "fKl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, /area/science/circuit) -"fPq" = ( -/obj/item/device/radio/intercom{ - freerange = 0; - frequency = 1459; - name = "Station Intercom (General)"; - pixel_x = -30 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/bar) -"fPE" = ( -/obj/structure/table, -/obj/item/grenade/barrier{ - pixel_x = 4 - }, -/obj/item/grenade/barrier, -/obj/item/grenade/barrier{ - pixel_x = -4 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/security/armory) -"fSk" = ( +"fVA" = ( /obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/rack, +/obj/item/clothing/mask/gas/sechailer{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/mask/gas/sechailer, +/obj/item/clothing/mask/gas/sechailer{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"fVS" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable/yellow{ icon_state = "1-2" }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" +/turf/open/floor/plating, +/area/engine/engineering) +"fXl" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Singularity"; + name = "radiation shutters" }, -/area/maintenance/bar) -"fVu" = ( -/obj/machinery/camera/motion{ - c_tag = "Non-Lethal Armory Motion Sensor"; - dir = 4 +/obj/effect/turf_decal/bot{ + dir = 2 }, -/obj/effect/turf_decal/stripes/end{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"fWC" = ( -/obj/machinery/chem_dispenser/drinks/beer, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/maintenance/bar) +/turf/open/floor/plating, +/area/engine/engineering) +"fZs" = ( +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless, +/area/engine/engineering) "gbq" = ( /obj/structure/cable{ icon_state = "4-8" @@ -52686,93 +52299,47 @@ /obj/item/stack/sheet/glass/fifty, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"get" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 +"gcN" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/wood, -/area/maintenance/bar) -"ghy" = ( -/obj/machinery/light/small{ - dir = 8; - light_color = "#fff4bc" +/turf/open/floor/plasteel, +/area/security/armory) +"gjf" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel/red/side{ + dir = 4 }, -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/plating, -/area/engine/engineering) +/area/security/brig) "gjl" = ( /turf/closed/wall, /area/quartermaster/warehouse) -"gmz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"gva" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"gvi" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 +"gqU" = ( +/obj/machinery/door/window/brigdoor/security/cell{ + id = "Cell 3"; + name = "Cell 3" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "4-8" }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"gvx" = ( -/turf/open/floor/plasteel, -/area/security/execution/transfer) +/turf/open/floor/plasteel/red/side, +/area/security/brig) "gwd" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /turf/open/floor/plasteel, /area/science/circuit) -"gAl" = ( -/turf/open/floor/plasteel/red/side{ - dir = 10 +"gKO" = ( +/obj/structure/cable{ + icon_state = "0-8" }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, /area/security/brig) -"gGR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/maintenance/bar) -"gKN" = ( -/obj/structure/bed, -/obj/item/clothing/suit/straight_jacket, -/obj/item/clothing/mask/muzzle, -/turf/open/floor/plasteel, -/area/security/execution/transfer) -"gLD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/maintenance/fore/secondary) "gLH" = ( /obj/machinery/door/airlock/external{ name = "External Access"; @@ -52783,17 +52350,31 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"gMx" = ( -/obj/effect/landmark/start/atmospheric_technician, -/turf/open/floor/plasteel, -/area/engine/atmos) -"gQx" = ( -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (NORTH)"; - icon_state = "purple"; - dir = 1 +"gMt" = ( +/obj/structure/closet/secure_closet/security/sec, +/obj/effect/turf_decal/bot{ + dir = 2 }, -/area/crew_quarters/cryopod) +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"gMI" = ( +/obj/structure/sign/poster/random{ + pixel_y = -32 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) +"gUa" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"gVz" = ( +/obj/structure/table/wood/poker, +/turf/open/floor/wood, +/area/maintenance/bar) "gWd" = ( /obj/structure/cable{ icon_state = "1-4" @@ -52804,18 +52385,6 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) -"gZp" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 1; - id_tag = "lobbyairlock"; - name = "Security Lobby"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, -/area/security/brig) "gZG" = ( /obj/structure/closet/crate/freezer/surplus_limbs, /obj/item/reagent_containers/glass/beaker/synthflesh, @@ -52840,59 +52409,37 @@ }, /turf/open/floor/plating, /area/maintenance/port) -"hfY" = ( -/obj/machinery/flasher{ - id = "brigentry"; - pixel_y = -28 +"hcV" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"hik" = ( -/obj/structure/table/wood, -/obj/item/storage/box/drinkingglasses, /turf/open/floor/wood, /area/maintenance/bar) -"hjI" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, +"heb" = ( +/turf/open/floor/plasteel/red/side, /area/security/brig) -"hnm" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "briggate"; - name = "security shutters" +"heG" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/door/window/eastright{ - name = "Brig Desk"; - req_access_txt = "2" +/turf/open/floor/wood, +/area/maintenance/bar) +"hkC" = ( +/obj/machinery/flasher{ + id = "Cell 3"; + pixel_x = -28 }, -/turf/open/floor/plasteel/dark, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/floorgrime, /area/security/brig) -"hpY" = ( -/obj/effect/spawner/lootdrop/keg, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, +"hpF" = ( +/obj/machinery/vending/kink, +/turf/open/floor/wood, /area/maintenance/bar) -"htN" = ( -/obj/structure/sign/poster/random{ - pixel_y = -32 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"hBF" = ( +"hrd" = ( /obj/machinery/door_timer{ id = "Cell 2"; name = "Cell 2"; @@ -52902,55 +52449,147 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel/red/corner, /area/security/brig) -"hHa" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "briggate"; - name = "security shutters" - }, -/obj/machinery/door/window/southleft{ - base_state = "right"; - icon_state = "right"; - name = "Brig Desk"; - req_access_txt = "1" - }, +"hrv" = ( /obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel/dark, -/area/security/brig) -"hNj" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "0" + icon_state = "1-2" }, /turf/open/floor/plating, -/area/maintenance/bar) -"hXw" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken6" +/area/maintenance/fore/secondary) +"hse" = ( +/obj/structure/closet/l3closet/security, +/turf/open/floor/plasteel/showroomfloor, +/area/space/nearstation) +"hsU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 }, +/turf/open/floor/wood, /area/maintenance/bar) -"iev" = ( +"htj" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/security/armory) -"imZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood{ - icon_state = "wood-broken5" +"hyb" = ( +/obj/structure/table, +/obj/item/storage/box/firingpins, +/obj/item/storage/box/firingpins, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"hHu" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + name = "Incinerator Access"; + req_access_txt = "12" + }, +/obj/structure/barricade/wooden{ + name = "wooden barricade (CLOSED)" + }, +/turf/open/floor/plating, +/area/maintenance/bar) +"hNR" = ( +/obj/structure/table/wood/poker, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"hPY" = ( +/obj/structure/bed, +/obj/item/bedsheet/grey, +/obj/effect/decal/cleanable/semen{ + desc = "Blech."; + name = "dried semen" + }, +/obj/effect/spawner/lootdrop/costume, +/turf/open/floor/plating{ + icon_state = "platingdmg3" }, /area/maintenance/bar) -"inb" = ( -/obj/structure/rack, -/obj/item/gun/energy/e_gun/dragnet, -/obj/item/gun/energy/e_gun/dragnet, -/obj/effect/turf_decal/bot_white, -/obj/item/gun/energy/pumpaction/blaster, -/obj/item/gun/energy/pumpaction/blaster, -/turf/open/floor/plasteel/dark, -/area/security/armory) +"hQe" = ( +/obj/machinery/light/small{ + dir = 8; + light_color = "#fff4bc" + }, +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/plating, +/area/engine/engineering) +"hSf" = ( +/obj/structure/lattice, +/obj/structure/grille, +/turf/open/space/basic, +/area/space) +"hYu" = ( +/obj/structure/table, +/obj/item/storage/toolbox/electrical{ + pixel_x = 2; + pixel_y = 4 + }, +/obj/item/storage/toolbox/electrical{ + pixel_x = -2 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"hZr" = ( +/obj/machinery/door_timer{ + id = "Cell 3"; + name = "Cell 3"; + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/red/corner, +/area/security/brig) +"iaO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"iei" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/red/side{ + dir = 4 + }, +/area/security/brig) +"iex" = ( +/turf/open/space/basic, +/area/engine/engineering) +"ifj" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + req_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/maintenance/bar) +"ilR" = ( +/obj/machinery/power/apc{ + areastring = "/area/crew_quarters/cryopod"; + dir = 4; + name = "Cryogenics APC"; + pixel_x = 24 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/crew_quarters/cryopod) +"iob" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel/red/side{ + dir = 4 + }, +/area/security/brig) "ipA" = ( /obj/machinery/droneDispenser, /turf/open/floor/plating, @@ -52961,37 +52600,13 @@ /obj/item/pen, /turf/open/floor/plasteel/white, /area/science/circuit) -"ivo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +"iCL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 2; - id_tag = "innerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/red/side{ - dir = 9 - }, -/area/security/brig) -"iyf" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"iyX" = ( -/obj/machinery/vending/cigarette, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/brig) -"iDC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/maintenance/bar) +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "iEJ" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod One" @@ -53001,10 +52616,6 @@ }, /turf/open/floor/plating, /area/hallway/secondary/entry) -"iFU" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/space) "iNn" = ( /obj/machinery/camera{ c_tag = "Kitchen Cold Room" @@ -53013,26 +52624,43 @@ /obj/structure/reagent_dispensers/cooking_oil, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) -"iUe" = ( -/turf/open/floor/plasteel/red/corner{ - dir = 1 +"iPE" = ( +/obj/structure/bed, +/obj/item/clothing/suit/straight_jacket, +/obj/item/clothing/mask/muzzle, +/turf/open/floor/plasteel, +/area/security/execution/transfer) +"iWy" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 }, -/area/security/brig) -"iVO" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Engine Containment Port Aft"; - dir = 1; - network = list("engine") +/turf/open/floor/wood, +/area/maintenance/bar) +"iWK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/maintenance/bar) +"iWM" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"iWY" = ( -/obj/structure/cable{ - icon_state = "1-8" +/turf/open/floor/wood{ + icon_state = "wood-broken6" }, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) +/area/maintenance/bar) +"iXO" = ( +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/obj/machinery/newscaster{ + pixel_x = 30 + }, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/maintenance/bar) "jbf" = ( /obj/structure/cable{ icon_state = "0-2" @@ -53045,33 +52673,19 @@ }, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"jcD" = ( -/obj/structure/rack, -/obj/item/clothing/suit/armor/bulletproof{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/suit/armor/bulletproof{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001; - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001; - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/security/armory) +"jbA" = ( +/obj/structure/sign/warning/securearea, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"jbT" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/maintenance/bar) +"jcS" = ( +/obj/machinery/light, +/turf/open/floor/plating/airless, +/area/engine/engineering) "jgm" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -53090,14 +52704,9 @@ /obj/machinery/rnd/production/techfab/department/cargo, /turf/open/floor/plasteel, /area/quartermaster/office) -"jlZ" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/maintenance/bar) +"jnp" = ( +/turf/open/floor/plasteel/dark, +/area/security/processing) "jrE" = ( /obj/machinery/rnd/production/protolathe/department/science, /obj/structure/sign/poster/official/random{ @@ -53105,28 +52714,33 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"jrJ" = ( +"jrX" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/bar) +"jsN" = ( +/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ - icon_state = "0-8" + icon_state = "4-8" }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/security/brig) -"jyK" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Brig Control"; - req_access_txt = "3" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/brig) +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"juA" = ( +/obj/machinery/flasher/portable, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/security/armory) "jAD" = ( /obj/structure/grille, /turf/open/floor/plating/airless, /area/space/nearstation) +"jAM" = ( +/obj/machinery/suit_storage_unit/security, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "jCq" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -53139,27 +52753,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"jCY" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/maintenance/fore/secondary) -"jEl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"jFG" = ( -/obj/structure/table, -/obj/item/storage/box/firingpins, -/obj/item/storage/box/firingpins, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) "jHt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment{ @@ -53173,28 +52766,24 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"jKG" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 1; - id_tag = "lobbyairlock"; - name = "Security Lobby"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"jMi" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "jMF" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, /turf/closed/wall, /area/science/circuit) +"jOb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance/abandoned{ + req_access_txt = "0" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/bar) "jSO" = ( /obj/machinery/light{ dir = 4 @@ -53204,6 +52793,23 @@ }, /turf/open/floor/plasteel, /area/science/circuit) +"jTA" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Engine Containment Starboard Aft"; + dir = 1; + network = list("engine") + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"jUO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/armory) "jVl" = ( /obj/structure/cable{ icon_state = "4-8" @@ -53213,33 +52819,64 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"jWi" = ( -/turf/open/floor/plasteel/showroomfloor, -/area/space/nearstation) -"jXD" = ( -/obj/machinery/flasher{ - id = "Cell 3"; - pixel_x = -28 +"jZP" = ( +/obj/item/device/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_x = -30 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 +/turf/open/floor/wood{ + icon_state = "wood-broken" }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"kbf" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Singularity"; - name = "radiation shutters" +/area/maintenance/bar) +"kbh" = ( +/obj/machinery/light{ + dir = 8 }, -/obj/effect/turf_decal/bot{ - dir = 2 +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/plating, +/obj/structure/grille, +/turf/open/floor/plating/airless, /area/engine/engineering) -"kgu" = ( -/turf/open/space/basic, +"kbA" = ( +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating/airless, /area/engine/engineering) +"kcH" = ( +/obj/machinery/cryopod{ + tag = "icon-cryopod-open (EAST)"; + icon_state = "cryopod-open"; + dir = 4 + }, +/turf/open/floor/noslip, +/area/crew_quarters/cryopod) +"kdx" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/closet/secure_closet/brig{ + id = "Secure Cell"; + name = "Secure Cell Locker" + }, +/obj/effect/turf_decal/stripes/white/end{ + dir = 4 + }, +/obj/effect/turf_decal/delivery/white, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) "khb" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -53257,6 +52894,20 @@ }, /turf/open/floor/plating, /area/maintenance/fore/secondary) +"kjK" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"klO" = ( +/obj/effect/landmark/secequipment, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) "knx" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/engineering{ @@ -53277,95 +52928,78 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"kqE" = ( -/obj/structure/table/wood/poker, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +"kso" = ( +/obj/machinery/button/door{ + id = "Singularity"; + name = "Shutters Control"; + pixel_x = -25; + req_access_txt = "11" }, -/turf/open/floor/wood, -/area/maintenance/bar) -"ksK" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - name = "Incinerator Access"; - req_access_txt = "12" +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/structure/barricade/wooden{ - name = "wooden barricade (CLOSED)" +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, /turf/open/floor/plating, -/area/maintenance/bar) -"kuC" = ( -/obj/item/shard, -/obj/item/wirecutters, -/obj/item/wallframe/camera, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/bar) -"kvn" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/brig) -"kwU" = ( +/area/engine/engineering) +"ksW" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/red/corner{ - dir = 8 - }, -/area/security/brig) -"kyp" = ( /obj/machinery/door/firedoor, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 1; - id_tag = "outerbrig"; + cyclelinkeddir = 2; + id_tag = "innerbrig"; name = "Brig"; req_access_txt = "63" }, /turf/open/floor/plasteel/red/side{ - dir = 9 + dir = 10 }, /area/security/brig) +"ktN" = ( +/obj/effect/turf_decal/loading_area/white, +/obj/effect/turf_decal/stripes/white/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/white/corner, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"kwo" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/armory) "kzT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, /turf/closed/wall/r_wall, /area/science/mixing) -"kEw" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "4-8" +"kBh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"kIZ" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-4" +/turf/open/floor/plasteel/red/corner{ + dir = 1 }, -/turf/open/floor/plating, -/area/security/warden) -"kOs" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) +/area/security/brig) +"kNF" = ( +/obj/structure/closet/bombcloset/security, +/turf/open/floor/plasteel/showroomfloor, +/area/space) "kOw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/white, /area/science/mixing) +"kOO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/bar) "kPd" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/structure/cable{ @@ -53373,17 +53007,6 @@ }, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"kPh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/maintenance/bar) -"kPB" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "kQk" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance{ @@ -53392,61 +53015,56 @@ }, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) +"kRe" = ( +/obj/item/restraints/handcuffs/fake, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears, +/turf/open/floor/plating, +/area/maintenance/bar) "kSb" = ( /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/quartermaster/miningdock) -"ldw" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space, -/area/space) -"ldy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/red/side{ - dir = 6 +"kTZ" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Singularity"; + name = "radiation shutters" }, -/area/security/brig) -"lgs" = ( -/obj/structure/table/wood/poker, -/turf/open/floor/wood, -/area/maintenance/bar) -"lkm" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space) -"lkA" = ( -/obj/machinery/power/apc{ - areastring = "/area/maintenance/bar"; - dir = 2; - name = "Maintenance Bar APC"; - pixel_x = 1; - pixel_y = -24 - }, -/obj/structure/cable, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"lkC" = ( -/obj/structure/sign/poster/official/no_erp, -/turf/closed/wall, -/area/maintenance/bar) -"lmZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"lou" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/light/small{ - dir = 4 +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"kUh" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"kXH" = ( +/obj/structure/falsewall, +/turf/open/floor/plating, +/area/maintenance/bar) +"leL" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/red/side{ + dir = 10 + }, +/area/security/brig) +"lnm" = ( +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/obj/item/crowbar, +/obj/item/device/electropack/shockcollar, +/turf/open/floor/plating, +/area/maintenance/bar) +"lyP" = ( +/obj/machinery/flasher{ + id = "Cell 2"; + pixel_x = -28 }, /turf/open/floor/plasteel/floorgrime, /area/security/brig) @@ -53454,357 +53072,19 @@ /obj/structure/sign/nanotrasen, /turf/closed/wall, /area/science/circuit) -"lJX" = ( -/obj/structure/closet/secure_closet/security/sec, -/obj/effect/turf_decal/bot{ - dir = 2 +"lCe" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) +/turf/open/floor/plating/airless, +/area/engine/engineering) "lMg" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 }, /turf/open/floor/plasteel, /area/science/circuit) -"lQG" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/science/circuit) -"lTm" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/engine/engineering) -"lXp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/brig) -"maf" = ( -/obj/structure/sign/warning/securearea, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"mdX" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"mkG" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"mlj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "0" - }, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/bar) -"msk" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"mtY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"mwi" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"mxQ" = ( -/obj/machinery/door/poddoor/shutters{ - id = "lowsecarmory"; - name = "Non-Lethal Armoury Shutter" - }, -/obj/machinery/button/door{ - id = "lowsecarmory"; - name = "Non-Lethal Armory Shutters"; - pixel_y = 26; - req_access_txt = "3" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/security/main) -"myR" = ( -/obj/structure/table/glass, -/obj/item/paper_bin, -/obj/item/pen/blue, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (NORTH)"; - icon_state = "purple"; - dir = 1 - }, -/area/crew_quarters/cryopod) -"mAD" = ( -/obj/machinery/door_timer{ - id = "Cell 3"; - name = "Cell 3"; - pixel_y = -32 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner, -/area/security/brig) -"mDW" = ( -/obj/machinery/flasher{ - id = "Cell 4"; - pixel_x = -28 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"mFn" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space) -"mGv" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"mNi" = ( -/obj/machinery/light_switch{ - pixel_x = -20 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"mRe" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"mTC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood, -/area/maintenance/bar) -"mUH" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"ndn" = ( -/turf/open/floor/plasteel/red/side{ - dir = 6 - }, -/area/security/brig) -"nrJ" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/hallway/primary/fore) -"nrT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/bar) -"nvm" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"nxv" = ( -/obj/machinery/power/apc{ - name = "Construction Area APC"; - areastring = "/area/construction"; - pixel_y = -24 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/construction) -"nyw" = ( -/turf/closed/wall/r_wall, -/area/space) -"nAW" = ( -/turf/open/floor/wood, -/area/maintenance/bar) -"nBt" = ( -/obj/machinery/vending/games{ - name = "\improper Good 'Clean' Fun" - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"nGt" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"nNQ" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/white/corner, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"nQE" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"nRD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"nRG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"nYB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/maintenance/fore/secondary) -"oaS" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"oce" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/science/mixing) -"odi" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"ofH" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"ouy" = ( -/obj/structure/table/wood/poker, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/item/storage/pill_bottle/dice, -/turf/open/floor/wood, -/area/maintenance/bar) -"oyk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"oFD" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/table/wood, -/obj/item/reagent_containers/spray/cleaner, -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/maintenance/bar) -"oHs" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/security/brig) -"oHU" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"oUh" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"oWs" = ( -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"pfR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"piG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/security/armory) -"pmD" = ( -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"pvp" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"pAL" = ( +"lNf" = ( /obj/machinery/door/window/brigdoor/security/cell{ dir = 4; id = "Secure Cell"; @@ -53826,6 +53106,377 @@ dir = 8 }, /area/security/execution/transfer) +"lQG" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/science/circuit) +"lSn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/engine/engineering) +"lUX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel/red/side, +/area/security/brig) +"lWf" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"mjp" = ( +/obj/machinery/chem_dispenser/drinks/beer, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/maintenance/bar) +"mtP" = ( +/obj/machinery/vending/autodrobe, +/turf/open/floor/wood, +/area/maintenance/bar) +"mDn" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/brigdoor{ + dir = 1; + name = "Armory Desk"; + req_access_txt = "3" + }, +/obj/machinery/door/window/southleft{ + name = "Reception Desk"; + req_access_txt = "63" + }, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/brig) +"mES" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/maintenance/bar) +"mNi" = ( +/obj/machinery/light_switch{ + pixel_x = -20 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"mOo" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"mOS" = ( +/obj/structure/sign/poster/official/no_erp, +/turf/closed/wall, +/area/maintenance/bar) +"mQL" = ( +/obj/effect/turf_decal/stripes/white/line, +/obj/effect/turf_decal/stripes/white/corner{ + dir = 1 + }, +/obj/machinery/door_timer{ + id = "Secure Cell"; + name = "Secure Cell"; + pixel_y = -32 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"mRe" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"mTp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/security/brig) +"mZB" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"nfW" = ( +/turf/open/floor/plasteel, +/area/security/execution/transfer) +"nip" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/space) +"nlM" = ( +/turf/open/floor/plasteel/red/corner{ + dir = 1 + }, +/area/security/brig) +"noe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"nok" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"nvz" = ( +/obj/structure/table, +/obj/item/grenade/barrier{ + pixel_x = 4 + }, +/obj/item/grenade/barrier, +/obj/item/grenade/barrier{ + pixel_x = -4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/security/armory) +"nxv" = ( +/obj/machinery/power/apc{ + name = "Construction Area APC"; + areastring = "/area/construction"; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/construction) +"nzk" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Singularity"; + name = "radiation shutters" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"nzm" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating/airless, +/area/space) +"nDS" = ( +/obj/structure/rack, +/obj/item/gun/energy/e_gun/dragnet, +/obj/item/gun/energy/e_gun/dragnet, +/obj/effect/turf_decal/bot_white, +/obj/item/gun/energy/pumpaction/blaster, +/obj/item/gun/energy/pumpaction/blaster, +/turf/open/floor/plasteel/dark, +/area/security/armory) +"nGt" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"nRG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"nZe" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + req_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/bar) +"oce" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"ohN" = ( +/turf/closed/wall, +/area/space) +"oEn" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/camera/motion{ + c_tag = "Armory Motion Sensor"; + dir = 2; + name = "motion-sensitive security camera" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"oFD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + cyclelinkeddir = 2; + id_tag = "innerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel/red/side{ + dir = 9 + }, +/area/security/brig) +"oFM" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/security/glass{ + cyclelinkeddir = 1; + id_tag = "outerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel/red/side{ + dir = 9 + }, +/area/security/brig) +"oHU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"oLO" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"oUh" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"oUp" = ( +/turf/open/floor/plasteel/red/side{ + dir = 8 + }, +/area/security/brig) +"pjh" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) +"pvY" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"pye" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_x = 30 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) +"pyu" = ( +/obj/structure/window/reinforced, +/obj/machinery/door/window/eastleft{ + name = "Cyborg Docking Port" + }, +/obj/machinery/recharge_station, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"pzB" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"pGb" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/security/brig) "pHl" = ( /obj/structure/table, /obj/item/storage/box/beakers{ @@ -53854,40 +53505,39 @@ }, /turf/open/floor/plasteel/white, /area/medical/sleeper) +"pLn" = ( +/obj/machinery/conveyor/inverted{ + dir = 5; + id = "garbage" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"pLx" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) +"pNk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "pNx" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, /area/science/misc_lab) -"pPZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 4 - }, -/area/security/brig) -"pSC" = ( -/obj/machinery/door/window/brigdoor/security/cell{ - id = "Cell 3"; - name = "Cell 3" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +"pRH" = ( +/obj/structure/grille, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-4" }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"pYB" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/airlock/external{ - name = "Engineering External Access"; - req_access = null; - req_access_txt = "10;13" - }, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/engine/engineering) "qeQ" = ( /obj/effect/turf_decal/stripes/line{ @@ -53895,6 +53545,14 @@ }, /turf/open/floor/plasteel, /area/science/circuit) +"qne" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/bar) "qpv" = ( /obj/machinery/light{ dir = 4 @@ -53902,70 +53560,48 @@ /obj/machinery/autolathe, /turf/open/floor/plasteel/white, /area/science/circuit) -"qtN" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "quT" = ( /obj/structure/lattice, /obj/structure/grille/broken, /turf/open/space/basic, /area/space/nearstation) -"qzP" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" +"qyv" = ( +/obj/machinery/door/poddoor/shutters{ + id = "lowsecarmory"; + name = "Non-Lethal Armoury Shutter" }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, +/obj/machinery/button/door{ + id = "lowsecarmory"; + name = "Non-Lethal Armory Shutters"; + pixel_y = 26; + req_access_txt = "3" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/security/main) +"qyS" = ( +/obj/effect/landmark/start/atmospheric_technician, +/turf/open/floor/plasteel, +/area/engine/atmos) +"qCO" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/yellow/side, /area/engine/engineering) -"qAQ" = ( -/obj/structure/falsewall, -/obj/effect/turf_decal/delivery/white, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"qDH" = ( -/obj/structure/bed, -/obj/item/bedsheet/grey, -/obj/effect/decal/cleanable/semen{ - desc = "Blech."; - name = "dried semen" - }, -/obj/effect/spawner/lootdrop/costume, -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/maintenance/bar) -"qIa" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/plasteel/red/side{ +"qLG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/turf/open/floor/plasteel/red/corner{ + dir = 8 + }, /area/security/brig) -"qVU" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Singularity"; - name = "radiation shutters" +"qRE" = ( +/obj/structure/cable{ + icon_state = "1-4" }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"qYL" = ( /obj/structure/grille, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, /turf/open/floor/plating/airless, /area/engine/engineering) "rcD" = ( @@ -53974,89 +53610,116 @@ }, /turf/closed/wall/r_wall, /area/science/circuit) +"rez" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + cyclelinkeddir = 1; + id_tag = "lobbyairlock"; + name = "Security Lobby"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/security/brig) "rfW" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) -"rjW" = ( -/obj/effect/landmark/secequipment, -/obj/effect/turf_decal/bot{ - dir = 2 +"rkz" = ( +/obj/machinery/power/apc{ + areastring = "/area/maintenance/bar"; + dir = 2; + name = "Maintenance Bar APC"; + pixel_x = 1; + pixel_y = -24 }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) +/obj/structure/cable, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) +"rmR" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/engine/engineering) "rmX" = ( /obj/structure/table, /obj/item/reagent_containers/food/drinks/beer, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"rre" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" +"rrQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, /turf/open/floor/plating/airless, -/area/engine/engineering) -"rDl" = ( -/obj/structure/table/wood, -/turf/open/floor/wood{ - icon_state = "wood-broken5" +/area/space) +"rth" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/area/maintenance/bar) +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"rtI" = ( +/turf/open/floor/plasteel/purple/side, +/area/crew_quarters/cryopod) +"rwa" = ( +/turf/closed/wall, +/area/crew_quarters/cryopod) +"rzC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space) "rKP" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, /turf/open/floor/plating, /area/construction) -"rRb" = ( +"rQi" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 1 + }, +/area/hallway/primary/fore) +"rVy" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"rXD" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/bar) -"rRI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/engine/engineering) -"rUB" = ( -/obj/structure/grille, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space) -"rVc" = ( -/obj/structure/window/reinforced, -/obj/machinery/door/window/eastleft{ - name = "Cyborg Docking Port" - }, -/obj/machinery/recharge_station, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) -"rWi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/structure/cable{ + icon_state = "2-4" }, /turf/open/floor/wood, /area/maintenance/bar) -"rYe" = ( -/obj/structure/table, -/obj/item/storage/toolbox/electrical{ - pixel_x = 2; - pixel_y = 4 +"rYO" = ( +/turf/closed/wall, +/area/maintenance/bar) +"rZN" = ( +/obj/machinery/light{ + dir = 4 }, -/obj/item/storage/toolbox/electrical{ - pixel_x = -2 +/obj/structure/table/wood, +/obj/item/reagent_containers/spray/cleaner, +/turf/open/floor/wood{ + icon_state = "wood-broken6" }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) +/area/maintenance/bar) "saK" = ( /obj/structure/closet/crate, /obj/item/target/alien, @@ -54069,18 +53732,31 @@ /obj/item/gun/energy/laser/practice, /turf/open/floor/plasteel/white, /area/science/circuit) -"siI" = ( -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 +"sfz" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Engine Containment Port Aft"; + dir = 1; + network = list("engine") }, -/obj/item/pen, -/obj/machinery/newscaster{ - pixel_x = 30 +/turf/open/floor/plating/airless, +/area/engine/engineering) +"sfS" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 }, -/obj/structure/table/wood, /turf/open/floor/wood, /area/maintenance/bar) +"siw" = ( +/obj/structure/table/glass, +/obj/item/paper_bin, +/obj/item/pen/blue, +/turf/open/floor/plasteel/purple/side{ + tag = "icon-purple (NORTH)"; + icon_state = "purple"; + dir = 1 + }, +/area/crew_quarters/cryopod) "slk" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -54093,50 +53769,259 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"soK" = ( -/obj/effect/turf_decal/loading_area/white, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 8 +"soh" = ( +/turf/open/floor/plasteel/showroomfloor, +/area/space) +"svF" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Brig Control"; + req_access_txt = "3" }, -/obj/effect/turf_decal/stripes/white/corner, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"ssC" = ( -/turf/open/floor/plasteel/purple/side, -/area/crew_quarters/cryopod) -"stI" = ( -/obj/item/lighter/greyscale, -/obj/effect/decal/cleanable/semen{ - desc = "Blech."; - name = "dried semen" +/turf/open/floor/plasteel/showroomfloor, +/area/security/brig) +"swV" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/plating{ - icon_state = "panelscorched" +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = null; + req_access_txt = "10;13" }, -/area/maintenance/bar) -"stR" = ( -/obj/machinery/power/apc{ - areastring = "/area/crew_quarters/cryopod"; - dir = 4; - name = "Cryogenics APC"; - pixel_x = 24 - }, -/obj/structure/cable, /turf/open/floor/plating, -/area/crew_quarters/cryopod) +/area/engine/engineering) "sxs" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/table, /obj/item/shovel/spade, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"sxz" = ( +"sxZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/red/side{ + dir = 6 + }, +/area/security/brig) +"sCb" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "briggate"; + name = "security shutters" + }, +/obj/machinery/door/window/southleft{ + base_state = "right"; + icon_state = "right"; + name = "Brig Desk"; + req_access_txt = "1" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/dark, +/area/security/brig) +"sHb" = ( +/turf/closed/wall/r_wall, +/area/space) +"sHe" = ( +/obj/machinery/computer/cryopod{ + pixel_y = 25 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/prison) +"sIS" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/security/warden) +"sLb" = ( /obj/effect/turf_decal/stripes/line{ - dir = 5 + dir = 2 }, /turf/open/floor/plating/airless, -/area/space/nearstation) -"szF" = ( +/area/space) +"sLv" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"sOa" = ( +/turf/open/floor/plating/airless, +/area/engine/engineering) +"sOs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance/abandoned, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"sPd" = ( +/turf/open/floor/plasteel/red/corner{ + dir = 4 + }, +/area/security/brig) +"sQG" = ( +/obj/machinery/camera/motion{ + c_tag = "Non-Lethal Armory Motion Sensor"; + dir = 4 + }, +/obj/effect/turf_decal/stripes/end{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/armory) +"sRl" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/maintenance/bar) +"sSO" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/white/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"sSW" = ( +/obj/structure/chair/office/light, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"sTB" = ( +/turf/open/floor/plasteel/red/side{ + dir = 10 + }, +/area/security/brig) +"sXy" = ( +/obj/machinery/door/airlock/external{ + name = "Security External Airlock"; + req_access_txt = "63" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/security/main) +"tal" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/hallway/secondary/service) +"tdg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 4 + }, +/area/security/brig) +"tgb" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"tDm" = ( +/obj/structure/table/wood, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/bar) +"tII" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) +"tMl" = ( +/obj/effect/turf_decal/loading_area, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"tNR" = ( +/obj/structure/sign/poster/random{ + pixel_x = -32 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) +"tOq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"tPI" = ( +/obj/structure/table/wood/poker, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/item/storage/pill_bottle/dice, +/turf/open/floor/wood, +/area/maintenance/bar) +"tRB" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/cryopod{ + tag = "icon-cryopod-open (EAST)"; + icon_state = "cryopod-open"; + dir = 4 + }, +/turf/open/floor/noslip, +/area/crew_quarters/cryopod) +"tXL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/maintenance/disposal/incinerator) +"uoB" = ( +/obj/structure/table/reinforced, +/obj/item/device/multitool, +/obj/item/screwdriver, +/obj/machinery/camera{ + c_tag = "Circuitry Lab North"; + network = list("ss13","rd") + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"uqz" = ( +/obj/structure/rack, +/obj/item/clothing/suit/armor/bulletproof{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001; + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001; + pixel_x = 3; + pixel_y = -3 + }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/security/armory) +"uuU" = ( /obj/structure/rack, /obj/item/clothing/suit/armor/riot{ pixel_x = -3; @@ -54168,333 +54053,24 @@ /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/security/armory) -"sCR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"sDk" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"sFW" = ( -/turf/closed/wall, -/area/maintenance/bar) -"sJQ" = ( -/obj/structure/closet/bombcloset/security, -/turf/open/floor/plasteel/showroomfloor, -/area/space) -"sLv" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"sOs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance/abandoned, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"sOy" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" +"uCa" = ( +/obj/structure/chair/stool, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -35 }, /turf/open/floor/wood, /area/maintenance/bar) -"sPM" = ( -/turf/closed/wall, -/area/crew_quarters/cryopod) -"sSW" = ( -/obj/structure/chair/office/light, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"sXy" = ( -/obj/machinery/door/airlock/external{ - name = "Security External Airlock"; - req_access_txt = "63" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/plating, -/area/security/main) -"tal" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/hallway/secondary/service) -"tgx" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/closet/secure_closet/brig{ - id = "Secure Cell"; - name = "Secure Cell Locker" - }, -/obj/effect/turf_decal/stripes/white/end{ - dir = 4 - }, -/obj/effect/turf_decal/delivery/white, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"tmi" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/brig) -"tof" = ( -/obj/machinery/power/emitter/anchored{ - dir = 4; - state = 2 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"toZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"tyq" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/rack, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/mask/gas/sechailer, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"tMh" = ( -/turf/closed/wall/r_wall, -/area/security/armory) -"tMl" = ( -/obj/effect/turf_decal/loading_area, -/turf/open/floor/plasteel/showroomfloor, -/area/crew_quarters/kitchen) -"tNC" = ( +"uCz" = ( /turf/open/floor/wood{ - icon_state = "wood-broken5" + icon_state = "wood-broken6" }, /area/maintenance/bar) -"tNK" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"tOq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/science/mixing) -"tQO" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (EAST)"; - icon_state = "cryopod-open"; - dir = 4 - }, -/turf/open/floor/noslip, -/area/crew_quarters/cryopod) -"tRc" = ( -/obj/structure/sign/poster/random{ - pixel_x = -32 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"tSN" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Engine Containment Starboard Aft"; - dir = 1; - network = list("engine") - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"tVF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "0" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/bar) -"tXL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/closed/wall/r_wall, -/area/maintenance/disposal/incinerator) -"uaf" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 5 - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"ujA" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) -"umb" = ( -/obj/machinery/suit_storage_unit/security, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"uow" = ( -/turf/closed/wall, -/area/space) -"uoB" = ( -/obj/structure/table/reinforced, -/obj/item/device/multitool, -/obj/item/screwdriver, -/obj/machinery/camera{ - c_tag = "Circuitry Lab North"; - network = list("ss13","rd") - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"utg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 2; - id_tag = "innerbrig"; - name = "Brig"; - req_access_txt = "63" - }, +"uJC" = ( +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/security/brig) -"utm" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/newscaster{ - pixel_x = 30 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"utC" = ( -/obj/machinery/suit_storage_unit/security, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"uut" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"uwV" = ( -/obj/machinery/vending/clothing, -/turf/open/floor/wood, -/area/maintenance/bar) -"uze" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/maintenance/bar) -"uAb" = ( -/obj/effect/spawner/lootdrop/keg, -/turf/open/floor/wood, -/area/maintenance/bar) -"uAc" = ( -/obj/structure/window/reinforced, -/obj/vehicle/ridden/secway, -/obj/item/key/security, -/obj/machinery/door/window/eastleft{ - name = "Secway Docking Port" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/showroomfloor, -/area/space/nearstation) -"uDn" = ( -/obj/machinery/vending/autodrobe, -/turf/open/floor/wood, -/area/maintenance/bar) -"uER" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor{ - dir = 1; - name = "Armory Desk"; - req_access_txt = "3" - }, -/obj/machinery/door/window/southleft{ - name = "Reception Desk"; - req_access_txt = "63" - }, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel/showroomfloor, /area/security/brig) "uNu" = ( /obj/structure/disposalpipe/segment{ @@ -54527,14 +54103,14 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"uYC" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 +"uXp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/maintenance/abandoned{ + req_access_txt = "0" }, -/obj/machinery/light{ - dir = 8 +/turf/open/floor/wood{ + icon_state = "wood-broken" }, -/turf/open/floor/wood, /area/maintenance/bar) "vbD" = ( /obj/machinery/door/firedoor, @@ -54547,10 +54123,30 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) -"vmf" = ( -/obj/structure/falsewall, -/turf/open/floor/plating, +"vnJ" = ( +/obj/machinery/vending/games{ + name = "\improper Good 'Clean' Fun" + }, +/turf/open/floor/wood, /area/maintenance/bar) +"vob" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"vrL" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/engine/engineering) +"vvD" = ( +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "vxh" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance{ @@ -54567,11 +54163,6 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"vzq" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood, -/area/maintenance/bar) "vCb" = ( /obj/machinery/rnd/production/techfab/department/service, /turf/open/floor/plasteel/hydrofloor, @@ -54580,25 +54171,47 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/white, /area/science/circuit) -"vMV" = ( +"vDk" = ( +/obj/machinery/flasher{ + id = "brigentry"; + pixel_y = -28 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) +"vEf" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"vEr" = ( +/obj/structure/grille, /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) -"vPg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/corner, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, /obj/structure/cable{ - icon_state = "2-4" + icon_state = "1-4" }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) +/turf/open/floor/plating/airless, +/area/engine/engineering) +"vHG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) +"vMr" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/security/brig) "vPE" = ( /obj/machinery/light{ dir = 4 @@ -54606,34 +54219,48 @@ /obj/machinery/libraryscanner, /turf/open/floor/plasteel/white, /area/science/circuit) -"vPG" = ( +"vSg" = ( +/turf/open/floor/wood, +/area/maintenance/bar) +"weO" = ( /obj/structure/table/wood, /obj/machinery/chem_dispenser/drinks, /turf/open/floor/wood, /area/maintenance/bar) -"waV" = ( -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" +"whD" = ( +/obj/structure/chair/stool, +/turf/open/floor/wood{ + icon_state = "wood-broken7" }, -/obj/item/crowbar, -/obj/item/device/electropack/shockcollar, -/turf/open/floor/plating, /area/maintenance/bar) -"wdZ" = ( -/turf/open/floor/plasteel/dark, -/area/security/processing) +"wjY" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/space/nearstation) "wkN" = ( /turf/closed/wall, /area/science/circuit) -"wom" = ( -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (EAST)"; - icon_state = "cryopod-open"; - dir = 4 +"wph" = ( +/obj/docking_port/stationary{ + area_type = /area/construction/mining/aux_base; + dheight = 4; + dir = 8; + dwidth = 4; + height = 9; + id = "aux_base_zone"; + name = "aux base zone"; + roundstart_template = /datum/map_template/shuttle/aux_base/default; + width = 9 }, -/turf/open/floor/noslip, -/area/crew_quarters/cryopod) +/turf/open/floor/plating, +/area/construction/mining/aux_base) +"wpT" = ( +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "wrp" = ( /obj/machinery/light{ dir = 8 @@ -54657,54 +54284,62 @@ }, /turf/closed/wall, /area/hallway/secondary/service) -"wEi" = ( -/obj/machinery/computer/cryopod{ - pixel_y = 25 +"wCj" = ( +/obj/item/lighter/greyscale, +/obj/effect/decal/cleanable/semen{ + desc = "Blech."; + name = "dried semen" }, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) -"wFC" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/bar) "wHz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) -"wRi" = ( -/turf/open/floor/plasteel/showroomfloor, -/area/space) -"wTe" = ( -/obj/structure/chair/stool, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"wUk" = ( -/turf/open/floor/plasteel/red/corner{ - dir = 4 +"wJD" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + cyclelinkeddir = 1; + id_tag = "lobbyairlock"; + name = "Security Lobby"; + req_access_txt = "0" }, +/turf/open/floor/plasteel/red/side, /area/security/brig) +"wUX" = ( +/obj/structure/table/wood/poker, +/obj/item/coin/iron, +/turf/open/floor/wood, +/area/maintenance/bar) "wUY" = ( /obj/structure/table, /obj/item/reagent_containers/glass/bucket, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"wWq" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"wZZ" = ( +"wWN" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/effect/turf_decal/stripes/line{ - dir = 9 + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/armory) +"wXT" = ( +/obj/structure/chair/stool, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/maintenance/bar) +"wZS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, /turf/open/floor/plating/airless, -/area/space/nearstation) +/area/space) "xhV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -54725,31 +54360,36 @@ }, /turf/open/floor/plating, /area/hallway/secondary/service) -"xiB" = ( -/obj/effect/landmark/start/station_engineer, -/obj/structure/chair/office/dark{ - dir = 1 +"xjt" = ( +/obj/effect/spawner/lootdrop/keg, +/turf/open/floor/wood, +/area/maintenance/bar) +"xte" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/maintenance/bar) +"xvH" = ( +/obj/machinery/vending/clothing, +/turf/open/floor/wood, +/area/maintenance/bar) +"xxh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"xlB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/turf/closed/wall, +/area/maintenance/bar) +"xCS" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "briggate"; + name = "security shutters" }, -/obj/machinery/camera/motion{ - c_tag = "Armory Motion Sensor"; - dir = 2; - name = "motion-sensitive security camera" +/obj/machinery/door/window/eastright{ + name = "Brig Desk"; + req_access_txt = "2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"xDv" = ( -/obj/structure/closet/l3closet/security, -/turf/open/floor/plasteel/showroomfloor, -/area/space/nearstation) +/turf/open/floor/plasteel/dark, +/area/security/brig) "xEu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -54761,27 +54401,60 @@ /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"xSp" = ( +"xMc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /obj/structure/cable{ - icon_state = "0-8" + icon_state = "4-8" }, -/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/security/brig) -"xYs" = ( -/obj/structure/chair/stool, -/obj/item/device/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = -35 - }, -/turf/open/floor/wood, /area/maintenance/bar) +"xOe" = ( +/obj/item/shard, +/obj/item/wirecutters, +/obj/item/wallframe/camera, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/bar) +"xWy" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) +"ycr" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating, +/area/engine/engineering) "ycu" = ( /obj/structure/cable{ icon_state = "2-4" }, /turf/open/floor/plasteel, /area/science/circuit) +"yeG" = ( +/obj/structure/sign/poster/random{ + pixel_y = -32 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"ylH" = ( +/obj/effect/landmark/start/station_engineer, +/obj/structure/chair/office/dark{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) (1,1,1) = {" aaa @@ -62339,9 +62012,9 @@ aaa aae aaf aaa -aqH -apK -aqH +aaa +aaa +aaa aaa aaa aae @@ -62353,9 +62026,9 @@ aaa aaa aaa aaa -aqF -apH -aqF +aaa +aaa +aaa aaa aaa aaa @@ -62596,9 +62269,6 @@ aaa aaa aaf aaa -aqH -cpK -aqH aaa aaa aaa @@ -62610,9 +62280,12 @@ aaa aaa aaa aaa -aqF -cxl -aqF +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -62853,9 +62526,6 @@ aaa aaa aaf aaa -aqH -cpL -aqH aaa aaa aaa @@ -62867,9 +62537,12 @@ aaa aaa aaa aaa -aqF -cxx -aqF +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -63110,9 +62783,8 @@ aaa aaa aaf aaa -ckq +aaa cqq -ckq aaa aaa aaa @@ -63124,9 +62796,10 @@ aaa aaa aaa aaa -cwU -cxF -cwU +aaa +aaa +cqq +aaa aaa aaa aaa @@ -63872,14 +63545,14 @@ aaa aaa apJ apN -arC -arC -arC -arC -arC -arC -arC -aEp +apN +apN +apN +apN +apN +apN +apN +apN apJ avP iEJ @@ -64128,15 +63801,15 @@ aaa aaa aaf apJ -aqI -arD -arD -arD -arD -arD -arD -arD -auN +apN +apN +apN +apN +apN +apN +apN +apN +apN apJ awY ayk @@ -64385,15 +64058,15 @@ aaa aaa aaf apJ -aqI -arD -arD -arD -arD -arD -arD -arD -auN +apN +apN +apN +apN +apN +apN +apN +apN +apN apJ awZ ayl @@ -64642,15 +64315,15 @@ aaa aaa aaf apJ -aqI -arD -arD -arD -atk -arD -arD -arD -auN +apN +apN +apN +apN +apN +apN +apN +apN +apN apJ awZ ayk @@ -64899,15 +64572,15 @@ aaa aaa aaa apJ -aqI -arD -arD -asG -atl -awX -arD -arD -auN +apN +apN +apN +apN +wph +apN +apN +apN +apN apJ awZ cqr @@ -65156,15 +64829,15 @@ aaa aaa aaa apJ -aqI -arD -arD -arD -cCs -arD -arD -arD -auN +apN +apN +apN +apN +apN +apN +apN +apN +apN apJ awZ aIK @@ -65413,15 +65086,15 @@ aaa aaa aaa apJ -aqI -arD -arD -arD -arD -arD -arD -arD -auN +apN +apN +apN +apN +apN +apN +apN +apN +apN apJ awZ aIK @@ -65670,15 +65343,15 @@ aaa aaa aaf apJ -aqI -arD -arD -arD -arD -arD -arD -arD -auN +apN +apN +apN +apN +apN +apN +apN +apN +apN apJ awZ cry @@ -65927,15 +65600,15 @@ aaa aaa aaa apJ -aqN -asD -asD -asD -cCt -asD -asD -asD -aFD +apN +apN +apN +apN +apN +apN +apN +apN +apN apJ awZ crz @@ -68020,7 +67693,7 @@ czK bhN bcl beQ -bgk +pLn bhI bjb bkz @@ -69048,7 +68721,7 @@ czK bbe beO beU -bgl +bgk bhL bjc cAF @@ -76274,20 +75947,20 @@ bCq bPY cOw bCq -sFW -sFW -sFW -sFW -sFW -ksK -sFW -sFW -sFW -sFW -sFW -sFW -sFW -sFW +rYO +rYO +rYO +rYO +rYO +hHu +rYO +rYO +rYO +rYO +rYO +rYO +rYO +rYO bUs bLv aaa @@ -76531,20 +76204,20 @@ bCq bPX bRg bRg -sFW -nAW +rYO +vSg bVG -uYC -fPq -nAW -uAb -sFW -nAW -tRc +lWf +jZP +vSg +xjt +rYO +vSg +tNR bVG -nAW -hpY -sFW +vSg +dTy +rYO bUs bLv aaa @@ -76788,20 +76461,20 @@ bLv bQa bHE bHE -sFW -get -uut -jlZ -iDC -imZ -iDC -dnc -iDC -iDC -toZ -tNC -dAs -sFW +rYO +hsU +vHG +iWM +xte +kOO +xte +ifj +xte +xte +vEf +jrX +yeG +rYO bUs bLv aaf @@ -77045,20 +76718,20 @@ bLv bPZ bHE bHE -hNj -rWi -mkG -vzq -mdX -pvp -mTC -mlj -mTC -dFc -fDs +nZe +noe +sfS +jbT +pLx +hcV +iWK +uXp +iWK +mES +iWy cCa -nAW -sFW +vSg +rYO bUs bLv aaa @@ -77302,20 +76975,20 @@ bLv bHE bHE bSs -sFW -rRb -ofH -rDl -cIK -ofH -nAW -lkC -hXw +rYO +qne +nok +tDm +sRl +nok +vSg +mOS +uCz cCa -kqE -lgs -diu -sFW +hNR +gVz +wXT +rYO bUs bLv aaa @@ -77559,20 +77232,20 @@ bCq bHE bRh bLu -sFW -jEl -utm -eCQ -fSk -sOy -lkA -sFW -nAW -wTe -kqE -lgs -xYs -sFW +rYO +rXD +pye +heG +pjh +dMY +rkz +rYO +vSg +whD +hNR +gVz +uCa +rYO bUs bLv aaf @@ -77737,10 +77410,10 @@ abc abc afu abc -abc -abc -abc -abc +aaa +aaa +aaa +aaa aaa aaa aaa @@ -77816,20 +77489,20 @@ bCq bOK bCq bCq -sFW -tVF -gGR -fWC -vPG -hik -sFW -sFW -nAW +rYO +jOb +xxh +mjp +weO +dUz +rYO +rYO +vSg cCa -ouy -cKY +tPI +wUX cCa -sFW +rYO bUs bLv aaa @@ -77993,13 +77666,13 @@ abc aea aeH aft -qAQ -soK -mUH -uaf +cXd +ktN +sSO +rVy abc -lkm -lkm +pzB +pzB aaa aiU aln @@ -78074,19 +77747,19 @@ bHE bLv aaa bLv -nrT -gGR -sFW -sFW -sFW -sFW -nAW -nAW -nAW -nQE +xMc +xxh +rYO +rYO +rYO +rYO +vSg +vSg +vSg +kjK cCa -htN -sFW +gMI +rYO bUs bLv aaa @@ -78252,18 +77925,18 @@ aeJ afw abc abc -nNQ -eLY +fJG +mQL abc aaf aaf aaf aiU -wdZ +jnp aiU aaa aiU -wdZ +jnp aiU aaf aaf @@ -78331,19 +78004,19 @@ bHE bLv aaf bLv -nrT -gGR -aEt -waV -stI -vmf -nAW -hXw -tNC -nvm -nAW -nAW -sFW +xMc +xxh +kRe +lnm +wCj +kXH +vSg +uCz +jrX +oLO +vSg +vSg +rYO bUs bLv aaf @@ -78509,8 +78182,8 @@ aeI afv agf abc -tgx -pAL +kdx +lNf abc aiT aiT @@ -78588,19 +78261,19 @@ bLv bCq aaa bLv -nrT -gGR -kuC -qDH -fnP -sFW -uwV -uDn -siI -oFD -nBt -eYQ -sFW +xMc +xxh +xOe +hPY +cZO +rYO +xvH +mtP +iXO +rZN +vnJ +hpF +rYO bUs bCq aaa @@ -78766,9 +78439,9 @@ aeL afy agh abc -gvx -gvx -gvx +nfW +nfW +nfW aiV ajs akb @@ -78846,17 +78519,17 @@ aaa aaa bTB bUv -uze -kPh -kPh -kPh -kPh -kPh -kPh -kPh -kPh -kPh -kPh +eeA +dpp +dpp +dpp +dpp +dpp +dpp +dpp +dpp +dpp +dpp car bUs bCq @@ -79023,9 +78696,9 @@ aeK afx agg abc -gvx -gKN -gvx +nfW +iPE +nfW aiV ajr aka @@ -79280,9 +78953,9 @@ aeN afA afA afA -gvx -gvx -gvx +nfW +nfW +nfW aiV aju akd @@ -79901,7 +79574,7 @@ ciN cji cDZ crr -crJ +aaa aaa aaa aaa @@ -80154,11 +79827,11 @@ ccw cfL coH cBO -cnv +cgR cDB cqP crq -crJ +aaa aaa aaa aaa @@ -80429,7 +80102,7 @@ gXs gXs gXs gXs -lkm +pzB aaa aaa aaa @@ -80672,22 +80345,22 @@ cpX cqz cqQ ccw -crJ +crH aaa aaa -nyw -nyw -nyw +sHb +sHb +sHb aaa aaa aaa aaa aaa -nyw -nyw -nyw -lkm -lkm +sHb +sHb +sHb +pzB +pzB aaa aaa aaa @@ -80929,24 +80602,24 @@ clJ cig cig ccw -crJ -crJ -nyw -nyw -nyw -nyw -nyw +crH +crH +sHb +sHb +sHb +sHb +sHb aaa aaa aaa -nyw -nyw -nyw -nyw -nyw -lkm -lkm -lkm +sHb +sHb +sHb +sHb +sHb +pzB +pzB +pzB aaa aaa aaa @@ -81180,7 +80853,7 @@ ccw ccw ccw cnZ -lmZ +pNk cpt cpt cpt @@ -81202,8 +80875,8 @@ ccw ccw ccw ccw -nyw -lkm +sHb +pzB aaa aaa aaa @@ -81344,7 +81017,7 @@ auj akl akO alx -pfR +tII amg aiX anw @@ -81439,28 +81112,28 @@ cnt cob coL cDo -xiB +ylH cgR cqT ccw -ghy +hQe ccw -csb -cFn -css -cFn -csx +wpT +fBa +vEr +fBa +qRE ccw ccw ccw cGE -cFn -mGv -fAn -fAn +fBa +pRH +dPI +dPI ccw -nyw -cQG +sHb +cSI aaa aaa aaa @@ -81698,26 +81371,26 @@ coK cpu cMm ckH -wWq -pYB +qCO +swV crK cEK csa -dlj -tof -dlj +sOa +fBP +sOa cGr -sDk -kOs -sDk -iWY -dlj -tof -dlj -dlj +vob +kbh +vob +cNt +sOa +fBP +sOa +sOa ccw -nyw -lkm +sHb +pzB aaa aaa aaa @@ -81856,9 +81529,9 @@ aiF agj ajD akm -jrJ +mTp aly -bhP +lyP amQ aiX anw @@ -81953,28 +81626,28 @@ cgR cnZ chF ciO -xiB +ylH cgR cqT ccw cig ccw cFb -dlj +sOa cFI -dlj -dlj -dlj -dlj -dlj -dlj -dlj +sOa +sOa +sOa +sOa +sOa +sOa +sOa cFI -dlj -iVO +sOa +sfz ccw -nyw -mFn +sHb +hSf aaa aaa aaa @@ -82090,7 +81763,7 @@ aaa aag aaf aai -wEi +sHe aaA aaG aaK @@ -82115,7 +81788,7 @@ aja akl akP alx -pfR +tII ami aiX anw @@ -82208,30 +81881,30 @@ ceZ clQ cgR cnZ -lmZ +pNk cgR cgR cgR cqT -dxw +kTZ cEs -dlj -oWs +sOa +fZs cAp -qtN +tgb cAo -qtN +tgb cAo -qtN +tgb cAo -qtN -jMi -dlj -dlj -dlj +tgb +lCe +sOa +sOa +sOa ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -82369,7 +82042,7 @@ agP agP aiz ajg -hBF +hrd akQ agj agj @@ -82465,15 +82138,15 @@ cTd ckF ckF cgK -lmZ +pNk cgR cgR cgR cqT -dxw +kTZ csP -dlj -dlj +sOa +sOa cAq cFJ cSH @@ -82484,11 +82157,11 @@ cSH cFJ cSH cFJ -dlj -dlj +sOa +sOa ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -82607,7 +82280,7 @@ aaa aaa aaf aaf -rUB +dwQ aaf aai abi @@ -82629,7 +82302,7 @@ ajb ajF akN alw -jXD +hkC amQ aiX anw @@ -82727,25 +82400,25 @@ cpx cqd cjc cqU -dxw +kTZ csP -dlj -oWs +sOa +fZs cAq cFK aoV aoV cFK -gXs +pzB aaa aoV aoV cFK cFJ -dlj +sOa ccw -nyw -ldw +sHb +fGu aaf aaa aaa @@ -82880,16 +82553,16 @@ agn agR agn agR -kIZ +sIS aiX -kvn +kUh akv -pSC -lou +gqU +xWy aww amk aiX -nrJ +rQi aov aph aqb @@ -82982,7 +82655,7 @@ cnZ cDh cpy ccw -kbf +fXl ccw ccw cqY @@ -82992,17 +82665,17 @@ cAq aoV aoV aoV -lkm -aaf +pzB +cSI aaa aoV aoV aoV cFJ -dlj +sOa ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -83121,26 +82794,26 @@ aaa aaa aaa aaf -rUB +dwQ aaf -tMh -aaT -fVu -umb +dKf +juA +sQG +jAM aaZ cpg acv adi -jFG +hyb aaZ aeW -tyq +fVA ahv ahQ aiI aiH ajI -mAD +hZr akQ agj agj @@ -83240,26 +82913,26 @@ cDh ccw cqf cqD -dCs +kso crs cEv -msk +ycr cqY cAq aoV aoV aaa aaa -aaf +pzB aaa aaa aoV aoV cFJ -dlj +sOa ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -83378,29 +83051,29 @@ aaa aaa aaa aaf -rUB +dwQ aaf -tMh -aaT -oaS -umb +dKf +juA +gcN +jAM aaZ acl cxA acL -fbL +exQ aaZ agp agT ahx ahS aiK -uER -kvn +mDn +kUh akm akT aly -mDW +ekX amQ aiX anw @@ -83494,29 +83167,29 @@ cmL cgR cnZ chX -qVU +nzk cqh cqF cra crI cEw -qzP +rmR cqY cAq aaa aaa aaa -wZZ +rrQ cGU -iyf +eeO aaa -lkm +pzB cFK cFJ -dlj +sOa ccw -nyw -ldw +sHb +fGu aaa aaa aae @@ -83635,12 +83308,12 @@ aaa aaa aaa aaf -rUB +dwQ aaf -tMh -aaT -odi -eXD +dKf +juA +wWN +iCL aaZ ack adk @@ -83657,13 +83330,13 @@ ajI akl akS alx -pfR +tII amp aiX anS aoy -wFC -nRD +apj +anz anz anz anz @@ -83750,7 +83423,7 @@ clJ cmL cnv cnZ -rRI +lSn ccw cqg cqE @@ -83758,22 +83431,22 @@ cqZ crt cMH cAm -tNK +fVS cMN -gXs -aaf -aaf -sCR +pzB +cSI +cSI +fvg cGV -gmz -aaf -aaf -gXs +sLb +cSI +cSI +pzB cFJ -dlj +jcS ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -83892,14 +83565,14 @@ aaa aaa aaa aaf -rUB +dwQ aaf -tMh -aaT -oaS -utC +dKf +juA +gcN +ejP aaZ -xlB +oEn acM adQ cwM @@ -83909,8 +83582,8 @@ agU ahy ahX aiL -xSp -pPZ +gKO +tdg akq akQ agj @@ -84007,30 +83680,30 @@ ccw cmN cgR cnZ -rRI -kbf +lSn +fXl cqj cSG crb cru cEx -lTm +vrL cqY cAq cFK -lkm +pzB aaa -sxz -oyk -mtY +wZS +rzC +nzm aaa aaa aaa cFJ -dlj +sOa ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -84149,14 +83822,14 @@ aaa aaa aaa aaf -rUB +dwQ aaf -tMh -fPE -piG -utC +dKf +nvz +htj +ejP aaZ -gva +pvY coS aet cxA @@ -84166,18 +83839,18 @@ agt ahz aie agt -jyK -erb +svF +vMr akp akU alz aml amT aiX -gZp -jKG +rez +wJD apl -jCY +aqc aqc aqc aqc @@ -84264,7 +83937,7 @@ clM cfz cgR cnZ -rRI +lSn ccw cqi cMD @@ -84278,16 +83951,16 @@ aoV aoV aaa aaa -aaf +cSI aaa aaa aoV aoV cFJ -dlj +sOa ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -84406,14 +84079,14 @@ aaa aaa aaa aaf -rUB +dwQ aaf -tMh -inb -mwi -vPg +dKf +nDS +jUO +iaO abQ -gvi +mZB adj arc blT @@ -84424,15 +84097,15 @@ cxk aig aiM aiX -tmi -kwU -hjI +kBh +qLG +pGb alB amn amV -hHa +sCb aiG -ndn +flZ aod aqf ahT @@ -84442,11 +84115,11 @@ ahT ahT awn axF -vMV -vMV -vMV -vMV -stR +hrv +hrv +hrv +hrv +ilR anF anF aoa @@ -84521,10 +84194,10 @@ cfa cje cgR cnZ -rRI +lSn cpy ccw -kbf +fXl ccw ccw cqY @@ -84535,16 +84208,16 @@ aoV aoV aaa aaa -aaf -lkm +cSI +pzB aaa aoV aoV cFJ -dlj +sOa ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -84663,14 +84336,14 @@ aaa aaa aaa aaf -rUB +dwQ aaf -tMh -jcD -iev -erH +dKf +uqz +kwo +mOo abN -dFm +rth acF acF aes @@ -84681,16 +84354,16 @@ ahB aHp agn aiX -ivo -utg +oFD +ksW amS alA -hnm +xCS amm -eyV +fev anT anT -aod +apn aqe arf arf @@ -84701,10 +84374,10 @@ arf arf arf arf -sPM -sPM -sPM -sPM +rwa +rwa +rwa +rwa anF ahn aJn @@ -84783,25 +84456,25 @@ cpD cDw cDF cEa -dxw +kTZ csP -dlj -oWs +sOa +fZs cAq cFK aoV aaa aaa -gXs +pzB cFK aoV aoV cFK cFJ -dlj +sOa ccw -nyw -ldw +sHb +fGu aaf aaa aaa @@ -84920,12 +84593,12 @@ aaa aaa aaa aaf -rUB +dwQ aaf -tMh -szF -aCU -kEw +dKf +uuU +enX +jsN aci acm cpA @@ -84942,10 +84615,10 @@ ajJ akr akX aje -fpI -fpI -fpI -fpI +oUp +oUp +oUp +oUp aoB aod aqe @@ -84958,10 +84631,10 @@ atf arf aqa atf -sPM -tQO -wom -sPM +rwa +tRB +kcH +rwa anF ahn aaa @@ -85040,10 +84713,10 @@ cgR cgR cgR cqT -dxw +kTZ csP -dlj -dlj +sOa +sOa cAq cFJ cSK @@ -85054,11 +84727,11 @@ cSK cFJ cSK cFJ -dlj -dlj +sOa +sOa ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -85179,9 +84852,9 @@ aaf aaf ctv ctv -nyw +sHb adR -mxQ +qyv avB aaZ aaZ @@ -85200,12 +84873,12 @@ ahY akX ajc alC -fpI -fpI -oHs -hfY -nYB -ujA +oUp +oUp +leL +vDk +aod +aqe arf apY ate @@ -85215,10 +84888,10 @@ ath arf apY ath -sPM -gQx -ssC -sPM +rwa +faG +rtI +rwa anF ahn aaa @@ -85297,25 +84970,25 @@ cnx cDx cqb cqT -dxw +kTZ cEs -dlj -oWs +sOa +fZs cAr -qtN +tgb cGh -qtN +tgb cGh -qtN +tgb cGh -qtN -rre -dlj -dlj -dlj +tgb +gUa +sOa +sOa +sOa ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -85435,9 +85108,9 @@ aaa aaa aaa atS -uAc -eXc -rVc +ebz +aEs +pyu abO abO acO @@ -85452,14 +85125,14 @@ ahA ahZ adR aiQ -kvn +kUh akt -kyp -iUe +oFM +nlM ajc -ndn +flZ aiG -pmD +heb aoD aod aqe @@ -85472,10 +85145,10 @@ ath arf ayV ath -sPM +rwa aCd -ssC -sPM +rtI +rwa anF ahn aJw @@ -85558,21 +85231,21 @@ ccw ccw ccw crc -dlj +sOa cBR -dlj -dlj -dlj -dlj -dlj -dlj -dlj +sOa +sOa +sOa +sOa +sOa +sOa +sOa cBR -dlj -tSN +sOa +jTA ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -85691,9 +85364,9 @@ aaa aaa aaa aaa -iFU -jWi -wRi +nip +exs +soh abO abO abO @@ -85712,11 +85385,11 @@ ajf ajK aks akY -wUk +sPd ajc -gAl +sTB alC -pmD +heb aoC aod aqe @@ -85729,10 +85402,10 @@ awo arf asd aAb -sPM -myR -ssC -sPM +rwa +siw +rtI +rwa aoa ahn aJv @@ -85809,27 +85482,27 @@ cDe cDk coc cqa -rYe -wWq -pYB +hYu +qCO +swV czF cEK csd -dlj +sOa cFU -dlj +sOa cGE -sDk +vob cGZ -sDk -csx -dlj +vob +qRE +sOa cFU -dlj -dlj +sOa +sOa ccw -nyw -lkm +sHb +pzB aaa aaa aaa @@ -85948,14 +85621,14 @@ aaa aaa aaa aaa -uow -jWi -wRi -rjW -rjW -rjW -rjW -rjW +ohN +exs +soh +klO +klO +klO +klO +klO abO aew afe @@ -85967,13 +85640,13 @@ aia aiP aiR ajB -dVC +lUX aiX akz alf -lXp -lXp -ldy +iei +iei +sxZ aoF apo aqh @@ -86072,21 +85745,21 @@ ccw crM ccw crV -cFn -qYL -cFn -iWY +fBa +kbA +fBa +cNt ccw ccw ccw cGr -cFn -kPB -fAn -fAn +fBa +vvD +dPI +dPI ccw -nyw -cQG +sHb +cSI aaf aaa aaa @@ -86205,9 +85878,9 @@ aaa aaa aaa aaf -dcQ -jWi -jWi +wjY +exs +exs abO abO acp @@ -86228,11 +85901,11 @@ aku aiX alE amq -iyX -qIa -fAq +iob +gjf +uJC aoE -gLD +aod aqg aun asf @@ -86341,9 +86014,9 @@ ccw ccw ccw ccw -maf -nyw -lkm +jbA +sHb +pzB aaa aaa aaa @@ -86462,14 +86135,14 @@ aaa aaa aaa aaa -uow -sJQ -xDv -lJX +ohN +kNF +hse +gMt abR -lJX -lJX -lJX +gMt +gMt +gMt abl abp abp @@ -86589,18 +86262,18 @@ ccw ccw ccw ccw -kgu -crJ -crJ -crJ -nyw -nyw -nyw -nyw -nyw +iex +crH +crH +crH +sHb +sHb +sHb +sHb +sHb aaa -cQG -lkm +cSI +pzB aaa aaa aaa @@ -86850,13 +86523,13 @@ aaa aaa aaa aaa -crJ -nyw -nyw -nyw -lkm -lkm -lkm +crH +sHb +sHb +sHb +pzB +pzB +pzB aaa aaa aaa @@ -87079,7 +86752,7 @@ caE cbA ccy bOd -gMx +qyS bQu cfO cgW @@ -87101,17 +86774,17 @@ ccw crX cfK aag -lkm -lkm -lkm -lkm -lkm -lkm +pzB +pzB +pzB +pzB +pzB +pzB gXs gXs gXs gXs -lkm +pzB aaa aaa aae @@ -87324,7 +86997,7 @@ bIF bOZ bQp bRA -gMx +qyS bTO bUL bVU @@ -88376,9 +88049,9 @@ clV cmV bOh cig -cpc -cpJ -cpc +aaa +afp +aaa cig cqY cqY @@ -88633,9 +88306,9 @@ clW clW bOh cig -cpd -czM -cpd +aaa +aaa +aaa cig aaa aaa @@ -88890,9 +88563,9 @@ bOh bOh bOh ccw -cpd -czL -cpd +aaa +aaa +aaa ccw aaf aaa @@ -89147,9 +88820,9 @@ clY clZ bOh aaa -cpd -cpM -cpd +aaa +aaa +aaa aaf aaf aaa @@ -89812,9 +89485,9 @@ aaf aaf aaf abp -aeD +aaa afp -aeD +aaa abp aaa aaa @@ -90069,9 +89742,9 @@ aaf aaa aaa adR -aeE -afr -aeE +aaa +aaa +aaa adR aaa aaa @@ -90326,9 +89999,9 @@ aaa aaa aaa aaa -aeE -afq -aeE +aaa +aaa +aaa aaa aaa aaa @@ -90583,9 +90256,9 @@ aaa aaa aaa aaa -aeE -afs -aeE +aaa +aaa +aaa aaa aaa aaa @@ -90679,19 +90352,19 @@ ccC cdD bOh aaf -aah -aah +cCS +cCS aaf aaf aaf aaf aaf -aah -aah -aah -aah -aah -aah +cCS +cCS +cCS +cCS +cCS +cCS aaf aaf aaf @@ -95759,7 +95432,7 @@ aFp aGW anf aIp -aKI +fGf aMA aIp aOX diff --git a/_maps/cit_map_files/Deltastation/DeltaStation2.dmm b/_maps/cit_map_files/Deltastation/DeltaStation2.dmm index 26ad2b8e78..2b49472df3 100644 --- a/_maps/cit_map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/cit_map_files/Deltastation/DeltaStation2.dmm @@ -124,27 +124,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) -"aaq" = ( -/obj/structure/cable/white{ - icon_state = "0-8" - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/security/prison) -"aar" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/cryopod, -/obj/machinery/computer/cryopod{ - pixel_y = 28 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/prison) "aas" = ( /obj/docking_port/stationary/random{ id = "pod_lavaland1"; @@ -164,116 +143,10 @@ /obj/effect/landmark/xeno_spawn, /turf/open/space, /area/solar/starboard/fore) -"aav" = ( -/obj/structure/cable/white, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/power/emitter{ - anchored = 1; - state = 2 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aaw" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Fore Starboard"; - dir = 8; - network = list("singularity") - }, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aax" = ( -/turf/open/floor/plating/airless, -/area/space) -"aay" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/engine/engineering) -"aaz" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/space, -/area/space) -"aaA" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_1) -"aaB" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_1) -"aaC" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_2) -"aaD" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_2) "aaE" = ( /obj/structure/lattice/catwalk, /turf/open/space, /area/solar/starboard/fore) -"aaF" = ( -/turf/open/floor/plating/airless, -/area/space/nearstation) -"aaG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"aaH" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/space, -/area/space) -"aaI" = ( -/obj/effect/decal/cleanable/oil, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engpa"; - name = "Engineering Chamber Shutters" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"aaJ" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/space, -/area/space) -"aaK" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/space, -/area/space) -"aaL" = ( -/turf/open/space/basic, -/area/space/nearstation) -"aaM" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/space, -/area/space) -"aaN" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/engine/engineering) "aaO" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -281,123 +154,9 @@ "aaP" = ( /turf/closed/wall/mineral/plastitanium, /area/hallway/secondary/entry) -"aaQ" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/status_display{ - pixel_x = 32 - }, -/obj/machinery/computer/shuttle/pod{ - pixel_x = -32; - possible_destinations = "pod_lavaland1"; - shuttleId = "pod1" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/pod_1) -"aaR" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/status_display{ - pixel_x = 32 - }, -/obj/machinery/computer/shuttle/pod{ - pixel_x = -32; - possible_destinations = "pod_lavaland2"; - shuttleId = "pod2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/pod_2) "aaS" = ( /turf/closed/wall/mineral/plastitanium, /area/construction/mining/aux_base) -"aaT" = ( -/turf/open/space, -/area/space) -"aaU" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"aaV" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engpa"; - name = "Engineering Chamber Shutters" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aaW" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"aaX" = ( -/obj/structure/particle_accelerator/particle_emitter/left{ - icon_state = "emitter_left"; - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"aaY" = ( -/obj/structure/cable, -/obj/machinery/particle_accelerator/control_box, -/turf/open/floor/plating, -/area/engine/engineering) -"aaZ" = ( -/obj/machinery/vending/kink, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/crew_quarters/locker) -"aba" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space) -"abb" = ( -/obj/structure/particle_accelerator/particle_emitter/center{ - icon_state = "emitter_center"; - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"abc" = ( -/obj/structure/particle_accelerator/power_box{ - icon_state = "power_box"; - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"abd" = ( -/obj/structure/particle_accelerator/fuel_chamber{ - icon_state = "fuel_chamber"; - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) "abe" = ( /obj/effect/turf_decal/delivery, /obj/item/twohanded/required/kirbyplants/random, @@ -406,48 +165,6 @@ "abf" = ( /turf/closed/wall, /area/hallway/secondary/entry) -"abg" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/item/device/radio/intercom{ - pixel_x = 25 - }, -/obj/item/storage/pod{ - pixel_x = -26 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/pod_1) -"abh" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/item/device/radio/intercom{ - pixel_x = 25 - }, -/obj/item/storage/pod{ - pixel_x = -26 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/pod_2) "abi" = ( /turf/closed/wall, /area/construction/mining/aux_base) @@ -455,44 +172,6 @@ /obj/structure/lattice/catwalk, /turf/open/space, /area/space/nearstation) -"abk" = ( -/obj/structure/particle_accelerator/end_cap{ - icon_state = "end_cap"; - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"abl" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/space) -"abm" = ( -/obj/structure/particle_accelerator/particle_emitter/right{ - icon_state = "emitter_right"; - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"abn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/computer/cryopod{ - pixel_x = 28 - }, -/turf/open/floor/plasteel/neutral/side{ - dir = 4 - }, -/area/crew_quarters/locker) -"abo" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/engine/engineering) "abp" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ @@ -516,98 +195,22 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) -"abr" = ( -/obj/structure/shuttle/engine/propulsion/burst, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_1) "abs" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Escape Pod Airlock" +/obj/docking_port/stationary{ + dir = 1; + dwidth = 1; + height = 4; + name = "escape pod loader"; + roundstart_template = /datum/map_template/shuttle/escape_pod/default; + width = 3 }, -/obj/docking_port/mobile/pod{ - id = "pod1"; - name = "escape pod 1"; - port_direction = 2 - }, -/obj/effect/turf_decal/stripes/end, -/turf/open/floor/plasteel/white, -/area/shuttle/pod_1) -"abt" = ( -/obj/structure/shuttle/engine/propulsion/burst, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_2) -"abu" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ - id = "pod2"; - name = "escape pod 2"; - port_direction = 2 - }, -/obj/effect/turf_decal/stripes/end, -/turf/open/floor/plasteel/white, -/area/shuttle/pod_2) +/turf/open/space/basic, +/area/space) "abv" = ( /obj/item/stack/cable_coil, /obj/structure/lattice/catwalk, /turf/open/space, /area/solar/starboard/fore) -"abw" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/cryopod, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/crew_quarters/locker) -"abx" = ( -/obj/machinery/status_display{ - pixel_x = 32 - }, -/obj/machinery/cryopod, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/crew_quarters/locker) -"aby" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/power/tesla_coil, -/turf/open/floor/plating/airless, -/area/space) -"abz" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, -/area/space) -"abA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"abB" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Aft Starboard"; - dir = 8; - network = list("singularity") - }, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, -/area/engine/engineering) "abC" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -660,66 +263,6 @@ }, /turf/open/floor/plasteel, /area/construction/mining/aux_base) -"abI" = ( -/obj/structure/cable/white{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/power/emitter{ - anchored = 1; - dir = 1; - icon_state = "emitter"; - state = 2 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"abJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/space) -"abK" = ( -/obj/machinery/field/generator{ - anchored = 1; - state = 2 - }, -/turf/open/floor/plating/airless, -/area/space) -"abL" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space) -"abM" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/space, -/area/space) -"abN" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/space) -"abO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating/airless, -/area/space) "abP" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/external{ @@ -768,44 +311,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/construction/mining/aux_base) -"abU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating/airless, -/area/space) -"abV" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/power/tesla_coil, -/turf/open/floor/plating/airless, -/area/space) -"abW" = ( -/obj/machinery/the_singularitygen/tesla, -/turf/open/floor/plating/airless, -/area/space) -"abX" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space) -"abY" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space) "abZ" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line{ @@ -869,57 +374,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) -"acg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating/airless, -/area/space) -"ach" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plating/airless, -/area/space) -"aci" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating/airless, -/area/space) -"acj" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/space) -"ack" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/space) -"acl" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/power/tesla_coil, -/turf/open/floor/plating/airless, -/area/space) -"acm" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/corner, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, -/area/space) -"acn" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/space, -/area/space) "aco" = ( /turf/open/floor/plasteel/neutral, /area/hallway/secondary/entry) @@ -981,23 +435,6 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) -"acw" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/space, -/area/space) -"acx" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/space, -/area/space) "acF" = ( /obj/docking_port/stationary{ dir = 2; @@ -1527,24 +964,8 @@ }, /area/construction/mining/aux_base) "aeF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, -/area/shuttle/auxillary_base) -"aeG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"aeH" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) +/area/construction/mining/aux_base) "aeR" = ( /obj/structure/closet/emcloset, /obj/effect/decal/cleanable/dirt, @@ -1638,31 +1059,6 @@ dir = 4 }, /area/construction/mining/aux_base) -"afg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"afh" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"afi" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"afj" = ( -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"afk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "aft" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/delivery, @@ -1807,10 +1203,6 @@ dir = 4 }, /area/construction/mining/aux_base) -"afZ" = ( -/obj/structure/mining_shuttle_beacon, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "agj" = ( /obj/structure/closet/firecloset, /obj/effect/decal/cleanable/dirt, @@ -1878,45 +1270,6 @@ }, /turf/open/floor/plating, /area/construction/mining/aux_base) -"agq" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/docking_port/stationary/public_mining_dock{ - dir = 4 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"agr" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"ags" = ( -/obj/docking_port/mobile/auxillary_base{ - dheight = 4; - dir = 2; - dwidth = 4; - height = 9; - width = 9 - }, -/obj/machinery/bluespace_beacon, -/obj/docking_port/mobile/auxillary_base, -/obj/machinery/computer/auxillary_base, -/turf/closed/wall, -/area/shuttle/auxillary_base) -"agt" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Auxillary Base"; - dir = 4; - name = "engineering camera" - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "agB" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -1973,7 +1326,6 @@ height = 17; id = "syndicate_ne"; name = "northeast of station"; - turf_type = /turf/open/space; width = 23 }, /turf/open/space, @@ -2087,18 +1439,6 @@ dir = 4 }, /area/construction/mining/aux_base) -"ahw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"ahx" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "ahz" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -2149,17 +1489,6 @@ dir = 6 }, /area/construction/mining/aux_base) -"ahG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/structure/ore_box, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"ahH" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "ahO" = ( /obj/machinery/status_display{ pixel_x = -32 @@ -2278,7 +1607,6 @@ height = 13; id = "ferry_home"; name = "port bay 2"; - turf_type = /turf/open/space; width = 5 }, /turf/open/space/basic, @@ -5169,20 +4497,19 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/conveyor{ - dir = 5; - id = "garbage"; - verted = -1 - }, /obj/effect/turf_decal/stripes/line{ dir = 9 }, /obj/effect/turf_decal/stripes/corner, +/obj/machinery/conveyor{ + dir = 5; + id = "garbage" + }, /turf/open/floor/plating, /area/maintenance/disposal) "apD" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/structure/disposalpipe/segment{ @@ -5201,7 +4528,7 @@ /area/maintenance/disposal) "apE" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/structure/disposalpipe/segment{ @@ -5672,7 +4999,7 @@ /area/maintenance/disposal) "aqE" = ( /obj/machinery/conveyor{ - dir = 2; + dir = 1; id = "garbage" }, /obj/effect/decal/cleanable/dirt, @@ -5711,7 +5038,7 @@ /area/maintenance/disposal) "aqG" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = -1; + dir = 8; id = "garbage"; name = "disposal conveyor" }, @@ -5966,7 +5293,7 @@ /area/maintenance/disposal) "arg" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "garbage" }, /obj/machinery/door/window/eastright{ @@ -6413,22 +5740,21 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/conveyor{ - dir = 9; - id = "garbage"; - verted = -1 - }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/effect/turf_decal/stripes/corner{ dir = 8 }, +/obj/machinery/conveyor{ + dir = 9; + id = "garbage" + }, /turf/open/floor/plating, /area/maintenance/disposal) "asf" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "garbage" }, /obj/effect/turf_decal/stripes/line{ @@ -6438,7 +5764,7 @@ /area/maintenance/disposal) "asg" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "garbage" }, /obj/effect/decal/cleanable/blood/splatter, @@ -6448,10 +5774,6 @@ /turf/open/floor/plating, /area/maintenance/disposal) "ash" = ( -/obj/machinery/conveyor{ - dir = 6; - id = "garbage" - }, /obj/machinery/door/window/eastright{ base_state = "left"; dir = 4; @@ -6464,6 +5786,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, +/obj/machinery/conveyor/inverted{ + dir = 6; + id = "garbage" + }, /turf/open/floor/plating, /area/maintenance/disposal) "asi" = ( @@ -7184,10 +6510,6 @@ /turf/open/floor/plating, /area/maintenance/disposal) "atB" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "garbage" - }, /obj/structure/disposaloutlet{ dir = 4 }, @@ -7201,7 +6523,7 @@ /area/maintenance/disposal) "atC" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/structure/disposalpipe/segment{ @@ -7213,7 +6535,7 @@ /area/maintenance/disposal) "atD" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/machinery/atmospherics/components/unary/vent_pump/on, @@ -7224,7 +6546,7 @@ /area/maintenance/disposal) "atE" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/machinery/recycler, @@ -7238,14 +6560,14 @@ name = "Danger: Conveyor Access"; req_access_txt = "12" }, -/obj/machinery/conveyor{ - dir = 10; - id = "garbage" - }, /obj/effect/decal/cleanable/blood/splatter, /obj/effect/turf_decal/stripes/line{ dir = 6 }, +/obj/machinery/conveyor/inverted{ + dir = 10; + id = "garbage" + }, /turf/open/floor/plating, /area/maintenance/disposal) "atG" = ( @@ -7957,10 +7279,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Cooling to Unfiltered"; - on = 1 + name = "Cooling to Unfiltered" }, /turf/open/floor/plasteel, /area/engine/atmospherics_engine) @@ -9627,7 +8948,7 @@ /turf/open/floor/circuit/green, /area/engine/supermatter) "ayK" = ( -/obj/machinery/power/supermatter_shard/crystal/engine, +/obj/machinery/power/supermatter_crystal/engine, /turf/open/floor/engine, /area/engine/supermatter) "ayL" = ( @@ -10093,9 +9414,8 @@ network = list("ss13","engine") }, /obj/effect/turf_decal/bot, -/obj/machinery/atmospherics/components/unary/thermomachine/heater{ - dir = 4; - on = 1 +/obj/machinery/atmospherics/components/unary/thermomachine/heater/on{ + dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmospherics_engine) @@ -10481,7 +9801,8 @@ /area/quartermaster/storage) "aAH" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/conveyor_switch{ +/obj/machinery/conveyor_switch/oneway{ + dir = 8; id = "cargounload" }, /turf/open/floor/plasteel/brown{ @@ -10528,7 +9849,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/bot, /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - icon_state = "freezer"; dir = 4 }, /turf/open/floor/plasteel, @@ -10573,7 +9893,7 @@ /turf/closed/wall/r_wall, /area/engine/supermatter) "aAW" = ( -/obj/machinery/door/airlock/atmos/glass{ +/obj/machinery/door/airlock/atmos/glass/critical{ heat_proof = 1; name = "Supermatter Chamber"; req_one_access_txt = "24;10" @@ -12034,10 +11354,9 @@ /turf/open/floor/plating, /area/quartermaster/storage) "aEl" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Gas to Cooling Loop"; - on = 1 + name = "Gas to Cooling Loop" }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -12106,10 +11425,9 @@ /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "aEr" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Gas to Filter"; - on = 1 + name = "Gas to Filter" }, /obj/structure/cable{ icon_state = "4-8" @@ -13040,11 +12358,11 @@ /turf/open/floor/plating, /area/quartermaster/sorting) "aGp" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/conveyor{ - dir = 2; + dir = 6; id = "cargodeliver" }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/quartermaster/sorting) "aGq" = ( @@ -13972,7 +13290,7 @@ /area/quartermaster/storage) "aHU" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/conveyor_switch{ +/obj/machinery/conveyor_switch/oneway{ id = "cargoload" }, /turf/open/floor/plasteel/brown{ @@ -14592,7 +13910,7 @@ "aJg" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/conveyor_switch/oneway{ - convdir = -1; + dir = 8; id = "cargodeliver"; name = "delivery conveyor"; pixel_x = -12 @@ -15395,6 +14713,14 @@ }, /turf/open/floor/plasteel, /area/security/prison) +"aKY" = ( +/obj/structure/cable/white{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/security/prison) "aKZ" = ( /turf/closed/wall/r_wall, /area/security/execution/education) @@ -15852,14 +15178,14 @@ /turf/open/floor/plasteel, /area/quartermaster/storage) "aLY" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "cargoload" - }, /obj/effect/decal/cleanable/dirt, /obj/machinery/light{ dir = 4 }, +/obj/machinery/conveyor/inverted{ + dir = 10; + id = "cargoload" + }, /turf/open/floor/plating, /area/quartermaster/storage) "aMc" = ( @@ -15951,6 +15277,19 @@ dir = 4 }, /area/security/prison) +"aMk" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/cryopod, +/obj/machinery/computer/cryopod{ + pixel_y = 28 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 1 + }, +/area/security/prison) "aMl" = ( /obj/structure/table, /obj/structure/cable/white{ @@ -16663,10 +16002,7 @@ /area/maintenance/disposal/incinerator) "aNR" = ( /obj/machinery/igniter{ - icon_state = "igniter0"; - id = "Incinerator"; - luminosity = 2; - on = 0 + id = "Incinerator" }, /obj/structure/cable{ icon_state = "4-8" @@ -16725,6 +16061,17 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, +/obj/machinery/embedded_controller/radio/airlock_controller{ + airpump_tag = "incinerator_airlock_pump"; + exterior_door_tag = "incinerator_airlock_exterior"; + id_tag = "incinerator_airlock_control"; + interior_door_tag = "incinerator_airlock_interior"; + name = "Incinerator Access Console"; + pixel_y = 27; + req_access_txt = "12"; + sanitize_external = 1; + sensor_tag = "incinerator_airlock_sensor" + }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "aNV" = ( @@ -17392,18 +16739,6 @@ /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "aPA" = ( -/obj/machinery/embedded_controller/radio/airlock_controller{ - name = "Incinerator Access Console"; - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_access_control"; - interior_door_tag = "incinerator_airlock_interior"; - pixel_x = 8; - pixel_y = -24; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor"; - req_access_txt = "12" - }, /obj/machinery/button/ignition{ id = "Incinerator"; pixel_x = 8; @@ -21005,8 +20340,7 @@ "aWq" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Justice gas pump"; - on = 0 + name = "Justice gas pump" }, /obj/machinery/door/window/westleft, /turf/open/floor/plasteel/vault{ @@ -21091,8 +20425,7 @@ /obj/machinery/atmospherics/pipe/simple/green/visible, /obj/machinery/atmospherics/components/binary/pump{ dir = 4; - name = "CO2 to Pure"; - on = 0 + name = "CO2 to Pure" }, /turf/open/floor/plasteel/vault, /area/engine/atmos) @@ -21778,9 +21111,8 @@ /turf/open/floor/plasteel, /area/engine/atmos) "aYb" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/heater{ - dir = 4; - on = 1 +/obj/machinery/atmospherics/components/unary/thermomachine/heater/on{ + dir = 4 }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -22732,15 +22064,6 @@ temperature = 2.7 }, /area/security/prison) -"aZN" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_3) -"aZO" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_3) "aZP" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/carbon_input{ dir = 4 @@ -22783,12 +22106,7 @@ dir = 8 }, /obj/structure/window/reinforced, -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 2; - filter_type = "co2"; - name = "co2 filter"; - on = 1 - }, +/obj/machinery/atmospherics/components/trinary/filter/atmos/co2, /turf/open/floor/plasteel/vault, /area/engine/atmos) "aZV" = ( @@ -22872,13 +22190,8 @@ /turf/open/floor/plasteel/neutral, /area/engine/atmos) "bag" = ( -/obj/machinery/atmospherics/components/trinary/mixer{ - dir = 1; - name = "air mixer"; - node1_concentration = 0.8; - node2_concentration = 0.2; - on = 1; - target_pressure = 4500 +/obj/machinery/atmospherics/components/trinary/mixer/airmix{ + dir = 1 }, /turf/open/floor/plasteel/neutral, /area/engine/atmos) @@ -22891,10 +22204,9 @@ pixel_y = 1 }, /obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "O2 to Airmix"; - on = 1 + name = "O2 to Airmix" }, /turf/open/floor/plasteel/blue/side{ dir = 5 @@ -23460,65 +22772,16 @@ /turf/open/floor/plasteel, /area/security/prison) "bbv" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ +/obj/docking_port/stationary{ dir = 4; - id = "pod3"; - name = "escape pod 3"; - port_direction = 2; - preferred_direction = 4 + dwidth = 1; + height = 4; + name = "escape pod loader"; + roundstart_template = /datum/map_template/shuttle/escape_pod/default; + width = 3 }, -/obj/effect/turf_decal/stripes/end{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/pod_3) -"bbw" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - pixel_y = 24 - }, -/obj/item/storage/pod{ - pixel_x = 6; - pixel_y = -32 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/machinery/light/small, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/pod_3) -"bbx" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/obj/machinery/computer/shuttle/pod{ - pixel_y = -32; - possible_destinations = "pod_lavaland3"; - shuttleId = "pod3" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/pod_3) -"bby" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_3) +/turf/open/space/basic, +/area/space) "bbz" = ( /obj/docking_port/stationary/random{ dir = 4; @@ -24219,8 +23482,7 @@ /obj/machinery/atmospherics/pipe/simple/green/visible, /obj/machinery/atmospherics/components/binary/pump{ dir = 4; - name = "Plasma to Pure"; - on = 0 + name = "Plasma to Pure" }, /turf/open/floor/plasteel/purple/side{ dir = 9 @@ -24283,11 +23545,8 @@ dir = 4 }, /obj/structure/window/reinforced, -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 1; - filter_type = "o2"; - name = "oxygen filter"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/o2{ + dir = 1 }, /turf/open/floor/plasteel/blue/side{ dir = 6 @@ -25431,12 +24690,7 @@ dir = 8 }, /obj/structure/window/reinforced, -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 2; - filter_type = "plasma"; - name = "waste filter"; - on = 1 - }, +/obj/machinery/atmospherics/components/trinary/filter/atmos/plasma, /turf/open/floor/plasteel/purple/side{ dir = 10 }, @@ -25444,8 +24698,7 @@ "bfW" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Port Mix to Port Ports"; - on = 0 + name = "Port Mix to Port Ports" }, /turf/open/floor/plasteel/neutral, /area/engine/atmos) @@ -25460,8 +24713,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Port Mix to Starboard Ports"; - on = 0 + name = "Port Mix to Starboard Ports" }, /turf/open/floor/plasteel/neutral, /area/engine/atmos) @@ -25511,10 +24763,9 @@ pixel_y = 1 }, /obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "N2 to Airmix"; - on = 1 + name = "N2 to Airmix" }, /turf/open/floor/plasteel/red/side{ dir = 5 @@ -26798,8 +26049,7 @@ /obj/machinery/atmospherics/pipe/simple/green/visible, /obj/machinery/atmospherics/components/binary/pump{ dir = 4; - name = "N2O to Pure"; - on = 0 + name = "N2O to Pure" }, /turf/open/floor/plasteel/escape{ dir = 9 @@ -26823,8 +26073,7 @@ "biZ" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Pure to Ports"; - on = 0 + name = "Pure to Ports" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -26834,8 +26083,7 @@ "bja" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Mix to Ports"; - on = 0 + name = "Mix to Ports" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -26845,8 +26093,7 @@ "bjb" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Air to Ports"; - on = 0 + name = "Air to Ports" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -26953,11 +26200,8 @@ dir = 4 }, /obj/structure/window/reinforced, -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 1; - filter_type = "n2"; - name = "nitrogen filter"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2{ + dir = 1 }, /turf/open/floor/plasteel/red/side{ dir = 6 @@ -28115,6 +27359,7 @@ /obj/structure/cable/white{ icon_state = "1-4" }, +/obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel, /area/quartermaster/miningoffice) "blS" = ( @@ -28501,12 +27746,7 @@ dir = 8 }, /obj/structure/window/reinforced, -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 2; - filter_type = "n2o"; - name = "n2o filter"; - on = 1 - }, +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/escape{ dir = 10 @@ -30048,10 +29288,9 @@ /area/engine/atmos) "bpR" = ( /obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Unfiltered & Air to Mix"; - on = 1 + name = "Unfiltered & Air to Mix" }, /turf/open/floor/plasteel/caution{ dir = 1 @@ -30069,8 +29308,7 @@ "bpT" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 2; - name = "Pure to Mix"; - on = 0 + name = "Pure to Mix" }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/caution{ @@ -30172,10 +29410,9 @@ /turf/open/floor/plasteel/neutral, /area/engine/atmos) "bqe" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Air to External Air Ports"; - on = 1 + name = "Air to External Air Ports" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ @@ -31167,10 +30404,9 @@ /area/engine/atmos) "bsa" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Mix to Filter"; - on = 1 + name = "Mix to Filter" }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -31237,10 +30473,9 @@ /area/engine/atmos) "bsh" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "External Waste Ports to Filter"; - on = 1 + name = "External Waste Ports to Filter" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ @@ -32137,10 +31372,9 @@ /obj/machinery/light{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Waste to Filter"; - on = 1 + name = "Waste to Filter" }, /turf/open/floor/plasteel/caution{ dir = 4 @@ -32688,8 +31922,7 @@ "bva" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 2; - name = "Mix to Distro"; - on = 0 + name = "Mix to Distro" }, /turf/open/floor/plasteel/neutral, /area/engine/atmos) @@ -32700,7 +31933,6 @@ /area/engine/atmos) "bvc" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - icon_state = "freezer"; dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -33275,9 +32507,8 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/ai) "bwr" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/heater{ - dir = 1; - on = 1 +/obj/machinery/atmospherics/components/unary/thermomachine/heater/on{ + dir = 1 }, /turf/open/floor/plasteel/arrival{ dir = 10 @@ -33294,10 +32525,9 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bwt" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; name = "Air to Distro"; - on = 1; target_pressure = 101 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -33325,8 +32555,7 @@ "bww" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 4; - name = "Distro to Waste"; - on = 0 + name = "Distro to Waste" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/caution, @@ -47120,7 +46349,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/structure/fans/tiny, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -47648,8 +46876,6 @@ /obj/item/gun/energy/ionrifle, /obj/item/clothing/suit/armor/laserproof, /obj/item/gun/energy/temperature/security, -/obj/item/gun/energy/pumpaction/blaster, -/obj/item/gun/energy/pumpaction/blaster, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -50495,6 +49721,17 @@ "cdC" = ( /turf/open/floor/plating/airless, /area/engine/engineering) +"cdD" = ( +/obj/structure/cable/white, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/power/emitter{ + anchored = 1; + state = 2 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "cdE" = ( /obj/structure/cable/white{ icon_state = "1-4" @@ -51554,6 +50791,15 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating/airless, /area/engine/engineering) +"cfB" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Containment - Fore Starboard"; + dir = 8; + network = list("singularity") + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless, +/area/engine/engineering) "cfC" = ( /obj/structure/sign/warning/vacuum, /turf/closed/wall/r_wall, @@ -52525,6 +51771,10 @@ }, /turf/open/space, /area/space/nearstation) +"chu" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/engine/engineering) "chv" = ( /obj/machinery/door/poddoor/shutters/preopen{ id = "engpa"; @@ -53265,11 +52515,48 @@ network = list("singularity") }, /turf/open/space, -/area/space/nearstation) +/area/engine/engineering) +"ciZ" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/space, +/area/space) +"cja" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/space, +/area/space) +"cjb" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/space, +/area/space) +"cjc" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/space, +/area/space) "cjd" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/engine/engineering) +"cje" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) "cjg" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -53813,6 +53100,54 @@ dir = 8 }, /area/ai_monitored/turret_protected/ai_upload) +"cku" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/space, +/area/space) +"ckv" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space) +"ckw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/space) +"ckx" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless, +/area/space) +"ckz" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless, +/area/space) +"ckA" = ( +/obj/effect/decal/cleanable/oil, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engpa"; + name = "Engineering Chamber Shutters" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) "ckD" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral, @@ -54376,6 +53711,28 @@ dir = 8 }, /area/ai_monitored/turret_protected/ai_upload) +"clR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/space) +"clS" = ( +/obj/machinery/field/generator{ + anchored = 1; + state = 2 + }, +/turf/open/floor/plating/airless, +/area/space) +"clU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space) "clW" = ( /obj/structure/rack, /obj/item/crowbar, @@ -54384,6 +53741,10 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engine/engineering) +"clX" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/engineering) "clY" = ( /obj/structure/rack, /obj/machinery/button/door{ @@ -55213,6 +54574,25 @@ dir = 5 }, /area/aisat) +"cnA" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/space, +/area/space) +"cnB" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/space) "cnC" = ( /obj/structure/sign/warning/radiation, /turf/closed/wall/r_wall, @@ -55221,6 +54601,19 @@ /obj/machinery/status_display, /turf/closed/wall/r_wall, /area/engine/engineering) +"cnE" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engpa"; + name = "Engineering Chamber Shutters" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "cnF" = ( /obj/machinery/requests_console{ department = "Chapel Office"; @@ -55423,11 +54816,8 @@ /turf/closed/wall, /area/tcommsat/server) "cof" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1; - min_temperature = 80; - on = 1; - target_temperature = 80 +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + dir = 1 }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -55464,11 +54854,8 @@ /turf/open/floor/plasteel, /area/tcommsat/server) "coj" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1; - min_temperature = 80; - on = 1; - target_temperature = 80 +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + dir = 1 }, /obj/machinery/camera{ c_tag = "Telecomms - Cooling Room"; @@ -55892,6 +55279,15 @@ }, /turf/open/floor/plating, /area/engine/engineering) +"cpc" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/engine/engineering) "cpd" = ( /obj/machinery/button/door{ id = "engpa"; @@ -56423,6 +55819,18 @@ /obj/structure/lattice, /turf/open/space, /area/space/nearstation) +"cqo" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating/airless, +/area/space) +"cqp" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating/airless, +/area/space) "cqq" = ( /obj/structure/cable{ icon_state = "1-2" @@ -56432,10 +55840,22 @@ }, /turf/open/floor/plating, /area/engine/engineering) +"cqr" = ( +/obj/structure/particle_accelerator/particle_emitter/left{ + icon_state = "emitter_left"; + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) "cqs" = ( /obj/item/stack/cable_coil/red, /turf/open/floor/plating, /area/engine/engineering) +"cqt" = ( +/obj/structure/cable, +/obj/machinery/particle_accelerator/control_box, +/turf/open/floor/plating, +/area/engine/engineering) "cqu" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -56981,6 +56401,38 @@ dir = 5 }, /area/aisat) +"crI" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless, +/area/space) +"crJ" = ( +/obj/machinery/the_singularitygen/tesla, +/turf/open/floor/plating/airless, +/area/space) +"crK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space) +"crL" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space) "crM" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -57000,6 +56452,13 @@ }, /turf/open/floor/plating, /area/engine/engineering) +"crO" = ( +/obj/structure/particle_accelerator/fuel_chamber{ + icon_state = "fuel_chamber"; + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) "crP" = ( /obj/machinery/light{ dir = 4 @@ -57757,6 +57216,31 @@ dir = 5 }, /area/aisat) +"ctm" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating/airless, +/area/space) +"ctn" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plating/airless, +/area/space) +"cto" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating/airless, +/area/space) +"ctp" = ( +/obj/structure/particle_accelerator/particle_emitter/right{ + icon_state = "emitter_right"; + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) "ctq" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -58412,6 +57896,17 @@ }, /turf/open/floor/plasteel/neutral, /area/crew_quarters/locker) +"cuB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/computer/cryopod{ + pixel_x = 28 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/crew_quarters/locker) "cuC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -58552,6 +58047,13 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/engine/engineering) +"cuT" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/engine/engineering) "cuU" = ( /obj/machinery/button/door{ id = "engpa"; @@ -59649,6 +59151,15 @@ }, /turf/open/floor/plasteel/neutral/corner, /area/crew_quarters/locker) +"cxr" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/cryopod, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/crew_quarters/locker) "cxs" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -60416,6 +59927,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/neutral/corner, /area/crew_quarters/locker) +"cyW" = ( +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/machinery/cryopod, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/crew_quarters/locker) "cyX" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 @@ -60553,6 +60073,28 @@ dir = 4 }, /area/crew_quarters/fitness/recreation) +"czo" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/space) +"czp" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless, +/area/space) +"czr" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless, +/area/space) "czu" = ( /obj/structure/cable/white{ icon_state = "0-2" @@ -61141,7 +60683,41 @@ network = list("singularity") }, /turf/open/space, -/area/space/nearstation) +/area/engine/engineering) +"cAH" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/space, +/area/space) +"cAI" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/space, +/area/space) +"cAJ" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/space, +/area/space) +"cAK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) "cAL" = ( /obj/machinery/rnd/production/protolathe/department/engineering, /obj/effect/turf_decal/stripes/line{ @@ -62714,6 +62290,15 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) +"cDV" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Containment - Aft Starboard"; + dir = 8; + network = list("singularity") + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless, +/area/engine/engineering) "cDW" = ( /obj/machinery/light{ dir = 8 @@ -63590,6 +63175,19 @@ name = "Holodeck Projector Floor" }, /area/holodeck/rec_center) +"cFH" = ( +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/power/emitter{ + anchored = 1; + dir = 1; + icon_state = "emitter"; + state = 2 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "cFI" = ( /obj/structure/cable/white{ icon_state = "2-4" @@ -70411,11 +70009,8 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "cTR" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1; - min_temperature = 80; - on = 1; - target_temperature = 80 +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + dir = 1 }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -83723,9 +83318,8 @@ }, /area/science/mixing) "dwk" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/heater{ - dir = 8; - on = 1 +/obj/machinery/atmospherics/components/unary/thermomachine/heater/on{ + dir = 8 }, /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -86912,7 +86506,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Morgue"; req_access_txt = "9" }, @@ -87324,7 +86918,6 @@ /area/science/mixing) "dDr" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - icon_state = "freezer"; dir = 8 }, /obj/effect/turf_decal/stripes/line{ @@ -87927,11 +87520,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - min_temperature = 80; - on = 1; - target_temperature = 80 - }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -88643,7 +88232,7 @@ /area/hallway/primary/aft) "dGg" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Morgue"; req_access_txt = "6" }, @@ -88770,7 +88359,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Morgue"; req_access_txt = "5" }, @@ -95537,7 +95126,7 @@ }, /area/chapel/office) "dVb" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel Morgue"; req_access_txt = "27" }, @@ -95573,7 +95162,7 @@ /area/chapel/main) "dVh" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel Hall" }, /obj/structure/disposalpipe/segment{ @@ -95845,7 +95434,7 @@ /area/chapel/main) "dVW" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel Hall" }, /obj/effect/turf_decal/stripes/line{ @@ -97206,7 +96795,7 @@ /turf/closed/wall, /area/chapel/office) "dZi" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Crematorium"; req_access_txt = "27" }, @@ -97588,7 +97177,6 @@ height = 18; id = "emergency_home"; name = "DeltaStation emergency evac bay"; - turf_type = /turf/open/space; width = 30 }, /turf/open/space/basic, @@ -98779,7 +98367,7 @@ /turf/closed/wall, /area/chapel/main) "ecU" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel Office"; req_access_txt = "27" }, @@ -99853,7 +99441,7 @@ }, /area/chapel/office) "efm" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel Quarters"; req_access_txt = "27" }, @@ -100524,15 +100112,6 @@ /obj/machinery/rnd/production/techfab/department/cargo, /turf/open/floor/plasteel/brown, /area/quartermaster/office) -"ehK" = ( -/obj/machinery/mineral/ore_redemption{ - input_dir = 4; - output_dir = 8 - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/box, -/turf/open/floor/plasteel/neutral, -/area/quartermaster/miningoffice) "ehL" = ( /obj/structure/cable/white{ icon_state = "1-2" @@ -100599,6 +100178,13 @@ }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"fNi" = ( +/obj/structure/particle_accelerator/end_cap{ + icon_state = "end_cap"; + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) "fRT" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -100609,6 +100195,10 @@ }, /turf/open/floor/plating, /area/maintenance/port) +"fRV" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space) "gmj" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, @@ -100642,6 +100232,14 @@ dir = 1 }, /area/science/circuit) +"hdH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor{ + dir = 9; + id = "cargoload" + }, +/turf/open/floor/plating, +/area/quartermaster/storage) "hic" = ( /obj/structure/table/reinforced, /obj/item/device/integrated_electronics/analyzer, @@ -100711,6 +100309,16 @@ dir = 9 }, /area/science/circuit) +"hQY" = ( +/turf/open/space, +/area/space) +"iuy" = ( +/obj/structure/particle_accelerator/power_box{ + icon_state = "power_box"; + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) "iQh" = ( /obj/structure/bodycontainer/morgue{ dir = 1 @@ -100769,6 +100377,18 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral, /area/medical/morgue) +"jRi" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/space) +"kam" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor{ + dir = 5; + id = "cargoload" + }, +/turf/open/floor/plating, +/area/quartermaster/storage) "kwx" = ( /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel/whitepurple/corner, @@ -100783,6 +100403,17 @@ dir = 8 }, /area/maintenance/port) +"kLU" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "lak" = ( /turf/open/floor/plasteel/white/side{ dir = 10 @@ -100841,6 +100472,20 @@ dir = 6 }, /area/science/circuit) +"lTo" = ( +/obj/docking_port/stationary{ + area_type = /area/construction/mining/aux_base; + dheight = 4; + dir = 4; + dwidth = 4; + height = 9; + id = "aux_base_zone"; + name = "aux base zone"; + roundstart_template = /datum/map_template/shuttle/aux_base/default; + width = 9 + }, +/turf/open/floor/plating, +/area/construction/mining/aux_base) "lXM" = ( /obj/structure/target_stake, /turf/open/floor/plasteel/white/side{ @@ -100858,10 +100503,25 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/circuit/green, /area/science/research/abandoned) +"nES" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) "nSh" = ( /obj/machinery/atmospherics/pipe/simple/general/hidden, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"obr" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/plating/airless, +/area/engine/engineering) "oZC" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command{ @@ -100929,11 +100589,24 @@ dir = 9 }, /area/science/circuit) +"riX" = ( +/turf/open/floor/plating/airless, +/area/space) "rCv" = ( /turf/open/floor/plasteel/white/side{ dir = 6 }, /area/science/circuit) +"rUL" = ( +/obj/machinery/mineral/ore_redemption, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/box, +/turf/open/floor/plasteel/neutral, +/area/quartermaster/miningoffice) +"rYN" = ( +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/space) "saw" = ( /turf/closed/wall, /area/science/circuit) @@ -100943,6 +100616,13 @@ }, /turf/open/floor/plasteel, /area/science/circuit) +"tnQ" = ( +/obj/structure/particle_accelerator/particle_emitter/center{ + icon_state = "emitter_center"; + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) "tCh" = ( /turf/closed/wall, /area/science/misc_lab) @@ -100975,8 +100655,15 @@ /obj/structure/reagent_dispensers/water_cooler, /turf/open/floor/plasteel/whitepurple/side, /area/science/misc_lab) +"uHq" = ( +/obj/structure/lattice, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/space, +/area/engine/engineering) "uYS" = ( -/obj/machinery/door/airlock/atmos/glass{ +/obj/machinery/door/airlock/atmos/glass/critical{ heat_proof = 1; name = "Supermatter Chamber"; req_one_access_txt = "24;10" @@ -100986,6 +100673,12 @@ }, /turf/open/floor/engine, /area/engine/supermatter) +"vjF" = ( +/obj/machinery/vending/kink, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/crew_quarters/locker) "vqd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/bodycontainer/morgue{ @@ -120747,17 +120440,17 @@ aaa car car car -aad +fRV aaa ciY aaa aaa aaa -aad +uHq aaa aaa aaa -aad +uHq aaa aaa aaa @@ -121006,19 +120699,19 @@ cbN cdC cdC aaa -aaz -aaM -aaM -abM -aaM -aaM -abM -aaM -aaM -abM -aaM -aaM -acn +ciZ +cku +cku +cnA +cku +cku +cnA +cku +cku +cnA +cku +cku +cAH aaa cdC cdC @@ -121262,21 +120955,21 @@ car cbN cdC cfA -aad -aaH -aba -abJ -abN -abJ -abJ -abV -abJ -abJ -abN -abJ -acj -aaH -aad +fRV +cja +ckv +clR +cnB +clR +clR +crI +clR +clR +cnB +clR +czo +cja +fRV cDT cdC cHb @@ -121517,25 +121210,25 @@ bVZ aad car cbO -aav +cdD cfA aaa -aaH -abl -abK -aaT -aaT -abK -aaU +cja +ckw +clS +hQY +hQY +clS +nES aaa -aaT -aaT -abK -ack -aaH +hQY +hQY +clS +jRi +cja aaa cDT -abI +cFH cHc car ceb @@ -121776,21 +121469,21 @@ car cbP cdC cfA -aad -aaJ -aby -aaT -aaT -aaT -aaU -aad +fRV +cjb +ckx +hQY +hQY +hQY +nES +fRV aaa -aaT -aaT -aaT -acl -acw -aad +hQY +hQY +hQY +czp +cAI +fRV cDT cdC cFJ @@ -122034,19 +121727,19 @@ cbQ cdE cfA aaa -aaH -abl -aaT -aaT +cja +ckw +hQY +hQY aaa -aaL -aad -aaL aaa -aaT -aaT -ack -aaH +fRV +aaa +aaa +hQY +hQY +jRi +cja aaa cDT cFI @@ -122290,21 +121983,21 @@ car car cbP cfA -abj -aaJ -aby +rYN +cjb +ckx aaa aaa -aaL -abO -abJ -acg -aaL -aaU -abK -acl -acw -abj +aaa +cqo +clR +ctm +aaa +nES +clS +czp +cAI +rYN cDT cFJ car @@ -122545,25 +122238,25 @@ bWd bYp car car -cbP +kLU cdC -aad -aaH -abl -aaU -aad -aad -abl -abW -ach -aad -aad -aaU -ack -aaH -aad +fRV +cja +ckw +nES +fRV +fRV +ckw +crJ +ctn +fRV +fRV +nES +jRi +cja +fRV cdC -cFJ +obr car car cJL @@ -122804,21 +122497,21 @@ car car cbP cfA -abj -aaJ -aby -abK -aaU -aaL -abU -abX -aci -aaL +rYN +cjb +ckx +clS +nES +aaa +cqp +crK +cto aaa aaa -acl -acw -abj +aaa +czp +cAI +rYN cDT cFJ car @@ -123062,19 +122755,19 @@ cbR cdF cfA aaa -aaH -abl -aaT -aaT +cja +ckw +hQY +hQY aaa -aaL -aad -aaL aaa -aaT -aaT -ack -aaH +fRV +aaa +aaa +hQY +hQY +jRi +cja aaa cDT cFK @@ -123318,21 +123011,21 @@ car cbP cdC cfA -aad -aaJ -aby -aaT -aaT +fRV +cjb +ckx +hQY +hQY aaa aaa -aad -aaU +fRV +nES aaa -aaT -aaT -acl -acw -aad +hQY +hQY +czp +cAI +fRV cDU cdC cFJ @@ -123573,25 +123266,25 @@ bWg bYs car cbS -aav +cdD cfA aaa -aaH -abl -abK -aaT +cja +ckw +clS +hQY aaa aaa -aaU -abK -aaT -aaT -abK -ack -aaH +nES +clS +hQY +hQY +clS +jRi +cja aaa cDT -abI +cFH cHf car cJO @@ -123832,21 +123525,21 @@ car cbP cdC cfA -aad -aaK -abz -abL -abL -abL -abL -abY -abL -abL -abL -abL -acm -acx -aad +fRV +cjc +ckz +clU +clU +clU +clU +crL +clU +clU +clU +clU +czr +cAJ +fRV cDT cdC cFJ @@ -124088,11 +123781,11 @@ bYu car cbT cdG -aaw -aax -aaF +cfB +riX +riX aaa -aad +fRV cjd cjd cjd @@ -124100,11 +123793,11 @@ crM cjd cjd cjd -aad +fRV aaa -aaF -aax -abB +riX +riX +cDV cFL cHg car @@ -124603,20 +124296,20 @@ car cbU cdI cfC -aay -aaG -aaG -aaG +chu +cje +cje +cje cjd cpa -aaX -abb -abm +cqr +tnQ +ctp cuQ cjd -aaG -aaG -abA +cje +cje +cAK cCr cfC cFN @@ -124862,12 +124555,12 @@ cdJ car chv chv -aaI +ckA chv cnC cpa cqs -abc +iuy ctq cuR cnC @@ -125123,8 +124816,8 @@ chw clW cnD cpb -aaY -abd +cqt +crO ctr cuS cnD @@ -125377,15 +125070,15 @@ cfE chx cjh cjn -aaN -aaV -aaW +clX +cnE +cpc cqu -abk +fNi cts -abo -aaV -aaN +cuT +cnE +clX cjn cAL cCs @@ -137357,10 +137050,10 @@ aaa aaa aaa aaa -aaA -aaA -aaA -abr +aaa +aaa +aaa +aaa abE aaO aca @@ -137614,9 +137307,9 @@ aaa aaa aaa aas -aaB -aaQ -abg +aaa +aaa +aaa abs abF abP @@ -137871,10 +137564,10 @@ aaa aaa aaa aaa -aaA -aaA -aaA -abr +aaa +aaa +aaa +aaa abG aaO acc @@ -141983,10 +141676,10 @@ aaa aaa aaa aaa -aaC -aaC -aaC -abt +aaa +aaa +aaa +aaa abE aaO aca @@ -142240,10 +141933,10 @@ aaa aaa aaa aat -aaD -aaR -abh -abu +aaa +aaa +aaa +abs abF abQ acb @@ -142497,10 +142190,10 @@ aaa aaa aaa aaa -aaC -aaC -aaC -abt +aaa +aaa +aaa +aaa abG aaO acc @@ -144053,14 +143746,14 @@ ace aad abi aeF -afg -afg -afg -agq -afg -afg -afg -ahG +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF abi ail aiG @@ -144309,15 +144002,15 @@ adi ace aaa abi -aeG -afh -afi -afj -afj -afj -afj -ahw -ahH +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF abi aim aiH @@ -144366,7 +144059,7 @@ bgK bii bjU blR -baU +rUL boO bqZ bsT @@ -144566,15 +144259,15 @@ adj ace aad abi -aeG -afi -afj -afj -afj -afj -afj -afj -ahH +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF abi ain aiI @@ -144823,15 +144516,15 @@ acf acf aad abi -aeG -afj -afj -afj -agr -afj -afi -afj -ahH +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF abi aio aiI @@ -144878,7 +144571,7 @@ baU bfw bgG bik -ehK +baU baQ baQ boW @@ -145080,15 +144773,15 @@ acf aad aad abi -aeG -afj -afj -afZ -ags -afj -afj -afj -ahH +aeF +aeF +aeF +aeF +lTo +aeF +aeF +aeF +aeF abi aip aiH @@ -145337,15 +145030,15 @@ acf aad aad abi -aeG -afj -afi -afj -agt -afj -afj -afj -ahH +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF abi aiq aiI @@ -145594,15 +145287,15 @@ aad aad aaa abi -aeG -afi -afj -afj -afj -afi -afj -afj -ahH +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF abi air aiI @@ -145851,15 +145544,15 @@ aad aac aad abi -aeG -aeH -afj -afi -afj -afj -afj -ahx -ahH +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF abi ais aiI @@ -146108,15 +145801,15 @@ aaa aac aad abi -aeH -afk -afk -afk -afk -afk -afk -afk -ahx +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF abi aig aiJ @@ -146654,11 +146347,11 @@ axm ayD ayD ayD -ayD +hdH azD aEg azD -aGC +kam aHV aHV aHV @@ -149538,7 +149231,7 @@ clt cnc coE cqd -aaZ +vjF csT cuy cvU @@ -150825,7 +150518,7 @@ coI cqd crv csY -abn +cuB cvZ cxq cyV @@ -151084,8 +150777,8 @@ cqd csZ cuC cwa -abw -abx +cxr +cyW cqd cCb cDB @@ -154628,7 +154321,7 @@ aFn aGK aIg aJB -aaq +aKY aMj aNF aPn @@ -154886,7 +154579,7 @@ aGL aIh aJC aKV -aar +aMk aNG aPo aRf @@ -159263,9 +158956,9 @@ aaa ajr aad aKV -aZN +aaa bbv -aZN +aaa aKV aad aad @@ -159520,9 +159213,9 @@ aaa aaa aad aKV -aZO -bbw -aZO +aaa +aaa +aaa aKV aaa aaa @@ -159777,9 +159470,9 @@ aaa aaa aaa aXU -aZO -bbx -aZO +aaa +aaa +aaa aXU aaa aaa @@ -160034,9 +159727,9 @@ aaa aaa aaa aaa -aZO -bby -aZO +aaa +aaa +aaa aaa aaa aaa diff --git a/_maps/cit_map_files/MetaStation/MetaStation.dmm b/_maps/cit_map_files/MetaStation/MetaStation.dmm index 77546c544e..1a439712be 100644 --- a/_maps/cit_map_files/MetaStation/MetaStation.dmm +++ b/_maps/cit_map_files/MetaStation/MetaStation.dmm @@ -2,35 +2,10 @@ "aaa" = ( /turf/open/space/basic, /area/space) -"aab" = ( -/obj/machinery/newscaster{ - pixel_y = 32 - }, -/obj/machinery/vending/sustenance{ - desc = "A vending machine normally reserved for work camps."; - name = "\improper sustenance vendor"; - product_slogans = "Enjoy your meal.;Enough calories to support any worker." - }, -/turf/open/floor/plasteel, -/area/security/prison) "aac" = ( /obj/effect/landmark/carpspawn, /turf/open/space, /area/space) -"aad" = ( -/obj/machinery/computer/cryopod{ - pixel_x = 28; - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) -"aae" = ( -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/obj/machinery/cryopod, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) "aaf" = ( /obj/structure/lattice, /turf/open/space, @@ -277,10 +252,6 @@ }, /turf/open/floor/plating, /area/security/prison) -"aaM" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_2) "aaN" = ( /obj/structure/cable{ icon_state = "0-2" @@ -323,45 +294,6 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) -"aaU" = ( -/obj/machinery/door/window/southright{ - dir = 4; - name = "Engineering Deliveries"; - req_access_txt = "10"; - req_one_access_txt = "0" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/yellow/side{ - dir = 9 - }, -/area/engine/engineering) -"aaV" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_2) -"aaW" = ( -/obj/structure/sign/warning/securearea{ - pixel_y = 32 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 - }, -/area/engine/engineering) -"aaX" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 - }, -/area/engine/engineering) "aaY" = ( /obj/structure/cable{ icon_state = "1-2" @@ -396,24 +328,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/security/prison) -"abd" = ( -/obj/machinery/light_switch{ - pixel_x = 23 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/machinery/shower{ - dir = 8; - name = "emergency shower" - }, -/obj/structure/sign/warning/securearea{ - pixel_y = 32 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 5 - }, -/area/engine/engineering) "abe" = ( /turf/closed/wall, /area/security/prison) @@ -496,11 +410,11 @@ /turf/open/floor/plasteel/floorgrime, /area/security/prison) "abn" = ( -/obj/machinery/light/small{ - dir = 1 +/obj/machinery/newscaster{ + pixel_y = 32 }, -/turf/open/floor/plating, -/area/engine/engineering) +/turf/open/floor/plasteel, +/area/security/prison) "abo" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -544,21 +458,16 @@ dir = 8 }, /area/security/prison) -"abt" = ( -/obj/structure/shuttle/engine/propulsion/burst, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_2) "abu" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" +/obj/docking_port/stationary{ + dir = 1; + dwidth = 1; + height = 4; + roundstart_template = /datum/map_template/shuttle/escape_pod/default; + width = 3 }, -/obj/docking_port/mobile/pod{ - id = "pod2"; - name = "escape pod 2"; - port_direction = 2 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_2) +/turf/open/space/basic, +/area/space) "abv" = ( /obj/structure/cable{ icon_state = "0-2" @@ -828,22 +737,14 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/security/prison) -"acd" = ( -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable/white{ - icon_state = "2-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "ace" = ( -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable/white{ - icon_state = "4-8" +/obj/machinery/vending/sustenance{ + desc = "A vending machine normally reserved for work camps."; + name = "\improper sustenance vendor"; + product_slogans = "Enjoy your meal.;Enough calories to support any worker." }, -/turf/open/floor/plating/airless, -/area/engine/engineering) +/turf/open/floor/plasteel/floorgrime, +/area/security/prison) "acf" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, @@ -997,16 +898,17 @@ /turf/open/floor/plasteel/floorgrime, /area/security/prison) "acx" = ( -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable/white{ - icon_state = "2-8" +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 }, -/obj/structure/cable/white{ - icon_state = "4-8" +/obj/machinery/cryopod{ + tag = "icon-cryopod-open (WEST)"; + icon_state = "cryopod-open"; + dir = 8 }, -/turf/open/floor/plating/airless, -/area/engine/engineering) +/turf/open/floor/plasteel/floorgrime, +/area/security/prison) "acy" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod Two" @@ -1159,6 +1061,9 @@ pixel_y = 7 }, /obj/item/pen, +/obj/machinery/computer/cryopod{ + pixel_x = 28 + }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) "acN" = ( @@ -1451,15 +1356,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/fitness/recreation) -"adk" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_3) -"adl" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_3) "adm" = ( /obj/structure/table, /obj/item/device/flashlight/lamp, @@ -1623,18 +1519,15 @@ /turf/open/floor/plating, /area/crew_quarters/fitness/recreation) "adF" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ +/obj/docking_port/stationary{ dir = 4; - id = "pod3"; - name = "escape pod 3"; - port_direction = 2; - preferred_direction = 4 + dwidth = 1; + height = 4; + roundstart_template = /datum/map_template/shuttle/escape_pod/default; + width = 3 }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_3) +/turf/open/space/basic, +/area/space) "adG" = ( /obj/docking_port/stationary/random{ id = "pod_lavaland2"; @@ -1642,24 +1535,6 @@ }, /turf/open/space, /area/space/nearstation) -"adH" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/status_display{ - pixel_x = 32 - }, -/obj/machinery/computer/shuttle/pod{ - pixel_x = -32; - possible_destinations = "pod_lavaland2"; - shuttleId = "pod2" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_2) -"adI" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_3) "adJ" = ( /obj/item/device/radio/intercom{ freerange = 0; @@ -2083,14 +1958,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/fitness/recreation) -"aeD" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/engine/engineering) "aeE" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -2816,16 +2683,6 @@ dir = 1 }, /area/security/prison) -"afQ" = ( -/obj/structure/cable/white{ - icon_state = "2-8" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) "afR" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -3320,8 +3177,6 @@ /obj/item/storage/fancy/donut_box, /obj/item/gun/energy/e_gun/dragnet, /obj/item/gun/energy/e_gun/dragnet, -/obj/item/gun/energy/pumpaction/blaster, -/obj/item/gun/energy/pumpaction/blaster, /turf/open/floor/plasteel/vault{ dir = 1 }, @@ -3791,14 +3646,6 @@ icon_state = "platingdmg1" }, /area/maintenance/fore) -"ahT" = ( -/obj/structure/cable/white{ - icon_state = "2-4" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/plating/airless, -/area/engine/engineering) "ahU" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/structure/table, @@ -3929,7 +3776,7 @@ /area/maintenance/disposal) "aih" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = -1; + dir = 8; id = "garbage"; name = "disposal conveyor" }, @@ -4319,9 +4166,8 @@ /area/engine/gravity_generator) "ajc" = ( /obj/machinery/conveyor{ - dir = 2; - id = "garbage"; - layer = 2.7 + dir = 1; + id = "garbage" }, /obj/machinery/door/poddoor/preopen{ id = "Disposal Exit"; @@ -4393,14 +4239,6 @@ /obj/item/restraints/handcuffs/cable/pink, /turf/open/floor/plating, /area/maintenance/port/fore) -"ajk" = ( -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable/white{ - icon_state = "2-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "ajl" = ( /obj/item/soap/deluxe, /obj/item/storage/secure/safe{ @@ -4489,9 +4327,6 @@ dir = 4 }, /area/security/warden) -"aju" = ( -/turf/open/space/basic, -/area/space/nearstation) "ajv" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -4764,7 +4599,7 @@ /area/maintenance/solars/starboard/fore) "akf" = ( /obj/machinery/conveyor{ - dir = 2; + dir = 1; id = "garbage" }, /turf/open/floor/plating, @@ -5422,20 +5257,6 @@ "alq" = ( /turf/closed/wall, /area/maintenance/starboard) -"alr" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/effect/turf_decal/delivery, -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 2 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/engineering) "als" = ( /obj/machinery/light{ dir = 8 @@ -5471,7 +5292,7 @@ /area/maintenance/solars/starboard/fore) "alx" = ( /obj/machinery/conveyor{ - dir = 2; + dir = 1; id = "garbage" }, /obj/structure/sign/warning/vacuum{ @@ -5506,7 +5327,7 @@ /area/maintenance/disposal) "alz" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "garbage" }, /obj/machinery/door/window/eastright{ @@ -6173,23 +5994,18 @@ }, /obj/machinery/conveyor{ dir = 9; - id = "garbage"; - verted = -1 + id = "garbage" }, /turf/open/floor/plating, /area/maintenance/disposal) "amP" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "garbage" }, /turf/open/floor/plating, /area/maintenance/disposal) "amQ" = ( -/obj/machinery/conveyor{ - dir = 6; - id = "garbage" - }, /obj/machinery/door/window/eastright{ base_state = "left"; dir = 4; @@ -6197,6 +6013,10 @@ name = "Danger: Conveyor Access"; req_access_txt = "12" }, +/obj/machinery/conveyor/inverted{ + dir = 6; + id = "garbage" + }, /turf/open/floor/plating, /area/maintenance/disposal) "amR" = ( @@ -6233,13 +6053,6 @@ icon_state = "platingdmg2" }, /area/maintenance/port) -"amV" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/engine/engineering) "amW" = ( /obj/structure/table/reinforced, /obj/item/folder, @@ -6483,19 +6296,6 @@ /obj/item/paper, /turf/open/floor/plasteel, /area/security/main) -"anz" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/sorting/mail{ - sortType = 4 - }, -/obj/effect/landmark/start/station_engineer, -/obj/structure/cable/white{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "anA" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment, @@ -6639,10 +6439,6 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/machinery/conveyor{ - dir = 8; - id = "garbage" - }, /obj/structure/disposaloutlet{ dir = 4 }, @@ -6653,7 +6449,7 @@ /area/maintenance/disposal) "anV" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/structure/disposalpipe/segment{ @@ -6663,7 +6459,7 @@ /area/maintenance/disposal) "anW" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/machinery/atmospherics/components/unary/vent_pump/on, @@ -6671,7 +6467,7 @@ /area/maintenance/disposal) "anX" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/machinery/recycler, @@ -6683,7 +6479,7 @@ name = "Danger: Conveyor Access"; req_access_txt = "12" }, -/obj/machinery/conveyor{ +/obj/machinery/conveyor/inverted{ dir = 10; id = "garbage" }, @@ -6928,15 +6724,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/security/warden) -"aov" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "aow" = ( /obj/machinery/door/firedoor, /obj/structure/cable/yellow{ @@ -7392,16 +7179,16 @@ /obj/structure/plasticflaps{ opacity = 0 }, -/obj/machinery/conveyor{ - dir = 2; - id = "garbage" - }, /obj/machinery/door/window/northright{ dir = 2; name = "delivery door"; req_access_txt = "31" }, /obj/structure/disposalpipe/segment, +/obj/machinery/conveyor{ + dir = 1; + id = "garbage" + }, /turf/open/floor/plating, /area/maintenance/disposal) "aps" = ( @@ -7620,15 +7407,6 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) -"apP" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "apQ" = ( /obj/structure/reagent_dispensers/peppertank{ pixel_x = 32 @@ -7681,26 +7459,6 @@ /obj/item/device/assembly/flash/handheld, /turf/open/floor/plasteel, /area/security/main) -"apX" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/door/airlock/external{ - name = "External Containment Access"; - req_access_txt = "10; 13" - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) "apY" = ( /obj/structure/table, /obj/item/folder/red, @@ -7744,14 +7502,6 @@ /obj/item/clothing/head/soft/red, /turf/open/floor/plasteel/vault, /area/crew_quarters/fitness/recreation) -"aqe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plating, -/area/engine/engineering) "aqf" = ( /obj/structure/closet/lasertag/blue, /turf/open/floor/plasteel/vault, @@ -8210,25 +7960,6 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) -"arh" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/external{ - name = "External Containment Access"; - req_access_txt = "10; 13" - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) "ari" = ( /obj/machinery/holopad, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -8417,12 +8148,6 @@ dir = 4 }, /area/crew_quarters/dorms) -"arF" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "arG" = ( /obj/structure/closet, /obj/item/storage/box/lights/mixed, @@ -9474,12 +9199,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"atC" = ( -/obj/structure/cable/white{ - icon_state = "1-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "atD" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -9502,9 +9221,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"atF" = ( -/turf/open/floor/plating/airless, -/area/engine/engineering) "atG" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -9548,17 +9264,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"atJ" = ( -/obj/structure/cable/white, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/power/emitter{ - anchored = 1; - state = 2 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "atK" = ( /obj/machinery/computer/gulag_teleporter_computer{ dir = 1 @@ -10024,44 +9729,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"auQ" = ( -/obj/structure/cable/white{ - icon_state = "1-4" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"auR" = ( -/obj/structure/cable/white{ - icon_state = "1-8" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"auS" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/yellow/side{ - dir = 9 - }, -/area/engine/engineering) -"auT" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/item/clothing/suit/hooded/wintercoat/engineering, -/obj/effect/turf_decal/delivery, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 - }, -/area/engine/engineering) "auU" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -10634,38 +10301,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"avU" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 - }, -/area/engine/engineering) -"avV" = ( -/obj/item/device/radio/intercom{ - freerange = 0; - frequency = 1459; - name = "Station Intercom (General)"; - pixel_y = 21 - }, -/obj/machinery/camera{ - c_tag = "Engineering - Fore"; - dir = 2 - }, -/obj/structure/closet/secure_closet/engineering_personal, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 - }, -/area/engine/engineering) -"avW" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/engine/engineering) -"avX" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "avY" = ( /obj/machinery/door/airlock/external{ name = "Labor Camp Shuttle Airlock"; @@ -11067,23 +10702,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/fore) -"awN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"awO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "awP" = ( /obj/item/clothing/gloves/color/rainbow, /obj/item/clothing/shoes/sneakers/rainbow, @@ -11140,22 +10758,6 @@ "awW" = ( /turf/closed/wall/r_wall, /area/security/nuke_storage) -"awX" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"awY" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -22 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/engineering) "awZ" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 @@ -11489,12 +11091,6 @@ dir = 1 }, /area/crew_quarters/dorms) -"axH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "axI" = ( /obj/machinery/door/airlock{ id_tag = "Cabin5"; @@ -11633,75 +11229,69 @@ /turf/open/floor/plasteel, /area/engine/engineering) "axU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/machinery/door/window/southright{ + dir = 4; + name = "Engineering Deliveries"; + req_access_txt = "10"; + req_one_access_txt = "0" }, -/obj/structure/cable/yellow{ - icon_state = "2-4" +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/yellow/side{ + dir = 9 }, -/turf/open/floor/plasteel, /area/engine/engineering) "axV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/structure/sign/warning/securearea{ + pixel_y = 32 }, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 }, -/turf/open/floor/plasteel, /area/engine/engineering) "axW" = ( -/obj/machinery/light{ - dir = 4 +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 }, -/turf/open/floor/plasteel, /area/engine/engineering) "axX" = ( -/obj/structure/lattice, -/turf/open/space, -/area/space) +/obj/machinery/light_switch{ + pixel_x = 23 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/shower{ + dir = 8; + name = "emergency shower" + }, +/obj/structure/sign/warning/securearea{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 5 + }, +/area/engine/engineering) "axY" = ( /turf/closed/wall/r_wall, /area/engine/engineering) -"axZ" = ( -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/space) -"aya" = ( -/turf/open/floor/plating/airless, -/area/space) -"ayb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/engineering) "ayc" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable/white{ + icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"ayd" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aye" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, +/turf/open/floor/plating/airless, /area/engine/engineering) "ayf" = ( /obj/structure/closet/crate, @@ -11711,15 +11301,6 @@ /obj/item/stack/rods, /turf/open/floor/plating/airless, /area/space/nearstation) -"ayg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"ayh" = ( -/turf/open/floor/plasteel, -/area/engine/engineering) "ayi" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -11807,28 +11388,6 @@ dir = 8 }, /area/security/nuke_storage) -"ayt" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24; - pixel_y = -26 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"ayu" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, -/area/space) -"ayv" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/space, -/area/space) "ayw" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/yellow{ @@ -12063,83 +11622,69 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "ayS" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/space, -/area/space) -"ayT" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/space, -/area/space) -"ayU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/effect/turf_decal/delivery, +/obj/structure/window/reinforced{ + dir = 1; + pixel_y = 2 }, +/turf/open/floor/plasteel/yellow/side{ + dir = 8 + }, +/area/engine/engineering) +"ayT" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/yellow/side{ dir = 8 }, /area/engine/engineering) "ayV" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 + dir = 8 }, -/obj/structure/cable/yellow{ - icon_state = "2-8" +/obj/structure/cable/white{ + icon_state = "4-8" }, /turf/open/floor/plasteel, /area/engine/engineering) "ayW" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Fore Port"; - dir = 4; - network = list("singularity") +/obj/structure/cable/white{ + icon_state = "4-8" }, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, /area/engine/engineering) "ayX" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/space, -/area/space) -"ayY" = ( -/obj/effect/turf_decal/stripes/corner{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/turf/open/floor/plating/airless, -/area/space) -"ayZ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/machinery/door/airlock/external{ + name = "External Containment Access"; + req_access_txt = "10; 13" }, -/turf/open/floor/plating/airless, -/area/space) +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) "aza" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/structure/cable/white{ + icon_state = "1-8" }, -/obj/machinery/power/tesla_coil, /turf/open/floor/plating/airless, -/area/space) +/area/engine/engineering) "azb" = ( /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, /obj/structure/cable/yellow{ @@ -12149,21 +11694,18 @@ dir = 4 }, /area/security/brig) -"azc" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Fore Starboard"; - dir = 8; - network = list("singularity") +"azd" = ( +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/white{ + icon_state = "1-8" + }, +/obj/structure/cable/white{ + icon_state = "4-8" }, /turf/open/floor/plating/airless, -/area/space) -"azd" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, /area/engine/engineering) "aze" = ( /obj/item/twohanded/required/kirbyplants{ @@ -12172,31 +11714,10 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/wood, /area/library) -"azf" = ( -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) "azg" = ( /obj/item/stack/cable_coil, /turf/open/floor/plating/airless, /area/space/nearstation) -"azh" = ( -/obj/structure/rack, -/obj/machinery/button/door{ - id = "engpa"; - name = "Engineering Chamber Shutters Control"; - pixel_y = -26; - req_access_txt = "11" - }, -/obj/item/clothing/gloves/color/black, -/obj/item/wrench, -/obj/item/clothing/glasses/meson/engine, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"azi" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) "azj" = ( /obj/item/stack/ore/iron, /obj/effect/turf_decal/stripes/line{ @@ -12392,16 +11913,6 @@ dir = 1 }, /area/security/nuke_storage) -"azA" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"azB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/space) "azC" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -12819,103 +12330,68 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "aAo" = ( -/obj/machinery/field/generator{ - anchored = 1; - state = 2 - }, -/turf/open/floor/plating/airless, -/area/space) -"aAp" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -27 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/engineering) -"aAq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aAr" = ( -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/suit/hazardvest, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/emergency_oxygen/engi, +/obj/structure/closet/secure_closet/engineering_personal, /obj/effect/turf_decal/delivery, -/obj/structure/table, /turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/engine/engineering) -"aAs" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engpa"; - name = "Engineering Chamber Shutters" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aAt" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"aAu" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating/airless, -/area/space) -"aAv" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/engineering) -"aAw" = ( -/obj/structure/table, -/obj/effect/turf_decal/delivery, -/obj/item/clothing/glasses/meson/engine, -/obj/item/clothing/glasses/meson/engine, -/obj/item/clothing/glasses/meson/engine, -/obj/machinery/light{ - dir = 4 - }, -/obj/item/pipe_dispenser, -/obj/item/pipe_dispenser, -/obj/item/pipe_dispenser, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/engine/engineering) -"aAx" = ( -/obj/machinery/button/door{ - id = "engpa"; - name = "Engineering Chamber Shutters Control"; - pixel_y = 26; - req_access_txt = "11" - }, -/obj/effect/turf_decal/stripes/line{ dir = 9 }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plating, /area/engine/engineering) -"aAy" = ( -/obj/effect/turf_decal/stripes/line{ +"aAp" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/obj/effect/turf_decal/delivery, +/obj/machinery/light{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/engine/engineering) +"aAr" = ( +/obj/item/device/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/machinery/camera{ + c_tag = "Engineering - Fore"; + dir = 2 + }, +/obj/structure/closet/secure_closet/engineering_personal, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/engine/engineering) +"aAt" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aAu" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/sorting/mail{ + sortType = 4 + }, +/obj/effect/landmark/start/station_engineer, +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aAv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aAx" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, /area/engine/engineering) "aAz" = ( /obj/structure/table/wood, @@ -13132,14 +12608,6 @@ dir = 1 }, /area/security/nuke_storage) -"aAU" = ( -/obj/structure/table, -/obj/item/airlock_painter, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/yellow/side{ - dir = 9 - }, -/area/engine/engineering) "aAV" = ( /obj/docking_port/stationary{ dir = 8; @@ -13532,19 +13000,19 @@ /turf/closed/wall, /area/engine/engineering) "aBJ" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, /turf/open/floor/plasteel/yellow/side{ - dir = 4 + dir = 8 }, /area/engine/engineering) "aBK" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engpa"; - name = "Engineering Chamber Shutters" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plasteel, @@ -13587,30 +13055,11 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aBO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"aBP" = ( -/obj/structure/particle_accelerator/particle_emitter/right{ - icon_state = "emitter_right"; +/obj/machinery/light{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) -"aBQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating/airless, -/area/space) -"aBR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating/airless, -/area/space) "aBS" = ( /obj/item/stack/ore/silver, /obj/item/stack/ore/silver, @@ -13759,11 +13208,6 @@ dir = 1 }, /area/security/nuke_storage) -"aCi" = ( -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/engineering) "aCj" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security/glass{ @@ -14055,22 +13499,6 @@ /obj/item/clothing/under/suit_jacket/navy, /turf/open/floor/carpet, /area/crew_quarters/dorms) -"aCL" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the Engine."; - dir = 8; - layer = 4; - name = "Engine Monitor"; - network = list("singularity"); - pixel_x = 30 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/engine/engineering) "aCM" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -14133,55 +13561,51 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aCU" = ( -/obj/structure/particle_accelerator/end_cap{ - icon_state = "end_cap"; +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, /area/engine/engineering) "aCV" = ( -/obj/structure/particle_accelerator/fuel_chamber{ - icon_state = "fuel_chamber"; +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) "aCW" = ( -/obj/structure/particle_accelerator/power_box{ - icon_state = "power_box"; - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) "aCX" = ( -/obj/structure/particle_accelerator/particle_emitter/center{ - icon_state = "emitter_center"; - dir = 4 - }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) "aCY" = ( -/obj/structure/cable{ - icon_state = "2-4" +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24; + pixel_y = -26 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) "aCZ" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, +/obj/machinery/power/tesla_coil, /turf/open/floor/plating/airless, /area/space) "aDa" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/structure/ore_box, /turf/open/floor/plating, -/area/shuttle/auxillary_base) +/area/construction/mining/aux_base) "aDb" = ( /turf/closed/wall, /area/construction/mining/aux_base) @@ -14191,30 +13615,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/fore) -"aDd" = ( -/obj/machinery/the_singularitygen/tesla, -/turf/open/floor/plating/airless, -/area/space) -"aDe" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space) -"aDf" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aDg" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/engine/engineering) "aDh" = ( /obj/machinery/firealarm{ dir = 8; @@ -14320,22 +13720,6 @@ /obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/security/nuke_storage) -"aDt" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engpa"; - name = "Engineering Chamber Shutters" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "aDu" = ( /turf/closed/wall, /area/hallway/primary/fore) @@ -14805,13 +14189,16 @@ }, /area/engine/engineering) "aEn" = ( -/obj/structure/cable{ - icon_state = "2-8" +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/obj/effect/turf_decal/stripes/line{ +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/yellow/side{ dir = 8 }, -/turf/open/floor/plating, /area/engine/engineering) "aEo" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -14824,29 +14211,26 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aEp" = ( -/obj/machinery/particle_accelerator/control_box, -/obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"aEq" = ( -/obj/item/wrench, -/turf/open/floor/plating, -/area/engine/engineering) -"aEr" = ( -/obj/structure/particle_accelerator/particle_emitter/left{ - icon_state = "emitter_left"; - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"aEs" = ( -/obj/structure/cable{ +/obj/structure/cable/yellow{ icon_state = "1-2" }, -/turf/open/floor/plating, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aEr" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Containment - Fore Port"; + dir = 4; + network = list("singularity") + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless, /area/engine/engineering) "aEt" = ( /obj/structure/table, @@ -14862,12 +14246,6 @@ }, /turf/open/floor/plasteel/floorgrime, /area/quartermaster/warehouse) -"aEu" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating/airless, -/area/space) "aEv" = ( /obj/machinery/computer/security/mining{ dir = 4; @@ -14932,12 +14310,6 @@ }, /turf/open/floor/plasteel/floorgrime, /area/quartermaster/warehouse) -"aEC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plating/airless, -/area/space) "aED" = ( /obj/structure/closet/crate/internals, /obj/structure/cable/yellow{ @@ -15389,11 +14761,13 @@ /turf/open/floor/plating, /area/engine/engineering) "aFv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 2 }, -/turf/open/floor/plating/airless, -/area/space) +/turf/open/floor/plasteel/yellow/side{ + dir = 8 + }, +/area/engine/engineering) "aFw" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 @@ -15410,73 +14784,26 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"aFy" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high{ - charge = 100; - maxcharge = 15000 - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/yellow/side{ - dir = 10 - }, -/area/engine/engineering) -"aFz" = ( -/obj/structure/closet/firecloset, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/engine/engineering) "aFA" = ( +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"aFB" = ( +/obj/structure/rack, /obj/machinery/button/door{ id = "engpa"; name = "Engineering Chamber Shutters Control"; pixel_y = -26; req_access_txt = "11" }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"aFB" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, +/obj/item/clothing/gloves/color/black, +/obj/item/wrench, +/obj/item/clothing/glasses/meson/engine, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/yellow/side, /area/engine/engineering) "aFC" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Particle Accelerator"; - dir = 1; - network = list("singularity") - }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"aFD" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plasteel/yellow/side, /area/engine/engineering) "aFE" = ( /obj/structure/table/wood, @@ -16217,14 +15544,8 @@ }, /area/engine/engineering) "aGV" = ( -/obj/machinery/power/apc/highcap/ten_k{ - dir = 8; - name = "Engine Room APC"; - areastring = "/area/engine/engineering"; - pixel_x = -26 - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 }, /turf/open/floor/plasteel/yellow/side{ dir = 8 @@ -16236,56 +15557,18 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aGX" = ( -/obj/structure/table, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/obj/item/storage/belt/utility, -/obj/item/storage/belt/utility, -/obj/item/storage/toolbox/electrical{ - pixel_x = 1; - pixel_y = 10 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/engine/engineering) -"aGY" = ( -/obj/machinery/vending/tool, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 }, +/turf/open/floor/plasteel, /area/engine/engineering) "aGZ" = ( -/turf/open/floor/plasteel/yellow/side{ - dir = 1 - }, -/area/engine/engineering) -"aHa" = ( -/obj/structure/rack, -/obj/machinery/button/door{ +/obj/machinery/door/poddoor/shutters/preopen{ id = "engpa"; - name = "Engineering Chamber Shutters Control"; - pixel_y = 26; - req_access_txt = "11" - }, -/obj/item/storage/belt/utility, -/obj/item/weldingtool, -/obj/item/clothing/head/welding, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 + name = "Engineering Chamber Shutters" }, +/turf/open/floor/plasteel, /area/engine/engineering) -"aHb" = ( -/obj/machinery/camera{ - c_tag = "Auxillary Mining Base"; - dir = 1 - }, -/obj/structure/mining_shuttle_beacon, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "aHc" = ( /obj/effect/spawner/structure/window, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -16620,12 +15903,6 @@ dir = 2 }, /area/crew_quarters/dorms) -"aHP" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 - }, -/area/engine/engineering) "aHQ" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -16695,60 +15972,24 @@ }, /area/maintenance/starboard/fore) "aHX" = ( -/obj/structure/closet/secure_closet/engineering_electrical, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, /turf/open/floor/plasteel/yellow/side{ - dir = 1 + dir = 8 }, /area/engine/engineering) "aHY" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/engine/engineering) -"aHZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, +"aIe" = ( +/obj/structure/lattice/catwalk, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aIa" = ( -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aIb" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Aft Port"; - dir = 4; - network = list("singularity") - }, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aIc" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/space) -"aId" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/space) -"aIe" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/power/tesla_coil, -/turf/open/floor/plating/airless, +/turf/open/space, /area/space) "aIf" = ( /obj/machinery/camera{ @@ -16779,9 +16020,8 @@ supply_display = 1 }, /obj/machinery/conveyor{ - dir = 1; - id = "QMLoad2"; - movedir = 2 + dir = 5; + id = "QMLoad2" }, /turf/open/floor/plating, /area/quartermaster/storage) @@ -17418,138 +16658,14 @@ /turf/open/floor/plating, /area/engine/engineering) "aJn" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Aft Starboard"; - dir = 8; - network = list("singularity") - }, -/turf/open/floor/plating/airless, -/area/space) -"aJo" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/obj/structure/table, +/obj/item/airlock_painter, +/obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/engineering) -"aJp" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aJq" = ( -/obj/item/pen, -/obj/item/storage/belt/utility, -/obj/item/clothing/glasses/meson, -/obj/item/paper_bin{ - layer = 2.9 - }, -/obj/structure/table/glass, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aJr" = ( -/obj/item/book/manual/wiki/engineering_hacking{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/book/manual/wiki/engineering_construction, -/obj/item/clothing/gloves/color/yellow, -/obj/structure/table/glass, -/obj/item/device/flashlight, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aJs" = ( -/obj/item/book/manual/engineering_singularity_safety{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/book/manual/wiki/engineering_guide, -/obj/item/book/manual/engineering_particle_accelerator{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/clothing/gloves/color/yellow, -/obj/structure/table/glass, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aJt" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, -/area/space) "aJu" = ( /turf/open/floor/plating, /area/engine/engineering) -"aJv" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/space, -/area/space) -"aJw" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/space, -/area/space) -"aJx" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aJy" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/light, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"aJz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aJA" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/structure/cable/white{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "aJB" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/warning/vacuum/external, @@ -17561,14 +16677,12 @@ }, /obj/machinery/conveyor{ dir = 1; - id = "QMLoad2"; - movedir = 2 + id = "QMLoad2" }, /turf/open/floor/plating, /area/quartermaster/storage) "aJD" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = 1; id = "QMLoad2"; pixel_x = 6 }, @@ -17982,12 +17096,6 @@ /obj/machinery/portable_atmospherics/canister/toxins, /turf/open/floor/plating, /area/engine/engineering) -"aKy" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "aKz" = ( /obj/machinery/door/poddoor{ id = "Secure Storage"; @@ -17995,13 +17103,6 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"aKA" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/light, -/turf/open/floor/plasteel, -/area/engine/engineering) "aKB" = ( /obj/machinery/holopad, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -18015,75 +17116,35 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/engine/engineering) -"aKD" = ( -/obj/structure/cable/white{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aKE" = ( -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (EAST)"; - icon_state = "cryopod-open"; - dir = 4 - }, -/turf/open/floor/plasteel/vault, -/area/crew_quarters/locker) "aKF" = ( -/obj/machinery/computer/cryopod{ - pixel_y = -24 - }, -/turf/open/floor/plasteel/vault, -/area/crew_quarters/locker) -"aKG" = ( -/obj/machinery/cryopod, -/turf/open/floor/plasteel/vault, -/area/crew_quarters/locker) -"aKH" = ( -/obj/machinery/light, -/obj/machinery/vending/kink, -/turf/open/floor/plasteel/neutral/corner{ - dir = 2 - }, -/area/crew_quarters/locker) -"aKI" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 6 - }, -/area/engine/engineering) -"aKJ" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/closet/secure_closet/engineering_electrical, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"aKK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/engine/engineering) -"aKL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"aKM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plasteel/yellow/side, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"aKG" = ( +/obj/structure/particle_accelerator/end_cap{ + icon_state = "end_cap"; + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"aKH" = ( +/obj/structure/particle_accelerator/fuel_chamber{ + icon_state = "fuel_chamber"; + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"aKI" = ( +/obj/structure/particle_accelerator/power_box{ + icon_state = "power_box"; + dir = 4 + }, +/turf/open/floor/plating, /area/engine/engineering) "aKN" = ( /obj/machinery/door/poddoor{ @@ -18093,8 +17154,7 @@ }, /obj/machinery/conveyor{ dir = 4; - id = "QMLoad2"; - movedir = 8 + id = "QMLoad2" }, /turf/open/floor/plating, /area/quartermaster/storage) @@ -18102,16 +17162,14 @@ /obj/structure/plasticflaps, /obj/machinery/conveyor{ dir = 4; - id = "QMLoad2"; - movedir = 8 + id = "QMLoad2" }, /turf/open/floor/plating, /area/quartermaster/storage) "aKP" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "QMLoad2"; - movedir = 2 +/obj/machinery/conveyor/inverted{ + dir = 10; + id = "QMLoad2" }, /turf/open/floor/plating, /area/quartermaster/storage) @@ -18487,16 +17545,6 @@ }, /turf/open/floor/plasteel/vault, /area/crew_quarters/locker) -"aLI" = ( -/obj/structure/cable/white{ - icon_state = "1-4" - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) "aLJ" = ( /obj/structure/rack, /obj/item/stock_parts/matter_bin, @@ -18514,26 +17562,6 @@ dir = 4 }, /area/crew_quarters/locker) -"aLM" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/external{ - name = "External Containment Access"; - req_access_txt = "10; 13" - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) "aLN" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/machinery/portable_atmospherics/pump, @@ -18662,12 +17690,6 @@ /obj/effect/landmark/blobstart, /turf/open/floor/plating, /area/engine/engineering) -"aMc" = ( -/obj/structure/cable/white{ - icon_state = "2-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "aMd" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ @@ -18687,93 +17709,53 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/engine/engineering) -"aMf" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "aMg" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 4 }, -/turf/open/floor/plating/airless, /area/engine/engineering) "aMh" = ( -/obj/machinery/light/small, -/turf/open/floor/plating, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engpa"; + name = "Engineering Chamber Shutters" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, /area/engine/engineering) "aMi" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aMj" = ( -/obj/structure/cable/white{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/power/emitter{ - anchored = 1; - dir = 1; - icon_state = "emitter"; - state = 2 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aMk" = ( -/obj/structure/cable/white{ - icon_state = "2-4" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aMl" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aMm" = ( -/obj/structure/cable/white{ +/obj/structure/cable{ icon_state = "2-8" }, -/obj/structure/grille, /obj/effect/turf_decal/stripes/line{ - dir = 5 + dir = 8 }, -/turf/open/floor/plating/airless, +/turf/open/floor/plating, /area/engine/engineering) -"aMn" = ( -/obj/structure/lattice, -/turf/open/space, +"aMk" = ( +/obj/machinery/particle_accelerator/control_box, +/obj/structure/cable{ + icon_state = "0-2"; + pixel_y = 1 + }, +/turf/open/floor/plating, /area/engine/engineering) "aMo" = ( -/obj/structure/grille, -/obj/structure/cable/white{ - icon_state = "1-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aMp" = ( -/obj/structure/grille, /obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable/white{ - icon_state = "4-8" + dir = 2 }, /turf/open/floor/plating/airless, -/area/engine/engineering) +/area/space) "aMq" = ( /obj/structure/window/reinforced, /turf/open/space, @@ -19212,28 +18194,15 @@ /obj/item/device/gps, /turf/open/floor/plating, /area/engine/engineering) -"aNp" = ( -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable/white{ - icon_state = "1-8" - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "aNq" = ( -/obj/structure/cable/white{ - icon_state = "1-8" +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/plating/airless, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, /area/engine/engineering) "aNr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -19242,37 +18211,28 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"aNs" = ( -/obj/structure/cable/white{ - icon_state = "1-4" +"aNu" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 +/obj/machinery/camera/emp_proof{ + c_tag = "Containment - Particle Accelerator"; + dir = 1; + network = list("singularity") }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aNt" = ( -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable/white{ +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable{ icon_state = "1-8" }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aNu" = ( -/turf/closed/wall/r_wall, -/area/space) -"aNv" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/spawner/lootdrop/maintenance, -/obj/structure/window/reinforced{ - dir = 4 - }, /turf/open/floor/plating, -/area/maintenance/starboard) +/area/engine/engineering) +"aNv" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/engine/engineering) "aNw" = ( /obj/structure/window/reinforced{ dir = 4 @@ -19330,10 +18290,6 @@ /obj/structure/lattice, /turf/open/space, /area/space/nearstation) -"aND" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_1) "aNE" = ( /obj/machinery/button/door{ id = "QMLoaddoor"; @@ -19926,8 +18882,19 @@ }, /area/hydroponics/garden) "aOO" = ( -/turf/open/space, -/area/space/nearstation) +/obj/machinery/power/apc/highcap/ten_k{ + dir = 8; + name = "Engine Room APC"; + areastring = "/area/engine/engineering"; + pixel_x = -26 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 8 + }, +/area/engine/engineering) "aOP" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ @@ -19949,13 +18916,12 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"aOR" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/purple/visible{ +"aOS" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/space, -/area/space/nearstation) +/turf/open/floor/plating/airless, +/area/space) "aOT" = ( /obj/structure/window/reinforced{ dir = 4 @@ -20003,31 +18969,6 @@ }, /turf/open/space, /area/space/nearstation) -"aOZ" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_1) -"aPa" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/item/device/radio/intercom{ - pixel_x = 25 - }, -/obj/item/storage/pod{ - pixel_x = -26 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_2) -"aPb" = ( -/obj/structure/closet/secure_closet/miner/unlocked, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "aPd" = ( /obj/machinery/light/small{ dir = 1 @@ -20501,20 +19442,27 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/engineering) -"aQf" = ( -/obj/structure/chair{ - dir = 4 +"aPZ" = ( +/obj/machinery/vending/tool, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aQd" = ( +/obj/structure/rack, +/obj/machinery/button/door{ + id = "engpa"; + name = "Engineering Chamber Shutters Control"; + pixel_y = 26; + req_access_txt = "11" }, -/obj/machinery/status_display{ - pixel_y = 32 +/obj/item/storage/belt/utility, +/obj/item/weldingtool, +/obj/item/clothing/head/welding, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 }, -/obj/machinery/computer/shuttle/pod{ - pixel_y = -32; - possible_destinations = "pod_lavaland3"; - shuttleId = "pod3" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_3) +/area/engine/engineering) "aQg" = ( /obj/machinery/door/poddoor{ density = 1; @@ -20536,8 +19484,8 @@ /turf/open/floor/plating, /area/quartermaster/storage) "aQi" = ( -/obj/machinery/conveyor{ - dir = 8; +/obj/machinery/conveyor/inverted{ + dir = 6; id = "QMLoad" }, /turf/open/floor/plating, @@ -21106,6 +20054,27 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"aRo" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aRp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "aRq" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -21140,21 +20109,6 @@ "aRA" = ( /turf/closed/wall, /area/hallway/secondary/entry) -"aRB" = ( -/obj/structure/shuttle/engine/propulsion/burst, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_1) -"aRC" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ - id = "pod1"; - name = "escape pod 1"; - port_direction = 2 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) "aRD" = ( /obj/machinery/light{ dir = 8 @@ -21188,8 +20142,7 @@ "aRH" = ( /obj/machinery/conveyor{ dir = 1; - id = "QMLoad"; - movedir = 2 + id = "QMLoad" }, /turf/open/floor/plating, /area/quartermaster/storage) @@ -21345,7 +20298,7 @@ /area/hallway/primary/fore) "aRX" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Courtroom"; opacity = 1 }, @@ -21572,6 +20525,56 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"aSw" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aSx" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aSz" = ( +/obj/item/pen, +/obj/item/storage/belt/utility, +/obj/item/clothing/glasses/meson, +/obj/item/paper_bin{ + layer = 2.9 + }, +/obj/structure/table/glass, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aSA" = ( +/obj/item/book/manual/wiki/engineering_hacking{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/book/manual/wiki/engineering_construction, +/obj/item/clothing/gloves/color/yellow, +/obj/structure/table/glass, +/obj/item/device/flashlight, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aSB" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "aSD" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -21670,7 +20673,7 @@ /area/maintenance/port/fore) "aSQ" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = 1; + dir = 8; id = "QMLoad"; pixel_x = 6 }, @@ -22057,6 +21060,55 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"aTG" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aTH" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/light, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"aTI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aTJ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aTK" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "aTQ" = ( /obj/structure/window/reinforced{ dir = 4 @@ -22194,8 +21246,7 @@ }, /obj/machinery/conveyor{ dir = 1; - id = "QMLoad"; - movedir = 2 + id = "QMLoad" }, /turf/open/floor/plating, /area/quartermaster/storage) @@ -22576,6 +21627,28 @@ "aUM" = ( /turf/closed/wall, /area/crew_quarters/locker) +"aUN" = ( +/obj/machinery/cryopod{ + tag = "icon-cryopod-open (EAST)"; + icon_state = "cryopod-open"; + dir = 4 + }, +/turf/open/floor/plasteel/vault, +/area/crew_quarters/locker) +"aUO" = ( +/obj/machinery/computer/cryopod{ + pixel_y = -26 + }, +/turf/open/floor/plasteel/vault, +/area/crew_quarters/locker) +"aUP" = ( +/obj/machinery/cryopod{ + tag = "icon-cryopod-open (WEST)"; + icon_state = "cryopod-open"; + dir = 8 + }, +/turf/open/floor/plasteel/vault, +/area/crew_quarters/locker) "aUQ" = ( /turf/open/floor/plasteel/vault, /area/crew_quarters/locker) @@ -22641,6 +21714,19 @@ /obj/structure/closet/wardrobe/engineering_yellow, /turf/open/floor/plasteel, /area/engine/engineering) +"aUZ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/engine/engineering) "aVa" = ( /obj/machinery/requests_console{ announcementConsole = 0; @@ -22669,6 +21755,26 @@ dir = 1 }, /area/engine/engineering) +"aVd" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/closet/secure_closet/engineering_electrical, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"aVe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/engine/engineering) +"aVh" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "aVk" = ( /obj/structure/window/reinforced{ dir = 1; @@ -23131,7 +22237,7 @@ icon_state = "1-2" }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Courtroom"; opacity = 1 }, @@ -23295,6 +22401,16 @@ dir = 1 }, /area/engine/engineering) +"aWK" = ( +/obj/structure/cable/white{ + icon_state = "2-4" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "aWL" = ( /obj/machinery/ai_status_display{ pixel_x = -32 @@ -24189,6 +23305,16 @@ "aYu" = ( /turf/closed/wall, /area/security/checkpoint/engineering) +"aYx" = ( +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "aYy" = ( /obj/machinery/camera{ c_tag = "AI Chamber - Port"; @@ -27835,15 +26961,6 @@ }, /turf/open/floor/plating, /area/engine/break_room) -"bga" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_4) -"bgb" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_4) "bgc" = ( /obj/machinery/door/airlock/hatch{ name = "MiniSat Space Access Airlock"; @@ -28898,33 +28015,6 @@ "bif" = ( /turf/open/floor/plating, /area/engine/break_room) -"big" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ - dir = 4; - id = "pod4"; - name = "escape pod 4"; - port_direction = 2; - preferred_direction = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_4) -"bih" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - pixel_y = 25 - }, -/obj/item/storage/pod{ - pixel_x = 6; - pixel_y = -32 - }, -/obj/machinery/light/small, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_3) "bii" = ( /obj/docking_port/stationary/random{ dir = 4; @@ -28933,10 +28023,6 @@ }, /turf/open/space, /area/space/nearstation) -"bij" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_4) "bik" = ( /obj/machinery/light/small, /obj/machinery/camera{ @@ -29107,7 +28193,7 @@ /area/quartermaster/sorting) "biE" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = -1; + dir = 8; id = "packageExternal"; pixel_y = 18 }, @@ -37255,8 +36341,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Distro to Waste"; - on = 0 + name = "Distro to Waste" }, /turf/open/floor/plasteel/caution{ dir = 1 @@ -37479,7 +36564,7 @@ /area/security/vacantoffice) "bzz" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom/abandoned{ +/obj/machinery/door/airlock/grunge/abandoned{ name = "Vacant Office"; opacity = 1; req_access_txt = "32" @@ -38748,10 +37833,9 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bCr" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 0; - name = "Waste to Filter"; - on = 1 + name = "Waste to Filter" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -38799,6 +37883,13 @@ }, /turf/open/floor/plating, /area/engine/atmos) +"bCz" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) "bCA" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/simple/yellow/visible{ @@ -39286,7 +38377,7 @@ /area/crew_quarters/bar) "bDG" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Club"; opacity = 1 }, @@ -39407,10 +38498,9 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bDX" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Mix to Filter"; - on = 1 + name = "Mix to Filter" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -40147,7 +39237,7 @@ dir = 4 }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Club"; opacity = 1 }, @@ -41696,10 +40786,9 @@ }, /area/engine/atmos) "bIO" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Air to External Air Ports"; - on = 1 + name = "Air to External Air Ports" }, /turf/open/floor/plasteel/caution{ dir = 8 @@ -42430,10 +41519,9 @@ /turf/closed/wall/r_wall, /area/engine/atmos) "bKv" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "External Waste Ports to Filter"; - on = 1 + name = "External Waste Ports to Filter" }, /obj/machinery/airalarm{ dir = 4; @@ -42474,16 +41562,14 @@ "bKA" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 0; - name = "Air to Ports"; - on = 0 + name = "Air to Ports" }, /turf/open/floor/plasteel, /area/engine/atmos) "bKB" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 0; - name = "Mix to Ports"; - on = 0 + name = "Mix to Ports" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -44050,8 +43136,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 0; - name = "Port Mix to West Ports"; - on = 0 + name = "Port Mix to West Ports" }, /obj/machinery/light/small{ dir = 8 @@ -44175,7 +43260,7 @@ /area/maintenance/port) "bOk" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Quiet Room"; opacity = 1 }, @@ -44184,7 +43269,7 @@ /area/library) "bOl" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Quiet Room"; opacity = 1 }, @@ -45343,10 +44428,7 @@ /turf/closed/wall, /area/engine/atmos) "bQU" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - filter_type = -1; - on = 1 - }, +/obj/machinery/atmospherics/components/trinary/filter/atmos, /turf/open/floor/plasteel, /area/engine/atmos) "bQV" = ( @@ -46500,8 +45582,7 @@ "bTk" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 0; - name = "Port to Filter"; - on = 0 + name = "Port to Filter" }, /obj/machinery/light/small{ dir = 8 @@ -46542,6 +45623,9 @@ /obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/maintenance/solars/port/aft) +"bTq" = ( +/turf/open/floor/plating/airless, +/area/engine/engineering) "bTr" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/airlock/maintenance/abandoned{ @@ -47114,6 +46198,14 @@ icon_state = "panelscorched" }, /area/maintenance/starboard) +"bUw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plating, +/area/engine/engineering) "bUx" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 @@ -47168,8 +46260,7 @@ "bUD" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Port to Filter"; - on = 0 + name = "Port to Filter" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -48426,8 +47517,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Fuel Pipe to Filter"; - on = 0 + name = "Fuel Pipe to Filter" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -48962,20 +48052,15 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bYy" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "N2 to Airmix"; - on = 1 + name = "N2 to Airmix" }, /turf/open/floor/plasteel, /area/engine/atmos) "bYz" = ( -/obj/machinery/atmospherics/components/trinary/mixer{ - dir = 4; - node1_concentration = 0.8; - node2_concentration = 0.2; - on = 1; - target_pressure = 4500 +/obj/machinery/atmospherics/components/trinary/mixer/airmix{ + dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -50255,10 +49340,8 @@ /turf/open/floor/plasteel/dark, /area/engine/atmos) "cbd" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 4; - filter_type = "n2"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2{ + dir = 4 }, /obj/structure/window/reinforced, /turf/open/floor/plasteel/red, @@ -50276,10 +49359,9 @@ /area/engine/atmos) "cbf" = ( /obj/structure/window/reinforced, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Nitrogen Outlet"; - on = 1 + name = "Nitrogen Outlet" }, /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 @@ -50306,10 +49388,8 @@ /area/engine/atmos) "cbh" = ( /obj/structure/window/reinforced, -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 4; - filter_type = "o2"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/o2{ + dir = 4 }, /turf/open/floor/plasteel/blue, /area/engine/atmos) @@ -50325,10 +49405,9 @@ /area/engine/atmos) "cbj" = ( /obj/structure/window/reinforced, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "O2 to Airmix"; - on = 1 + name = "O2 to Airmix" }, /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 @@ -50964,13 +50043,10 @@ /turf/open/floor/plasteel, /area/hydroponics) "ccz" = ( -/obj/item/wrench, -/obj/item/clothing/suit/apron, -/obj/item/clothing/accessory/armband/hydro, -/obj/structure/table/glass, /obj/effect/turf_decal/stripes/line{ - dir = 9 + dir = 1 }, +/obj/machinery/smartfridge/disks, /turf/open/floor/plasteel, /area/hydroponics) "ccA" = ( @@ -51731,8 +50807,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 2; - name = "Fuel Pipe to Incinerator"; - on = 0 + name = "Fuel Pipe to Incinerator" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -54079,6 +53154,18 @@ icon_state = "1-2" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/embedded_controller/radio/airlock_controller{ + airpump_tag = "incinerator_airlock_pump"; + exterior_door_tag = "incinerator_airlock_exterior"; + id_tag = "incinerator_airlock_control"; + interior_door_tag = "incinerator_airlock_interior"; + name = "Incinerator Access Console"; + pixel_x = 40; + pixel_y = 8; + req_access_txt = "12"; + sanitize_external = 1; + sensor_tag = "incinerator_airlock_sensor" + }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "cjb" = ( @@ -54782,9 +53869,8 @@ /obj/structure/sign/warning/fire{ pixel_x = -32 }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1 }, /obj/machinery/airlock_sensor{ id_tag = "incinerator_airlock_sensor"; @@ -54815,9 +53901,8 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 2; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 2 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -55920,10 +55005,7 @@ /area/maintenance/disposal/incinerator) "cne" = ( /obj/machinery/igniter{ - icon_state = "igniter0"; - id = "Incinerator"; - luminosity = 2; - on = 0 + id = "Incinerator" }, /obj/structure/cable{ icon_state = "1-2" @@ -57346,6 +56428,24 @@ icon_state = "wood-broken7" }, /area/maintenance/port/aft) +"cpR" = ( +/obj/machinery/button/door{ + id = "engpa"; + name = "Engineering Chamber Shutters Control"; + pixel_y = -26; + req_access_txt = "11" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) "cpS" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -62913,7 +62013,7 @@ /area/medical/genetics/cloning) "cBc" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Genetics"; opacity = 1; req_access_txt = "9" @@ -64322,7 +63422,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Morgue"; opacity = 1; req_access_txt = "5" @@ -64592,9 +63692,8 @@ pixel_y = 24 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4 }, /turf/open/floor/engine, /area/science/mixing) @@ -64874,7 +63973,7 @@ /area/medical/morgue) "cEY" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Morgue"; opacity = 1; req_access_txt = "6" @@ -65469,9 +64568,8 @@ /obj/structure/sign/warning/fire{ pixel_y = -32 }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8 }, /turf/open/floor/engine, /area/science/mixing) @@ -66541,11 +65639,7 @@ /turf/open/floor/plasteel/dark, /area/science/server) "cIc" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - target_temperature = 80; - dir = 2; - on = 1 - }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plasteel/dark, /area/science/server) @@ -68245,18 +67339,6 @@ /turf/open/floor/plating, /area/maintenance/aft) "cLC" = ( -/obj/machinery/embedded_controller/radio/airlock_controller{ - name = "Incinerator Access Console"; - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_access_control"; - interior_door_tag = "incinerator_airlock_interior"; - pixel_x = 8; - pixel_y = -24; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor"; - req_access_txt = "12" - }, /obj/machinery/button/ignition{ id = "Incinerator"; pixel_x = 8; @@ -68297,11 +67379,9 @@ /turf/open/floor/plating, /area/maintenance/aft) "cLE" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ dir = 1; - name = "euthanization chamber freezer"; - on = 1; - target_temperature = 80 + name = "euthanization chamber freezer" }, /turf/open/floor/plating, /area/science/xenobiology) @@ -71619,20 +70699,6 @@ }, /turf/open/floor/plasteel, /area/science/xenobiology) -"cSU" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/status_display{ - pixel_x = 32 - }, -/obj/machinery/computer/shuttle/pod{ - pixel_x = -32; - possible_destinations = "pod_lavaland1"; - shuttleId = "pod1" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) "cSV" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable/yellow{ @@ -71726,21 +70792,6 @@ }, /turf/open/floor/engine, /area/science/xenobiology) -"cTd" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/item/device/radio/intercom{ - pixel_x = 25 - }, -/obj/item/storage/pod{ - pixel_x = -26 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) "cTe" = ( /obj/machinery/door/window/northleft{ base_state = "right"; @@ -71779,20 +70830,6 @@ }, /turf/open/floor/engine, /area/science/xenobiology) -"cTi" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/obj/machinery/computer/shuttle/pod{ - pixel_y = -32; - possible_destinations = "pod_lavaland4"; - shuttleId = "pod4" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_4) "cTj" = ( /obj/item/crowbar/red, /obj/item/wrench, @@ -71909,20 +70946,6 @@ }, /turf/open/floor/plasteel, /area/science/xenobiology) -"cTu" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - pixel_y = 25 - }, -/obj/item/storage/pod{ - pixel_x = 6; - pixel_y = -32 - }, -/obj/machinery/light/small, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_4) "cTw" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/item/storage/box/lights/mixed, @@ -72122,7 +71145,6 @@ height = 13; id = "ferry_home"; name = "port bay 2"; - turf_type = /turf/open/space; width = 5 }, /turf/open/space/basic, @@ -72148,18 +71170,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engine/atmos) -"cVE" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cVH" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "cVJ" = ( /obj/structure/window/reinforced, /obj/machinery/computer/atmos_control/tank/air_tank{ @@ -72172,60 +71182,10 @@ dir = 8 }, /area/engine/atmos) -"cVK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cVL" = ( -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cVM" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cVQ" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cWg" = ( -/obj/docking_port/mobile/auxillary_base{ - dheight = 4; - dir = 2; - dwidth = 4; - height = 9; - width = 9 - }, -/obj/machinery/bluespace_beacon, -/obj/machinery/computer/auxillary_base, -/turf/closed/wall, -/area/shuttle/auxillary_base) -"cWh" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "cWA" = ( /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/fore) -"cWF" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cWJ" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "cWK" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -72263,6 +71223,14 @@ dir = 1 }, /area/construction/mining/aux_base) +"cXZ" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "cYc" = ( /obj/structure/table/optable{ name = "Robotics Operating Table" @@ -72355,6 +71323,16 @@ }, /turf/open/floor/plasteel/white, /area/science/xenobiology) +"cYV" = ( +/obj/structure/cable/white{ + icon_state = "1-8" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "cZa" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -72586,6 +71564,21 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/circuit/killroom, /area/science/xenobiology) +"daW" = ( +/obj/machinery/button/door{ + id = "engpa"; + name = "Engineering Chamber Shutters Control"; + pixel_y = 26; + req_access_txt = "11" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) "daX" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -72594,6 +71587,20 @@ icon_state = "platingdmg2" }, /area/maintenance/port/fore) +"daZ" = ( +/obj/structure/particle_accelerator/particle_emitter/right{ + icon_state = "emitter_right"; + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"dbb" = ( +/obj/structure/particle_accelerator/particle_emitter/center{ + icon_state = "emitter_center"; + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) "dbd" = ( /obj/structure/sink/kitchen{ pixel_y = 28 @@ -72705,7 +71712,7 @@ "dbE" = ( /obj/machinery/plantgenes, /obj/effect/turf_decal/stripes/line{ - dir = 9 + dir = 1 }, /turf/open/floor/plasteel, /area/hydroponics) @@ -73791,11 +72798,19 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) -"ddG" = ( -/obj/effect/turf_decal/stripes/line, -/obj/docking_port/stationary/public_mining_dock, +"ddO" = ( +/obj/machinery/light/small{ + dir = 1 + }, /turf/open/floor/plating, -/area/shuttle/auxillary_base) +/area/engine/engineering) +"ddP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) "ddQ" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -73806,6 +72821,205 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"ddW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ddX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ddZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating/airless, +/area/space) +"deb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"def" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/space, +/area/space) +"deh" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/engine/engineering) +"dem" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/space, +/area/space) +"den" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/space) +"der" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"deu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/space) +"dev" = ( +/obj/machinery/field/generator{ + anchored = 1; + state = 2 + }, +/turf/open/floor/plating/airless, +/area/space) +"dew" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/space, +/area/space) +"deB" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engpa"; + name = "Engineering Chamber Shutters" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"deD" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating/airless, +/area/space) +"deM" = ( +/obj/structure/table, +/obj/effect/turf_decal/delivery, +/obj/item/clothing/glasses/meson/engine, +/obj/item/clothing/glasses/meson/engine, +/obj/item/clothing/glasses/meson/engine, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/pipe_dispenser, +/obj/item/pipe_dispenser, +/obj/item/pipe_dispenser, +/turf/open/floor/plasteel/yellow/side{ + dir = 4 + }, +/area/engine/engineering) +"deV" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating/airless, +/area/space) +"deY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space) +"dfa" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"dfh" = ( +/obj/structure/table, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson, +/obj/item/storage/belt/utility, +/obj/item/storage/belt/utility, +/obj/item/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = 10 + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 4 + }, +/area/engine/engineering) +"dfp" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/engine/engineering) +"dfz" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/space) +"dfD" = ( +/obj/item/book/manual/engineering_singularity_safety{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/book/manual/wiki/engineering_guide, +/obj/item/book/manual/engineering_particle_accelerator{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/gloves/color/yellow, +/obj/structure/table/glass, +/turf/open/floor/plasteel, +/area/engine/engineering) +"dfI" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless, +/area/space) +"dfP" = ( +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "dfX" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable/yellow{ @@ -73821,12 +73035,96 @@ dir = 1 }, /area/engine/engineering) +"dfY" = ( +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"dga" = ( +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"dgd" = ( +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"dge" = ( +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/power/emitter{ + anchored = 1; + dir = 1; + icon_state = "emitter"; + state = 2 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"dgg" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"dgj" = ( +/obj/structure/grille, +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"dgk" = ( +/obj/structure/cable/white{ + icon_state = "1-8" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"dgm" = ( +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"dgr" = ( +/turf/closed/wall/r_wall, +/area/space) "dgz" = ( /obj/structure/closet/toolcloset, /obj/effect/turf_decal/delivery, /obj/item/clothing/glasses/meson/engine, /turf/open/floor/plasteel, /area/engine/engineering) +"dgN" = ( +/obj/structure/lattice, +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/space, +/area/space/nearstation) +"dgO" = ( +/turf/open/space, +/area/space/nearstation) "dhn" = ( /obj/structure/table, /obj/item/poster/random_contraband, @@ -74841,6 +74139,19 @@ /obj/structure/lattice/catwalk, /turf/open/space, /area/science/xenobiology) +"djt" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"djx" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Containment - Aft Port"; + dir = 4; + network = list("singularity") + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless, +/area/engine/engineering) "djz" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/external{ @@ -74899,6 +74210,12 @@ }, /turf/open/floor/plating, /area/chapel/main) +"dlI" = ( +/obj/structure/closet/secure_closet/engineering_electrical, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/engine/engineering) "dlV" = ( /turf/closed/wall/r_wall, /area/maintenance/department/science/xenobiology) @@ -75480,6 +74797,25 @@ "dBu" = ( /turf/closed/wall, /area/engine/gravity_generator) +"dBw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"dBy" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/engine/engineering) +"dBB" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/space) "dBC" = ( /obj/machinery/meter, /obj/structure/grille, @@ -76204,6 +75540,13 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/space) +"eCm" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/space, +/area/space) "eEe" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 @@ -76217,6 +75560,21 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/office) +"eMP" = ( +/turf/open/floor/plasteel/yellow/side{ + dir = 4 + }, +/area/engine/engineering) +"eTm" = ( +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/white{ + icon_state = "1-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "eXy" = ( /obj/machinery/airalarm{ pixel_y = 32 @@ -76236,6 +75594,17 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"fca" = ( +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "fdr" = ( /obj/structure/closet/firecloset, /turf/open/floor/plating, @@ -76262,12 +75631,33 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"giG" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Containment - Aft Starboard"; + dir = 8; + network = list("singularity") + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"glg" = ( +/obj/effect/decal/cleanable/oil, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "gnZ" = ( /obj/item/device/radio/intercom{ pixel_y = -30 }, /turf/open/floor/plasteel/white, /area/science/circuit) +"gBt" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating/airless, +/area/space) "gEk" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -76322,6 +75712,10 @@ /obj/machinery/autolathe, /turf/open/floor/plasteel/white, /area/science/circuit) +"hiq" = ( +/obj/machinery/the_singularitygen/tesla, +/turf/open/floor/plating/airless, +/area/space) "hyP" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod Two" @@ -76331,6 +75725,41 @@ }, /turf/open/floor/plating, /area/security/prison) +"hKs" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the Engine."; + dir = 8; + layer = 4; + name = "Engine Monitor"; + network = list("singularity"); + pixel_x = 30 + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 4 + }, +/area/engine/engineering) +"hTv" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"hYG" = ( +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"ili" = ( +/turf/open/floor/plating/airless, +/area/space) "ioI" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -76342,6 +75771,13 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel, /area/science/circuit) +"ixJ" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/space, +/area/space) "izu" = ( /obj/machinery/autolathe{ name = "public autolathe" @@ -76358,6 +75794,39 @@ }, /turf/open/floor/plasteel/whitepurple, /area/science/lab) +"iKX" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"iNQ" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"iQV" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"jeV" = ( +/obj/machinery/conveyor/inverted{ + dir = 10; + id = "QMLoad" + }, +/turf/open/floor/plating, +/area/quartermaster/storage) "jwW" = ( /turf/closed/wall/mineral/plastitanium, /area/crew_quarters/fitness/recreation) @@ -76387,6 +75856,30 @@ }, /turf/open/floor/plating, /area/maintenance/solars/port/aft) +"jzM" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "External Containment Access"; + req_access_txt = "10; 13" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"jGF" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/engine/engineering) "jKK" = ( /obj/machinery/door/airlock/external{ req_access_txt = "13" @@ -76403,6 +75896,14 @@ "krD" = ( /turf/closed/wall, /area/science/circuit) +"kwI" = ( +/obj/item/wrench, +/obj/item/clothing/suit/apron, +/obj/item/clothing/accessory/armband/hydro, +/obj/structure/table/glass, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/hydroponics) "kys" = ( /obj/structure/cable/yellow{ icon_state = "0-8" @@ -76461,12 +75962,42 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"kXU" = ( +/obj/structure/cable/white, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/power/emitter{ + anchored = 1; + state = 2 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "lal" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/plasteel, /area/science/circuit) +"lim" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "External Containment Access"; + req_access_txt = "10; 13" + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) "llb" = ( /obj/structure/table/reinforced, /obj/item/device/integrated_circuit_printer, @@ -76486,6 +76017,14 @@ /obj/item/device/multitool, /turf/open/floor/plasteel/white, /area/science/circuit) +"lwo" = ( +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "lzk" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -76558,6 +76097,19 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"mGY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating/airless, +/area/space) +"mJy" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless, +/area/space) "ngl" = ( /obj/machinery/bookbinder, /turf/open/floor/plasteel/white, @@ -76600,6 +76152,12 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) +"nDB" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/engine/engineering) "nIb" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/mining{ @@ -76616,6 +76174,20 @@ /obj/structure/target_stake, /turf/open/floor/plasteel/white, /area/science/circuit) +"obX" = ( +/obj/docking_port/stationary{ + area_type = /area/construction/mining/aux_base; + dheight = 4; + dir = 1; + dwidth = 4; + height = 9; + id = "aux_base_zone"; + name = "aux base zone"; + roundstart_template = /datum/map_template/shuttle/aux_base/default; + width = 9 + }, +/turf/open/floor/plating, +/area/construction/mining/aux_base) "ocT" = ( /obj/machinery/light{ dir = 1 @@ -76642,10 +76214,25 @@ /obj/structure/table/reinforced, /turf/open/floor/plasteel/white, /area/science/circuit) +"oru" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "oub" = ( /obj/structure/sign/poster/official/random, /turf/closed/wall, /area/hydroponics) +"ovJ" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/engine/engineering) "oLW" = ( /obj/structure/table/reinforced, /obj/structure/cable/yellow{ @@ -76682,6 +76269,19 @@ /obj/item/pen, /turf/open/floor/plasteel/white, /area/science/circuit) +"oXn" = ( +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/engine/engineering) +"pdI" = ( +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "pmc" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 @@ -76733,6 +76333,19 @@ }, /turf/open/floor/plating, /area/maintenance/aft) +"qcZ" = ( +/turf/open/space/basic, +/area/space/nearstation) +"qiO" = ( +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "qnJ" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -76747,12 +76360,38 @@ /obj/machinery/door/firedoor, /turf/open/floor/plating, /area/science/circuit) +"qpm" = ( +/obj/machinery/newscaster{ + pixel_y = -32 + }, +/obj/machinery/light, +/obj/machinery/vending/kink, +/turf/open/floor/plasteel/vault, +/area/crew_quarters/locker) "qqg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, /turf/open/floor/plasteel, /area/science/misc_lab) +"qxk" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space) +"qyp" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless, +/area/space) +"qzA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/engine/engineering) "qBh" = ( /obj/structure/table, /obj/item/device/paicard, @@ -76769,6 +76408,20 @@ }, /turf/open/floor/plasteel, /area/science/circuit) +"qMg" = ( +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/effect/turf_decal/delivery, +/obj/structure/table, +/turf/open/floor/plasteel/yellow/side{ + dir = 4 + }, +/area/engine/engineering) "qRM" = ( /obj/machinery/camera{ c_tag = "Research Division Circuitry Lab"; @@ -76811,6 +76464,14 @@ }, /turf/open/floor/plasteel, /area/science/circuit) +"sef" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Containment - Fore Starboard"; + dir = 8; + network = list("singularity") + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "siF" = ( /obj/structure/grille, /turf/open/floor/plating/airless, @@ -76860,12 +76521,26 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"tDM" = ( +/obj/item/wrench, +/turf/open/floor/plating, +/area/engine/engineering) "tFJ" = ( /obj/structure/bodycontainer/morgue{ dir = 8 }, /turf/open/floor/plasteel/dark, /area/medical/morgue) +"tUB" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "tVY" = ( /obj/structure/closet/crate, /obj/item/target/alien, @@ -76882,6 +76557,12 @@ /obj/machinery/air_sensor/atmos/toxins_mixing_tank, /turf/open/floor/engine/vacuum, /area/science/mixing) +"tYJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating/airless, +/area/space) "upN" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -76948,6 +76629,25 @@ }, /turf/open/floor/plasteel, /area/science/misc_lab) +"vrp" = ( +/obj/structure/closet/firecloset, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 4 + }, +/area/engine/engineering) +"vuC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"vyf" = ( +/obj/structure/lattice, +/turf/open/space, +/area/engine/engineering) "vyx" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 @@ -76955,10 +76655,20 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) +"vJQ" = ( +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/space) "vLD" = ( /obj/structure/lattice, /turf/open/space/basic, /area/space) +"waK" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "wgw" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, @@ -76973,6 +76683,13 @@ }, /turf/open/floor/plating, /area/security/prison) +"wmn" = ( +/obj/structure/particle_accelerator/particle_emitter/left{ + icon_state = "emitter_left"; + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) "wxc" = ( /obj/machinery/door/airlock/external{ name = "Atmospherics External Airlock"; @@ -76983,6 +76700,22 @@ }, /turf/open/floor/plating, /area/engine/atmos) +"wBK" = ( +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"wEo" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "wFH" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -77013,6 +76746,12 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/science/misc_lab) +"xfJ" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/engine/engineering) "xkG" = ( /obj/item/device/integrated_electronics/wirer, /obj/structure/table/reinforced, @@ -77039,7 +76778,6 @@ height = 17; id = "syndicate_nw"; name = "northwest of station"; - turf_type = /turf/open/space; width = 23 }, /turf/open/space/basic, @@ -77067,6 +76805,14 @@ }, /turf/open/floor/plasteel, /area/science/circuit) +"yhr" = ( +/obj/structure/cable/white{ + icon_state = "2-4" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plating/airless, +/area/engine/engineering) "ykE" = ( /obj/machinery/light, /turf/open/floor/plasteel/white, @@ -86428,10 +86174,10 @@ aaa aaa aaa aaa -aOZ -aOZ -aOZ -aRB +aaa +aaa +aaa +aaa aSH aUb aVt @@ -86685,10 +86431,10 @@ aaa aaa aaa cSP -aND -cSU -cTd -aRC +aaa +aaa +aaa +abu bsk aUc aVu @@ -86942,10 +86688,10 @@ aaa aaa aaa aaa -aOZ -aOZ -aOZ -aRB +aaa +aaa +aaa +aaa aSI aRA aVv @@ -87964,14 +87710,14 @@ anS anS aDb aDa -cVK -cVK -cVK -cVK -cVK -cVK -cVK -cWF +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa cWK aRD aSJ @@ -88220,15 +87966,15 @@ anS aaf aai aDb -cVE -cVL -cVL -cVL -cVL -cVL -cVL -cVL -cWJ +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa cWK aRE aSK @@ -88477,15 +88223,15 @@ anS aaf aaa aDb -cVE -cVL -cVL -cVL -cVL -cVL -cVL -cVL -cWJ +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa cWK aRE aSK @@ -88734,15 +88480,15 @@ anS anS aaf aDb -cVE -cVL -cVL -cVL -cVQ -cVL -cVL -cVL -cWJ +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa cWK cXE aIf @@ -88991,15 +88737,15 @@ anS anS aaf aDb -cVE -cVL -cVL -aHb -cWg -cVL -cVL -cVL -ddG +aDa +aDa +aDa +aDa +obX +aDa +aDa +aDa +aDa cWM cXR cYG @@ -89248,15 +88994,15 @@ aaf aaf aaf aDb -cVE -cVL -cVL -cVL -cWh -cVL -cVL -cVL -cWJ +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa cWK cYE cYK @@ -89505,15 +89251,15 @@ aaa aaf aaa aDb -cVE -cVL -cVL -cVL -cVL -cVL -cVL -cVL -cWJ +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa cWK dDJ aSL @@ -89762,15 +89508,15 @@ aaf dne dne aDb -cVE -cVL -cVL -cVL -cVL -cVL -cVL -cVL -cWJ +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa cWK dDK aSM @@ -90019,15 +89765,15 @@ aip dne dnk aDb -cVH -cVM -cVM -cVM -cVM -cVM -cVM -cVM -aPb +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa cWK aRF aSN @@ -94145,7 +93891,7 @@ aRH aRH aUf aRH -aRH +jeV aYK bam dmH @@ -100011,7 +99757,7 @@ aaA aaG aaP aax -aab +abn abE abD acs @@ -101555,8 +101301,8 @@ aaa aay abs abK -aad -aae +ace +acx acM abe ady @@ -102064,10 +101810,10 @@ aaa aaa aaf aaa -aaV -aaV -aaV -abt +aaa +aaa +aaa +aaa abL acf acy @@ -102321,9 +102067,9 @@ aaa aaa aaa adG -aaM -adH -aPa +aaa +aaa +aaa abu abM acg @@ -102578,10 +102324,10 @@ aaa aaf aaf aaa -aaV -aaV -aaV -abt +aaa +aaa +aaa +aaa abN ach aax @@ -110591,7 +110337,7 @@ aPJ aQT aOu aTt -aKE +aUN aUM aYc aTC @@ -110848,7 +110594,7 @@ aOt aQU aSg aTt -aKF +aUO aUM boW aZt @@ -111105,7 +110851,7 @@ aOu aQV aOv aTt -aKG +aUP aUM dCD aZt @@ -112133,7 +111879,7 @@ aPK aQV aOv aTt -aKH +qpm aUM aYe dnh @@ -112164,7 +111910,7 @@ bOW bQH bRV bST -bUh +kwI bVx bWS bYi @@ -114665,9 +114411,9 @@ aaa aaf aaa acP -adk +aaa adF -adk +aaa acP afB agz @@ -114922,9 +114668,9 @@ aaa aaf aaa acP -adl -bih -adl +aaa +aaa +aaa aeB afC afC @@ -115179,9 +114925,9 @@ aaa aaf aaa jwW -adl -aQf -adl +aaa +aaa +aaa aeC afD afD @@ -115436,9 +115182,9 @@ aaa aai aaa aaa -adl -adI -adl +aaa +aaa +aaa aeC afD afD @@ -117264,16 +117010,16 @@ aEm aFu aBI aBI -aAU -aCi -aCi -aFy +aJn +aCO +aFq +aNq aBI -aGY -aDf +aPZ +aRo aSu -aJx -aKI +aTG +aUZ aWB aYr aZH @@ -117514,22 +117260,22 @@ dqu doh axO axY -auS -awY -ayb -ayU -azd -aAp -aAv -ayh -ayh -ayh -ayh +aAo +aBJ +ayT +aEn +aFv aGV -ayh -aHZ +aHX +aCX +aCX +aCX +aCX +aOO +aCX +aRp aSv -aJy +aTH aVa aWw aWw @@ -117771,8 +117517,8 @@ dnh dnh axO axY -auT -axH +aAp +aBK aCS aEo aFw @@ -117785,8 +117531,8 @@ aNr aOP dCw aRq -aJo -aJz +aSw +aTI aVb aWC aYs @@ -118028,10 +117774,10 @@ avt awJ axS axY -avU -axU +nDB +ddW aCT -ayV +aEp aKC aFx aKC @@ -118042,8 +117788,8 @@ aKC aOQ aKC aRr -aJp -aJA +aSx +aTJ dfX aWD aVc @@ -118285,23 +118031,23 @@ avu axY axT axY -avV -axV -ayc -ayg -ayh -aAq -ayh -ayh -ayh -aDf -ayh -ayh -ayh -aAq -axH -aKy -aKJ +aAr +ddX +aCU +aCW +aCX +aGX +aCX +aCX +aCX +aSB +aCX +aCX +aCX +aGX +aBK +aTK +aVd aBI aYt aZK @@ -118540,25 +118286,25 @@ dBu dBu avv axY -aaU -alr -avW -axV -ayd -ayh -ayh -aAr -aAw -aBJ -aCL -aDg -aFz -aGX -ayh -ayh -axH -aKA -aKK +axU +ayS +jGF +ddX +deb +aCX +aCX +qMg +deM +eMP +hKs +aMg +vrp +dfh +aCX +aCX +aBK +deh +aVe axY aYu aYu @@ -118797,25 +118543,25 @@ atf auu avw atf -aaW -amV -avX +axV +ddP +aAt aBL -ayd -ayh -azf +deb +aCX +aFA axY axY -aBK +deB axY -aDt +aMh axY axY -aGZ -ayh -aJq -aKy -aKL +oXn +aCX +aSz +aTK +vuC aJu aYu aZL @@ -119054,25 +118800,25 @@ atg auv avx awK -aaX -anz +axW +aAu ddQ aBM -aye -ayh -azh +aCV +aCX +aFB axY -aAx -aBO -aBO -aEn -aFA +daW +dBw +aKF +aMi +cpR axY -aHa -ayh -aJr -aKy -aKL +aQd +aCX +aSA +aTK +vuC aJu aYu aZM @@ -119311,25 +119057,25 @@ ajb auw avy ajb -abd -aov -awN +axX +ayV +aAv aBN -ayg -ayh -azf -aAs -aAy -aJu -aCU -aJu -aFB -aAs +aCW +aCX +aFA aGZ -ayh -aJs -aKy -aKM +qzA +aJu +aKG +aJu +dBy +aGZ +oXn +aCX +dfD +aTK +hTv aJu aYu aZN @@ -119569,24 +119315,24 @@ ajb avz axY axY -apP -awO -axW -ayh -ayh -azi -axY -aAy -aJu -aCV -aEp +ayW +tUB +aBO +aCX +aCX aFC axY -aHP -ayh -axW -aKD -aLI +qzA +aJu +aKH +aMk +aNu +axY +dfp +aCX +aBO +dfP +dfY axY aYu cXA @@ -119826,24 +119572,24 @@ ajb avA axY axY -apX +ayX axY axY -ayt -ayh -azA +aCY +aCX +der axY -aAy +qzA aJu -aCW -aEq -aFB +aKI +tDM +dBy axY -aHX -aIa +dlI +iQV axY axY -apX +ayX axY atm apc @@ -120082,30 +119828,30 @@ ati ajb avB axY -abn -aqe +ddO +bUw aJu axY axY axY axY -aAt -aAy -aBP -aCX -aEr -aFB -aAt +djt +qzA +daZ +dbb +wmn +dBy +djt axY axY axY aJu -aqe -aMh +bUw +ovJ axY atm jKK -aNv +cXZ atm bfZ bif @@ -120340,33 +120086,33 @@ ajb avC axY axY -arh +lim axY axY -atF -ayW -atF -aAt -aAy +bTq +aEr +bTq +djt +qzA aJu -aCY -aEs -aFD -aAt -atF -aIb +xfJ +dfa +aNv +djt +bTq +djx axY axY -aLM +jzM axY axY atm avG cYj atm -bga -big -bga +aaa +adF +aaa bhT bpv brL @@ -120597,33 +120343,33 @@ dpL avD axY axY -arF -atF -atF -atF -atF -atF -aAt -aAt -aAt +waK +bTq +bTq +bTq +bTq +bTq +djt +djt +djt aRm -aAt -aAt -aAt -atF -atF -atF -atF -aMc -aMi -aMo +djt +djt +djt +bTq +bTq +bTq +bTq +dga +dgd +dgj atm lNZ atm atm -bgb -cTu -bgb +aaa +aaa +aaa bhT brJ brN @@ -120853,34 +120599,34 @@ apm dnR avE axY -acd -atC -atF +ayc +aza +bTq +aaa +mJy +dem +dem +deD +deD +deD +deV +dem +dem +dem +dem +dem +dfI +aaa +bTq +bTq +aYx +dgr +qcZ +aaa aaa -ayu -ayX -ayX -aAu -aAu -aAu -aCZ -ayX -ayX -ayX -ayX -ayX -aJt aaa -atF -atF -aMp -aNu -aju aaa aaa -bgb -cTi -bgb sJW aNC brM @@ -121110,34 +120856,34 @@ apm dnS avB axY -ace -atF -awX -axX -ayv -ayY -azB -azB -azB -azB -azB -azB -azB -azB -azB -aIc -ayv -axX -aMf -atF -aMp -aNu -aju +lwo +bTq +aAx +qxk +aIe +aOS +deu +deu +deu +deu +deu +deu +deu +deu +deu +dBB +aIe +qxk +aVh +bTq +aYx +dgr +qcZ +aaa +aaa +aaa aaa aaa -bgb -bij -bgb aaa aaf bpw @@ -121367,29 +121113,29 @@ atk aux avF dqT -acx -atJ -awX +fca +kXU +aAx aaa -ayv -ayZ -aAo +aIe +den +dev aav aav -aAo -lMJ +dev +vLD aaa aav aav -aAo -aId -ayv +dev +dfz +aIe aaa -aMf -aMj -aNp -aNu -aju +aVh +dge +azd +dgr +qcZ aaa aaa aaa @@ -121624,29 +121370,29 @@ atl auy dnS dqT -aeD -atF -awX -axX -ayS -aza +iNQ +bTq +aAx +qxk +def +aCZ aav aav aav -lMJ -aaf +vLD +qxk aaa aav aav aav -aIe -aJv -axX -aMf -atF -aMl -aNu -aju +qyp +dew +qxk +aVh +bTq +dgg +dgr +qcZ aaa aaa anT @@ -121881,44 +121627,44 @@ apm dnh dnS dqT -afQ -auQ -awX +hYG +wBK +aAx aaa -ayv -ayZ +aIe +den aav aav aaa -aju -aaf -aju +aaa +qxk +aaa aaa aav aav -aId -ayv +dfz +aIe aaa -aMf -aMk -aNq -aNu -aju +aVh +aWK +dgk +dgr +qcZ aaa aaa -anT -aOO -aOO +dgN +dgO +dgO aaf aav bpw -aOO -aOO +dgO +dgO aaf aaf aaf aaf -aOR +bCz aaf bFY aaf @@ -122139,28 +121885,28 @@ auz dqp dqT axY -aeD -awX -axZ -ayS -aza +iNQ +aAx +vJQ +def +aCZ aaa aaa -aju -aBQ -azB -aEu -aju -lMJ -aAo -aIe -aJv -axZ -aMf -aMl +aaa +ddZ +deu +mGY +aaa +vLD +dev +qyp +dew +vJQ +aVh +dgg axY -aNu -aju +dgr +qcZ aaa aaa anT @@ -122169,7 +121915,7 @@ aaa aaf aaf bpx -aOO +dgO aaf aaf aaa @@ -122396,28 +122142,28 @@ auA dnS dqT axY -aeD -atF -axX -ayv -ayZ -lMJ -aaf -aaf -ayZ -aDd -aEC -aaf -aaf -lMJ -aId -ayv -axX -atF -aMl +oru +bTq +qxk +aIe +den +vLD +qxk +qxk +den +hiq +aMo +qxk +qxk +vLD +dfz +aIe +qxk +bTq +iKX axY -aNu -aju +dgr +qcZ aaa aaa anT @@ -122653,28 +122399,28 @@ auB avG dqT axY -aeD -awX -axZ -ayS -aza -aAo -lMJ -aju -aBR -aDe -aFv -aju +iNQ +aAx +vJQ +def +aCZ +dev +vLD +aaa +gBt +deY +tYJ aaa aaa -aIe -aJv -axZ -aMf -aMl +aaa +qyp +dew +vJQ +aVh +dgg axY -aNu -aju +dgr +qcZ aaa aaa anT @@ -122909,29 +122655,29 @@ dnh dnh jKK dqT -ahT -auR -awX +yhr +cYV +aAx aaa -ayv -ayZ +aIe +den aav aav aaa -aju -aaf -aju +aaa +qxk +aaa aaa aav aav -aId -ayv +dfz +aIe aaa -aMf -aMm -aNs -aNu -aju +aVh +qiO +dgm +dgr +qcZ aaa aaa anT @@ -123166,29 +122912,29 @@ atn bOY avG dqT -aeD -atF -awX -axX -ayT -aza +iNQ +bTq +aAx +qxk +eCm +aCZ aav aav aaa aaa -aaf -lMJ +qxk +vLD aaa aav aav -aIe -aJw -axX -aMg -atF -aMl -aNu -aju +qyp +ixJ +qxk +glg +bTq +dgg +dgr +qcZ aaa aaa anT @@ -123423,28 +123169,28 @@ dnh dnh lNZ dqT -ajk -atJ -awX +pdI +kXU +aAx aaa -axZ -ayZ -aAo +vJQ +den +dev aav aaa aaa -lMJ -aAo +vLD +dev aav aav -aAo -aId -axZ +dev +dfz +vJQ aaa -aMf -aMj -aNt -aNu +aVh +dge +eTm +dgr aaf aaa aaa @@ -123682,26 +123428,26 @@ ack dqT axY axY -atF -aya -aya -azc -aya -aya -aya -aya -aya -aya -aya -aya -aya -aJn -aya -aya -atF +bTq +ili +ili +sef +ili +ili +ili +ili +wEo +ili +ili +ili +ili +giG +ili +ili +bTq axY axY -aNu +dgr aaf aaa aaa @@ -124194,7 +123940,7 @@ aaa aaa aaa lMJ -aju +qcZ axY axY axY @@ -124212,8 +123958,8 @@ axY axY axY axY -aju -aMn +qcZ +vyf aaa aaf aaf diff --git a/_maps/cit_map_files/Mining/Lavaland.dmm b/_maps/cit_map_files/Mining/Lavaland.dmm new file mode 100644 index 0000000000..18aa7d0f98 --- /dev/null +++ b/_maps/cit_map_files/Mining/Lavaland.dmm @@ -0,0 +1,68885 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/closed/indestructible/riveted/boss, +/area/lavaland/surface/outdoors) +"ab" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ac" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile/block{ + dir = 8 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"ad" = ( +/turf/closed/mineral/random/high_chance/volcanic, +/area/lavaland/surface/outdoors) +"ae" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"af" = ( +/obj/structure/necropolis_gate/legion_gate, +/obj/structure/necropolis_arch{ + pixel_y = -40 + }, +/obj/structure/stone_tile/slab, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"ag" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ah" = ( +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ai" = ( +/turf/closed/mineral/random/volcanic, +/area/lavaland/surface/outdoors) +"aj" = ( +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"ak" = ( +/turf/closed/mineral/random/volcanic, +/area/lavaland/surface/outdoors/unexplored/danger) +"al" = ( +/turf/closed/mineral/random/high_chance/volcanic, +/area/lavaland/surface/outdoors/unexplored/danger) +"am" = ( +/turf/closed/mineral/random/volcanic, +/area/lavaland/surface/outdoors/unexplored) +"an" = ( +/turf/closed/mineral/random/labormineral/volcanic, +/area/lavaland/surface/outdoors) +"ap" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/mine/laborcamp) +"aq" = ( +/turf/closed/wall, +/area/mine/laborcamp) +"ar" = ( +/obj/structure/table, +/turf/open/floor/plasteel/white, +/area/mine/laborcamp) +"as" = ( +/obj/structure/table, +/obj/item/storage/firstaid/regular, +/turf/open/floor/plasteel/white, +/area/mine/laborcamp) +"at" = ( +/obj/structure/bed, +/obj/item/bedsheet/medical, +/obj/machinery/camera{ + c_tag = "Labor Camp Medical"; + dir = 8; + network = list("labor") + }, +/turf/open/floor/plasteel/white, +/area/mine/laborcamp) +"au" = ( +/obj/structure/rack, +/obj/item/storage/bag/ore, +/obj/item/pickaxe, +/obj/item/device/flashlight, +/obj/item/clothing/glasses/meson, +/obj/item/device/mining_scanner, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"av" = ( +/obj/structure/rack, +/obj/item/storage/bag/ore, +/obj/item/device/flashlight, +/obj/item/pickaxe, +/obj/item/clothing/glasses/meson, +/obj/item/device/mining_scanner, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"aw" = ( +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/explored) +"ax" = ( +/turf/open/floor/plasteel/white, +/area/mine/laborcamp) +"ay" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/mine/laborcamp) +"az" = ( +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"aA" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"aB" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Infirmary" + }, +/turf/open/floor/plasteel/white, +/area/mine/laborcamp) +"aC" = ( +/obj/structure/closet/crate/internals, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"aD" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/explored) +"aE" = ( +/obj/item/device/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + dir = 2; + name = "Prison Intercom (General)"; + pixel_y = 24; + prison_radio = 1 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"aF" = ( +/obj/machinery/door/airlock{ + name = "Labor Camp Storage" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"aG" = ( +/obj/structure/table, +/obj/item/trash/plate, +/obj/item/kitchen/fork, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"aH" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"aI" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Labor Camp External Access" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"aJ" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"aK" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"aL" = ( +/obj/machinery/door/airlock{ + name = "Vending" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"aM" = ( +/obj/machinery/light/small, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"aN" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"aO" = ( +/obj/machinery/camera{ + c_tag = "Labor Camp External"; + dir = 4; + network = list("labor") + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"aP" = ( +/obj/machinery/vending/sustenance, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"aQ" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"aR" = ( +/obj/machinery/shower{ + dir = 8 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/white, +/area/mine/laborcamp) +"aS" = ( +/obj/machinery/mineral/unloading_machine{ + dir = 1; + icon_state = "unloader-corner"; + input_dir = 1; + output_dir = 2 + }, +/turf/open/floor/plating, +/area/mine/laborcamp) +"aT" = ( +/obj/structure/ore_box, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/explored) +"aU" = ( +/obj/machinery/flasher{ + id = "labor" + }, +/turf/closed/wall, +/area/mine/laborcamp) +"aW" = ( +/obj/machinery/conveyor{ + dir = 2; + id = "gulag" + }, +/turf/open/floor/plating, +/area/mine/laborcamp) +"aX" = ( +/obj/structure/closet/crate, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/explored) +"aY" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/security/glass{ + name = "Labor Camp Shuttle Security Airlock"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"aZ" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "labor"; + name = "Labor Camp Lockdown"; + pixel_y = 28; + req_access_txt = "2" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"ba" = ( +/obj/machinery/door/poddoor/preopen{ + id = "labor"; + name = "labor camp blast door" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"bb" = ( +/obj/machinery/camera{ + c_tag = "Labor Camp Central"; + network = list("labor") + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"bc" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "gulag" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"bd" = ( +/obj/machinery/mineral/processing_unit_console{ + dir = 2; + machinedir = 4 + }, +/turf/closed/wall, +/area/mine/laborcamp) +"be" = ( +/obj/machinery/mineral/processing_unit{ + dir = 1; + output_dir = 2 + }, +/turf/open/floor/plating, +/area/mine/laborcamp) +"bf" = ( +/turf/closed/wall, +/area/mine/eva) +"bg" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/mine/eva) +"bh" = ( +/obj/machinery/computer/shuttle/labor/one_way, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"bi" = ( +/obj/structure/gulag_beacon, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"bj" = ( +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"bk" = ( +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"bl" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "gulag" + }, +/turf/open/floor/plating, +/area/mine/laborcamp) +"bm" = ( +/obj/machinery/conveyor{ + dir = 10; + id = "gulag" + }, +/turf/open/floor/plating, +/area/mine/laborcamp) +"bn" = ( +/obj/structure/table, +/obj/item/pickaxe, +/obj/item/device/gps/mining, +/obj/item/device/gps/mining, +/obj/item/device/gps/mining, +/obj/item/device/gps/mining, +/turf/open/floor/plasteel/purple/side{ + dir = 9 + }, +/area/mine/eva) +"bo" = ( +/obj/machinery/suit_storage_unit/mining, +/turf/open/floor/plasteel/brown{ + dir = 1 + }, +/area/mine/eva) +"bp" = ( +/obj/machinery/suit_storage_unit/mining, +/turf/open/floor/plasteel/purple/side{ + dir = 5 + }, +/area/mine/eva) +"bq" = ( +/turf/closed/wall, +/area/mine/production) +"br" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/mine/production) +"bs" = ( +/obj/machinery/camera{ + c_tag = "EVA"; + dir = 4; + network = list("mine") + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/turf/open/floor/plasteel/brown{ + dir = 8 + }, +/area/mine/eva) +"bt" = ( +/turf/open/floor/plasteel, +/area/mine/eva) +"bu" = ( +/obj/machinery/light_switch{ + pixel_x = 27 + }, +/turf/open/floor/plasteel/brown{ + dir = 4 + }, +/area/mine/eva) +"bv" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/mine/eva) +"bx" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/security/glass{ + name = "Labor Camp Shuttle Prisoner Airlock" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"by" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"bz" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"bA" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Labor Camp Backroom"; + req_access_txt = "2" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"bB" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Labor Camp APC"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"bC" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/computer/shuttle/mining{ + req_access = null + }, +/turf/open/floor/plasteel/purple/side{ + dir = 1 + }, +/area/mine/production) +"bD" = ( +/obj/structure/closet/crate, +/obj/item/dice/d4, +/turf/open/floor/plasteel/brown{ + dir = 1 + }, +/area/mine/production) +"bE" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel/purple/corner, +/area/mine/production) +"bF" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/mine/eva) +"bG" = ( +/obj/structure/table, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/hand_labeler, +/turf/open/floor/plasteel/purple/corner{ + dir = 8 + }, +/area/mine/eva) +"bH" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/mine/eva) +"bI" = ( +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/plasteel/purple/corner, +/area/mine/eva) +"bJ" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/purple/corner{ + dir = 8 + }, +/area/mine/eva) +"bK" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/obj/machinery/shower{ + dir = 8 + }, +/turf/open/floor/plasteel/purple/corner, +/area/mine/eva) +"bL" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Labor Camp Monitoring"; + req_access_txt = "2" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"bM" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Labor Camp Maintenance"; + req_access_txt = "2" + }, +/obj/structure/cable{ + icon_state = "1-10" + }, +/turf/open/floor/plating, +/area/mine/laborcamp) +"bN" = ( +/obj/structure/sign/warning/docking, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/mine/production) +"bO" = ( +/obj/item/device/beacon, +/turf/open/floor/plasteel/purple/corner{ + dir = 8 + }, +/area/mine/production) +"bP" = ( +/turf/open/floor/plasteel, +/area/mine/production) +"bQ" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"bR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/brown{ + dir = 4 + }, +/area/mine/production) +"bS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/mining/glass{ + name = "Mining Station EVA"; + req_access_txt = "54" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"bT" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/brown{ + dir = 8 + }, +/area/mine/eva) +"bU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"bV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"bW" = ( +/turf/open/floor/plasteel/brown{ + dir = 4 + }, +/area/mine/eva) +"bX" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + glass = 1; + name = "Mining External Airlock"; + opacity = 0; + req_access_txt = "54" + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"bY" = ( +/turf/open/floor/plasteel/brown{ + dir = 8 + }, +/area/mine/eva) +"bZ" = ( +/turf/closed/mineral/random/volcanic, +/area/lavaland/surface/outdoors/explored) +"ca" = ( +/turf/closed/wall, +/area/mine/laborcamp/security) +"cb" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"cc" = ( +/obj/structure/chair/office/dark, +/obj/structure/cable{ + icon_state = "1-4" + }, +/mob/living/simple_animal/bot/secbot/beepsky{ + desc = "Powered by the tears and sweat of laborers."; + name = "Prison Ofitser" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"cd" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/pen, +/obj/machinery/power/apc{ + dir = 4; + name = "Labor Camp Security APC"; + pixel_x = 24 + }, +/obj/machinery/camera{ + c_tag = "Labor Camp Monitoring"; + network = list("labor") + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"ce" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "5-6" + }, +/turf/open/floor/plating, +/area/mine/laborcamp) +"cf" = ( +/obj/machinery/power/terminal, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/mine/laborcamp) +"cg" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/mine/laborcamp) +"ch" = ( +/turf/open/floor/plating, +/area/mine/laborcamp) +"cj" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + glass = 1; + name = "Mining Shuttle Airlock"; + opacity = 0 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"ck" = ( +/turf/open/floor/plasteel/brown{ + dir = 8 + }, +/area/mine/production) +"cl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"cm" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"cn" = ( +/turf/open/floor/plasteel/purple/corner{ + dir = 4 + }, +/area/mine/production) +"co" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "Mining EVA APC"; + pixel_x = 1; + pixel_y = -23 + }, +/obj/structure/cable, +/obj/machinery/recharge_station, +/turf/open/floor/plasteel/purple/corner{ + dir = 1 + }, +/area/mine/eva) +"cp" = ( +/obj/machinery/mech_bay_recharge_port, +/obj/structure/cable, +/turf/open/floor/plating, +/area/mine/eva) +"cq" = ( +/turf/open/floor/mech_bay_recharge_floor, +/area/mine/eva) +"cr" = ( +/obj/machinery/computer/mech_bay_power_console, +/turf/open/floor/plasteel/purple/corner{ + dir = 4 + }, +/area/mine/eva) +"cs" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel/purple/corner{ + dir = 1 + }, +/area/mine/eva) +"ct" = ( +/obj/structure/ore_box, +/turf/open/floor/plasteel/purple/corner{ + dir = 4 + }, +/area/mine/eva) +"cu" = ( +/obj/item/pickaxe, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"cv" = ( +/obj/structure/ore_box, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"cw" = ( +/obj/machinery/computer/secure_data, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"cx" = ( +/obj/machinery/computer/security{ + name = "Labor Camp Monitoring"; + network = list("labor") + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"cy" = ( +/obj/machinery/computer/prisoner, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"cz" = ( +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/mine/laborcamp) +"cA" = ( +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-9" + }, +/turf/open/floor/plating, +/area/mine/laborcamp) +"cB" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plating, +/area/mine/laborcamp) +"cC" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/mine/laborcamp) +"cD" = ( +/turf/open/floor/plasteel/purple/corner{ + dir = 1 + }, +/area/mine/production) +"cE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"cF" = ( +/turf/open/floor/plasteel/brown{ + dir = 4 + }, +/area/mine/production) +"cG" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/mine/laborcamp/security) +"cH" = ( +/turf/open/floor/plasteel/purple/corner{ + dir = 8 + }, +/area/mine/production) +"cI" = ( +/turf/open/floor/plasteel/purple/side{ + dir = 4 + }, +/area/mine/production) +"cJ" = ( +/obj/machinery/door/airlock{ + name = "Closet" + }, +/turf/open/floor/plating, +/area/mine/production) +"cK" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/mine/production) +"cL" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/mine/production) +"cM" = ( +/turf/closed/wall, +/area/mine/living_quarters) +"cN" = ( +/obj/structure/sign/warning/electricshock, +/turf/closed/wall, +/area/mine/living_quarters) +"cO" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel/brown{ + dir = 8 + }, +/area/mine/production) +"cP" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 30 + }, +/turf/open/floor/plasteel/brown{ + dir = 4 + }, +/area/mine/production) +"cQ" = ( +/turf/closed/wall/r_wall, +/area/mine/maintenance) +"cR" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/mine/living_quarters) +"cS" = ( +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"cT" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet/crate/secure/loot, +/turf/open/floor/plating, +/area/mine/living_quarters) +"cU" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"cV" = ( +/turf/open/floor/plating, +/area/mine/living_quarters) +"cW" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/mine/living_quarters) +"cX" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Mining Station Starboard Wing APC"; + pixel_x = -27; + pixel_y = 2 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/purple/side{ + dir = 8 + }, +/area/mine/production) +"cY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"cZ" = ( +/obj/machinery/mineral/equipment_vendor, +/turf/open/floor/plasteel/brown{ + dir = 5 + }, +/area/mine/production) +"da" = ( +/obj/machinery/mineral/mint{ + input_dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"db" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"dc" = ( +/obj/structure/closet/crate, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/mine/production) +"dd" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/obj/structure/table, +/obj/item/paper/fluff/stations/lavaland/orm_notice, +/turf/open/floor/plasteel, +/area/mine/production) +"de" = ( +/obj/structure/ore_box, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/mine/production) +"df" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/mine/production) +"dg" = ( +/turf/open/floor/circuit, +/area/mine/maintenance) +"dh" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Mining Communications APC"; + pixel_x = 1; + pixel_y = 25 + }, +/turf/open/floor/plasteel/dark, +/area/mine/maintenance) +"di" = ( +/obj/machinery/telecomms/relay/preset/mining, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/mine/maintenance) +"dj" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/dark, +/area/mine/maintenance) +"dk" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/circuit, +/area/mine/maintenance) +"dl" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/iv_drip, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 1 + }, +/area/mine/living_quarters) +"dm" = ( +/turf/open/floor/plasteel/whiteblue/side{ + dir = 1 + }, +/area/mine/living_quarters) +"dn" = ( +/obj/machinery/cryopod, +/obj/machinery/computer/cryopod{ + pixel_y = 26 + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 5 + }, +/area/mine/living_quarters) +"do" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"dp" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"dq" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"dr" = ( +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 8 + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"ds" = ( +/obj/machinery/mineral/equipment_vendor, +/turf/open/floor/plasteel/purple/side{ + dir = 4 + }, +/area/mine/production) +"du" = ( +/obj/effect/turf_decal/loading_area, +/turf/open/floor/plasteel, +/area/mine/production) +"dv" = ( +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"dw" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/mine/production) +"dx" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/circuit, +/area/mine/maintenance) +"dy" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/mine/maintenance) +"dz" = ( +/obj/machinery/light_switch{ + pixel_y = -25 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/circuit, +/area/mine/maintenance) +"dA" = ( +/obj/machinery/camera{ + c_tag = "Communications Relay"; + dir = 8; + network = list("mine") + }, +/turf/open/floor/circuit, +/area/mine/maintenance) +"dB" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/blood, +/obj/item/reagent_containers/blood{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/reagent_containers/blood/AMinus, +/obj/item/reagent_containers/blood/BMinus{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/reagent_containers/blood/BPlus{ + pixel_x = 1; + pixel_y = 2 + }, +/obj/item/reagent_containers/blood/OMinus, +/obj/item/reagent_containers/blood/OPlus{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/reagent_containers/blood/random, +/obj/item/reagent_containers/blood/random, +/obj/item/reagent_containers/blood/random, +/obj/machinery/camera{ + c_tag = "Sleeper Room"; + dir = 1; + network = list("mine") + }, +/turf/open/floor/plasteel/white, +/area/mine/living_quarters) +"dC" = ( +/turf/open/floor/plasteel/white, +/area/mine/living_quarters) +"dD" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/white, +/area/mine/living_quarters) +"dE" = ( +/obj/structure/table, +/obj/item/storage/firstaid/regular, +/obj/item/storage/firstaid/toxin{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 4 + }, +/area/mine/living_quarters) +"dF" = ( +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"dG" = ( +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"dH" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"dI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"dJ" = ( +/turf/open/floor/plasteel/purple/side{ + dir = 8 + }, +/area/mine/production) +"dK" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Shuttle Docking Foyer"; + dir = 8; + network = list("mine") + }, +/obj/machinery/newscaster{ + pixel_x = 30; + pixel_y = 1 + }, +/turf/open/floor/plasteel/brown{ + dir = 4 + }, +/area/mine/production) +"dL" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/mine/production) +"dM" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/mine/production) +"dN" = ( +/obj/machinery/camera{ + c_tag = "Processing Area Room"; + dir = 8; + network = list("mine") + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = 28 + }, +/turf/open/floor/plasteel/brown{ + dir = 4 + }, +/area/mine/production) +"dO" = ( +/obj/machinery/mineral/unloading_machine{ + dir = 1; + icon_state = "unloader-corner"; + input_dir = 1; + output_dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating, +/area/mine/production) +"dP" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Mining Station Communications"; + req_access_txt = "48" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/mine/maintenance) +"dQ" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/mine/living_quarters) +"dR" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Infirmary" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, +/area/mine/living_quarters) +"dS" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Mining Station Maintenance"; + req_access_txt = "48" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/mine/living_quarters) +"dT" = ( +/turf/open/floor/plasteel/brown/corner{ + dir = 1 + }, +/area/mine/production) +"dU" = ( +/turf/open/floor/plasteel/purple/corner, +/area/mine/production) +"dV" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/mine/production) +"dW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/mine/production) +"dX" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "mining_internal"; + name = "mining conveyor" + }, +/turf/open/floor/plasteel/purple/side{ + dir = 4 + }, +/area/mine/production) +"dY" = ( +/obj/machinery/conveyor{ + dir = 2; + id = "mining_internal" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/mine/production) +"dZ" = ( +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"ea" = ( +/turf/open/floor/plasteel/purple/corner{ + dir = 4 + }, +/area/mine/living_quarters) +"eb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/brown{ + dir = 1 + }, +/area/mine/living_quarters) +"ec" = ( +/turf/open/floor/plasteel/purple/corner{ + dir = 1 + }, +/area/mine/living_quarters) +"ed" = ( +/obj/machinery/camera{ + c_tag = "Crew Area Hallway West"; + network = list("mine") + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"ee" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"ef" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/brown{ + dir = 1 + }, +/area/mine/living_quarters) +"eg" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Mining Station Port Wing APC"; + pixel_x = 1; + pixel_y = 25 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"eh" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"ei" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/brown{ + dir = 1 + }, +/area/mine/living_quarters) +"ej" = ( +/obj/machinery/camera{ + c_tag = "Crew Area Hallway East"; + network = list("mine") + }, +/turf/open/floor/plasteel/purple/corner{ + dir = 1 + }, +/area/mine/living_quarters) +"ek" = ( +/turf/open/floor/plasteel/purple/corner, +/area/mine/living_quarters) +"el" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Processing Area"; + req_access_txt = "48" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"em" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/brown{ + dir = 4 + }, +/area/mine/production) +"en" = ( +/obj/machinery/mineral/processing_unit_console, +/turf/closed/wall, +/area/mine/production) +"eo" = ( +/obj/machinery/mineral/processing_unit{ + dir = 1; + output_dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating, +/area/mine/production) +"ep" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"eq" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"er" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"es" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"et" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"eu" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"ev" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"ew" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/brown{ + dir = 4 + }, +/area/mine/living_quarters) +"ex" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/mining/glass{ + name = "Mining Station Bridge"; + req_access_txt = "48" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"ey" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/brown{ + dir = 8 + }, +/area/mine/living_quarters) +"ez" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"eA" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/mining/glass{ + name = "Mining Station Bridge"; + req_access_txt = "48" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"eB" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/brown{ + dir = 8 + }, +/area/mine/production) +"eC" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"eD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"eE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/brown{ + dir = 4 + }, +/area/mine/production) +"eF" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Processing Area"; + req_access_txt = "48" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"eG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/brown{ + dir = 8 + }, +/area/mine/production) +"eH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/purple/corner, +/area/mine/production) +"eI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/brown, +/area/mine/production) +"eJ" = ( +/turf/open/floor/plasteel/purple/side{ + dir = 6 + }, +/area/mine/production) +"eK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/brown, +/area/mine/living_quarters) +"eL" = ( +/turf/open/floor/plasteel/purple/corner{ + dir = 8 + }, +/area/mine/living_quarters) +"eM" = ( +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"eN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"eO" = ( +/obj/machinery/light/small, +/turf/open/floor/plasteel/purple/corner{ + dir = 4 + }, +/area/mine/living_quarters) +"eP" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"eQ" = ( +/obj/machinery/door/airlock/mining{ + name = "Mining Station Storage"; + req_access_txt = "48" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"eR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/glass{ + name = "Break Room" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"eS" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/turf/open/floor/plasteel/purple/side, +/area/mine/production) +"eT" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/machinery/light, +/turf/open/floor/plasteel/brown, +/area/mine/production) +"eU" = ( +/obj/structure/closet/crate, +/turf/open/floor/plasteel/purple/side, +/area/mine/production) +"eV" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/turf/open/floor/plasteel/brown{ + dir = 6 + }, +/area/mine/production) +"eW" = ( +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"eX" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "mining_internal" + }, +/obj/structure/plasticflaps, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating, +/area/mine/production) +"eY" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "mining_internal" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/mine/production) +"eZ" = ( +/obj/machinery/conveyor{ + dir = 10; + id = "mining_internal" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating, +/area/mine/production) +"fa" = ( +/obj/machinery/mineral/equipment_vendor, +/turf/open/floor/plasteel/brown{ + dir = 9 + }, +/area/mine/living_quarters) +"fb" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/turf/open/floor/plasteel/purple/corner{ + dir = 4 + }, +/area/mine/living_quarters) +"fc" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel/purple/corner{ + dir = 1 + }, +/area/mine/living_quarters) +"fd" = ( +/obj/machinery/camera{ + c_tag = "Storage"; + dir = 2; + network = list("mine") + }, +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel/brown{ + dir = 5 + }, +/area/mine/living_quarters) +"fe" = ( +/obj/structure/bed, +/obj/item/bedsheet/brown, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/carpet, +/area/mine/living_quarters) +"ff" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/mine/living_quarters) +"fg" = ( +/obj/machinery/door/airlock{ + id_tag = "miningdorm1"; + name = "Room 1" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"fh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/brown{ + dir = 8 + }, +/area/mine/living_quarters) +"fi" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"fj" = ( +/obj/machinery/vending/snack, +/turf/open/floor/plasteel/bar, +/area/mine/living_quarters) +"fk" = ( +/turf/open/floor/plasteel/bar, +/area/mine/living_quarters) +"fl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/bar, +/area/mine/living_quarters) +"fm" = ( +/obj/machinery/vending/cigarette, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/bar, +/area/mine/living_quarters) +"fn" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_y = 6 + }, +/turf/open/floor/plasteel/bar, +/area/mine/living_quarters) +"fo" = ( +/obj/structure/ore_box, +/turf/open/floor/plasteel/purple/side{ + dir = 8 + }, +/area/mine/living_quarters) +"fp" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"fq" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = 28 + }, +/turf/open/floor/plasteel/purple/side{ + dir = 4 + }, +/area/mine/living_quarters) +"fr" = ( +/obj/structure/table, +/turf/open/floor/carpet, +/area/mine/living_quarters) +"fs" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "miningdorm1"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/turf/open/floor/carpet, +/area/mine/living_quarters) +"ft" = ( +/obj/machinery/camera{ + c_tag = "Dormitories"; + dir = 4; + network = list("mine") + }, +/turf/open/floor/plasteel/purple/corner{ + dir = 1 + }, +/area/mine/living_quarters) +"fu" = ( +/obj/structure/chair, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/bar, +/area/mine/living_quarters) +"fv" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/turf/open/floor/plasteel/bar, +/area/mine/living_quarters) +"fx" = ( +/obj/structure/ore_box, +/turf/open/floor/plasteel/brown{ + dir = 10 + }, +/area/mine/living_quarters) +"fy" = ( +/obj/machinery/recharge_station, +/turf/open/floor/plasteel/purple/side, +/area/mine/living_quarters) +"fz" = ( +/obj/structure/closet/secure_closet/miner, +/turf/open/floor/plasteel/brown, +/area/mine/living_quarters) +"fA" = ( +/obj/structure/closet/secure_closet/miner, +/turf/open/floor/plasteel/purple/side, +/area/mine/living_quarters) +"fB" = ( +/obj/structure/closet/secure_closet/miner, +/turf/open/floor/plasteel/brown{ + dir = 6 + }, +/area/mine/living_quarters) +"fC" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/bar, +/area/mine/living_quarters) +"fD" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_x = 7; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_x = -1; + pixel_y = 9 + }, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_x = -8 + }, +/turf/open/floor/plasteel/bar, +/area/mine/living_quarters) +"fE" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/bar, +/area/mine/living_quarters) +"fF" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/bar, +/area/mine/living_quarters) +"fG" = ( +/obj/structure/table, +/obj/item/storage/box/donkpockets, +/turf/open/floor/plasteel/bar, +/area/mine/living_quarters) +"fH" = ( +/obj/machinery/door/airlock{ + id_tag = "miningdorm2"; + name = "Room 2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"fI" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel/bar, +/area/mine/living_quarters) +"fJ" = ( +/obj/machinery/camera{ + c_tag = "Crew Area"; + dir = 1; + network = list("mine") + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = -32 + }, +/obj/machinery/light, +/turf/open/floor/plasteel/bar, +/area/mine/living_quarters) +"fK" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel/bar, +/area/mine/living_quarters) +"fL" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/turf/open/floor/plasteel/bar, +/area/mine/living_quarters) +"fM" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "miningdorm2"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/turf/open/floor/carpet, +/area/mine/living_quarters) +"fN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"fO" = ( +/obj/machinery/door/airlock{ + id_tag = "miningdorm3"; + name = "Room 3" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"fP" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "miningdorm3"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/turf/open/floor/carpet, +/area/mine/living_quarters) +"fQ" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored/danger) +"fR" = ( +/turf/closed/mineral/random/high_chance/volcanic, +/area/lavaland/surface/outdoors/unexplored) +"fS" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"fT" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile/block{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"fV" = ( +/turf/closed/indestructible/riveted/boss/see_through, +/area/lavaland/surface/outdoors) +"fW" = ( +/obj/structure/necropolis_gate/locked, +/obj/structure/stone_tile/slab, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"gj" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/center, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"gk" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/center, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"go" = ( +/obj/structure/stone_tile/block, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"gr" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"gs" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"gy" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"gB" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"gC" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"gG" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"gM" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"gO" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"gP" = ( +/obj/structure/stone_tile/slab, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"gR" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile/block{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"gY" = ( +/obj/docking_port/stationary{ + area_type = /area/lavaland/surface/outdoors; + dir = 8; + dwidth = 2; + height = 5; + id = "laborcamp_away"; + name = "labor camp"; + width = 9 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/explored) +"hg" = ( +/obj/structure/stone_tile/surrounding, +/obj/structure/stone_tile/center/cracked, +/mob/living/simple_animal/hostile/megafauna/legion, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"hs" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"hH" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"hJ" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"id" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"ir" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 5 + }, +/obj/structure/stone_tile/slab/cracked{ + dir = 10 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"it" = ( +/obj/structure/stone_tile/block, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"iu" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"iw" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/slab/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ix" = ( +/obj/structure/stone_tile/block/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"iy" = ( +/obj/structure/stone_tile/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"iC" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/structure/stone_tile/block/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"iK" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"iX" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"iY" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ja" = ( +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"jb" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"jg" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"jk" = ( +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"jl" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/center/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"jm" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"jq" = ( +/obj/structure/stone_tile, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"js" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"jx" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"jF" = ( +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/center/cracked, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"jH" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/center/cracked, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"jL" = ( +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"jN" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/center/cracked, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"jQ" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"jR" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"jS" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"kg" = ( +/obj/structure/fluff/drake_statue, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"kj" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"kl" = ( +/obj/structure/fluff/drake_statue/falling, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ko" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ky" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"kB" = ( +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/center/cracked, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"kD" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/center, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"kH" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/center/cracked, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"kJ" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/center, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"kM" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"kN" = ( +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"kR" = ( +/obj/structure/stone_tile/slab/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"le" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"lg" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"lj" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ll" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"lp" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"lq" = ( +/obj/structure/stone_tile/block/cracked, +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"lr" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/block{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ls" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"lu" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"lv" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"lw" = ( +/obj/structure/stone_tile/cracked, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"ly" = ( +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"lz" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/block{ + dir = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"lD" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"lE" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"lF" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"lG" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/block, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"lI" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"lP" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"lQ" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 6 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"lR" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"lS" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"lW" = ( +/obj/structure/stone_tile/block/cracked, +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"lZ" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"ma" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/block{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mb" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/block{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"mk" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/block{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ml" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"mn" = ( +/obj/structure/stone_tile/block/cracked, +/obj/structure/stone_tile/block{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mq" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"mr" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"ms" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"mt" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mu" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mv" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"mw" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"mx" = ( +/obj/structure/stone_tile, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"my" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mA" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mB" = ( +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mC" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"mD" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mE" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mF" = ( +/obj/structure/stone_tile/block/cracked, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mG" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mH" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mI" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mJ" = ( +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mK" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mL" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mM" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mN" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mO" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mP" = ( +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mQ" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile/block{ + dir = 4 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"mS" = ( +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"mV" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"mW" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/block{ + dir = 8 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"mX" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"mY" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"mZ" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"nb" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"nc" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"ne" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"nf" = ( +/obj/structure/stone_tile/slab/cracked, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"ng" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors) +"Uq" = ( +/obj/docking_port/stationary{ + area_type = /area/lavaland/surface/outdoors; + dir = 2; + dwidth = 11; + height = 22; + id = "whiteship_lavaland"; + name = "lavaland wastes"; + width = 35 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Wp" = ( +/obj/docking_port/stationary{ + area_type = /area/lavaland/surface/outdoors; + dir = 8; + dwidth = 3; + height = 5; + id = "mining_away"; + name = "lavaland mine"; + width = 7 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Wt" = ( +/obj/effect/baseturf_helper/lava_land/surface, +/turf/closed/wall, +/area/mine/laborcamp/security) +"Wz" = ( +/obj/effect/mapping_helpers/planet_z, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"WA" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock{ + name = "Labor Camp External Access" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"WB" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/security/glass{ + name = "Labor Camp Shuttle Security Airlock"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"WC" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/security/glass{ + name = "Labor Camp Shuttle Prisoner Airlock" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"WD" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + glass = 1; + name = "Mining External Airlock"; + opacity = 0; + req_access_txt = "54" + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"WE" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + glass = 1; + name = "Mining Shuttle Airlock"; + opacity = 0 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"WF" = ( +/obj/effect/baseturf_helper/lava_land/surface, +/turf/closed/wall, +/area/mine/laborcamp) +"WH" = ( +/obj/effect/baseturf_helper/lava_land/surface, +/turf/closed/wall, +/area/mine/eva) +"WI" = ( +/obj/effect/baseturf_helper/lava_land/surface, +/turf/closed/wall, +/area/mine/production) +"WJ" = ( +/obj/effect/baseturf_helper/lava_land/surface, +/turf/closed/wall/r_wall, +/area/mine/maintenance) +"WK" = ( +/obj/effect/baseturf_helper/lava_land/surface, +/turf/closed/wall, +/area/mine/living_quarters) + +(1,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +Wz +"} +(2,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(3,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ad +ad +ad +ad +ad +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(4,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ai +ai +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(5,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ix +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +an +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ai +ai +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(6,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +aj +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +al +al +al +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +aj +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +an +an +an +an +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ai +aD +ab +aj +aj +aj +aj +aj +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(7,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +aj +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +ak +ak +ak +ak +ak +ak +al +aj +aj +aj +aj +aj +aj +aj +aj +an +an +an +an +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aw +aw +ab +aD +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +"} +(8,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ad +aj +ab +ab +ad +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +ad +an +an +an +an +an +an +an +an +an +an +an +an +ab +ab +ab +an +an +ab +ab +an +an +an +an +an +an +an +an +an +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +ab +aj +aj +aj +aw +aw +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +"} +(9,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ai +aj +aj +ab +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +aj +ab +ab +aj +aj +aj +aj +aw +aw +aj +aj +aw +aw +aj +aj +aw +aj +ab +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +aj +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(10,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ix +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ai +aj +ab +ab +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +aj +aj +aj +aw +aw +aw +aw +aw +aw +aw +aw +aw +aw +aw +aw +aw +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +aj +"} +(11,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ai +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +ab +ab +an +an +an +an +an +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aw +aw +aD +aw +aw +aw +aw +aw +aw +aw +aw +aw +aw +aw +aw +aw +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +ab +aj +aj +aj +aj +aj +aj +aj +"} +(12,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +iX +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ai +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aj +aj +aj +aj +aj +aj +aj +aj +an +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aw +aw +aw +aD +aw +aw +aw +aw +aw +aD +aw +aw +aD +aw +aw +aw +aj +aw +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(13,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +iY +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ai +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +ab +ab +aj +aj +aj +aj +aj +aj +ab +an +an +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +ab +aj +aw +aw +aw +aD +aD +aD +aD +aD +aD +aD +aD +aD +aw +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +aj +aj +"} +(14,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ai +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +ab +ab +an +an +an +an +an +an +an +an +aj +aj +aj +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +aj +aj +aw +aw +aw +aw +aD +aD +aD +aD +aD +aD +aD +aD +aD +aw +aw +ab +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +aj +ab +aj +aj +aj +aj +aj +"} +(15,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +ai +aj +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aw +aw +aw +aw +aD +aD +aD +aD +aD +aD +aD +aD +aD +aw +aw +aw +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +"} +(16,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ir +ab +ab +ab +ab +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +ab +al +al +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ai +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aw +aw +aw +aD +aD +aD +aD +aD +aD +aD +aD +aD +aw +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +aj +aj +"} +(17,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gP +ad +ad +ab +ab +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +ab +aj +al +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ai +aj +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aw +aw +aD +aD +aD +aD +aD +aD +aD +gY +aD +aD +aD +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +aj +aj +ab +aj +aj +aj +aj +"} +(18,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +it +ab +aj +aj +aj +aj +ab +ab +ab +aj +aj +aj +aj +aj +ab +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +ai +aj +aj +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +ab +ab +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aq +aq +aq +aq +aq +aY +aq +aq +aq +bx +aq +aw +aw +aj +aj +aj +aj +aj +ai +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(19,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +aj +aj +aj +aj +ab +ab +ab +aj +aj +aj +aj +aj +ab +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +ai +aj +aj +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +ab +ab +an +ab +aj +aj +aj +aj +aj +ab +aq +aG +aK +aP +aq +aZ +aq +bh +aq +aJ +aq +aD +bZ +aj +aj +aD +aj +ab +ai +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(20,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +aj +aj +aj +aj +ab +ab +ab +ab +aj +aj +aj +aj +ab +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +ai +ai +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +ab +aj +aj +aj +ab +ab +aq +aH +az +aQ +aq +WB +aq +bi +WF +WC +aq +bZ +bZ +bZ +aj +aj +aj +ai +ai +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(21,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +aj +aj +aj +aj +ab +ab +ab +ab +aj +aj +aj +aj +ab +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +ai +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +ap +ap +ap +aq +aq +aq +aL +aq +aq +ba +aq +bj +az +az +aq +ca +Wt +ca +aj +aj +aj +ai +ad +ai +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(22,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ix +ab +ab +ab +aj +aj +aj +ab +ab +ab +ab +aj +aj +aj +aj +ab +ab +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +ai +aj +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +ap +ar +ar +aq +az +az +az +az +az +az +az +az +az +az +aq +cb +cw +cG +aj +aj +aj +aj +ai +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(23,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ab +ab +ab +ab +aj +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +ab +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +ai +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aq +as +ax +aB +az +az +az +az +aU +bb +az +az +az +by +bL +cc +cx +cG +aj +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(24,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +ai +aj +aj +aj +aj +aj +ab +ab +ab +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aq +at +ay +aq +aE +az +az +az +az +az +aQ +bk +az +bz +aq +cd +cy +cG +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(25,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ix +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +ai +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aq +aq +aq +aq +aq +az +az +aR +az +bc +aq +bl +aq +bA +aq +aq +aq +aq +aj +aj +aj +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(26,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ad +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aq +au +au +au +aq +az +aM +aq +aq +bd +aq +bl +aq +bz +aq +ce +cz +aq +aj +aj +aj +ab +ab +ab +ab +ab +ab +aj +aj +aj +ai +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(27,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +jq +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aq +av +az +az +aF +az +aN +aS +aW +be +aW +bm +aq +bB +bM +cf +cA +aq +aj +aj +ab +ad +ai +ab +ab +ab +ai +ab +ab +ab +ad +ai +ai +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(28,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +ai +aj +aj +ai +ab +ab +aj +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aq +aq +aA +aC +aq +aI +aq +aq +aq +aq +aq +aq +aq +aq +aq +cg +cB +aq +aj +cQ +cQ +cQ +cQ +cR +cR +cR +cM +cR +cR +cR +cM +ai +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(29,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +it +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +ai +ai +am +ai +ab +ai +aj +aj +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aq +aq +aq +aq +az +aq +aT +aX +aX +aD +aD +aD +aD +aq +ch +cC +aq +aj +cQ +dg +dg +cQ +dZ +dZ +dZ +cM +fa +fo +fx +cM +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(30,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +ab +ab +aj +ab +ab +ab +ab +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +ai +ai +aj +aj +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aq +aJ +aq +aT +aD +aD +aD +aD +aD +aD +aq +aq +aq +aq +aj +cQ +dh +dx +cQ +ea +ep +ek +cM +fb +dZ +fy +cR +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(31,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +aj +aj +aj +ab +ab +ab +aj +aj +aj +aj +ab +ab +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +ai +aj +aj +ai +aj +aj +aj +aj +aj +an +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aD +aq +WA +aq +aT +aD +aD +aD +aD +aD +aj +aj +aj +aj +aj +ab +cQ +di +dy +dP +eb +eq +eK +eQ +ef +fp +fz +cR +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(32,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +aj +aj +aj +ab +ab +ab +aj +aj +aj +aj +aj +ab +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +ai +ai +ai +ab +ab +aj +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aD +aD +aO +aD +aD +aD +aD +aD +aj +aj +aj +aj +aj +ab +ad +cQ +dj +dz +cQ +ec +er +eL +cM +fc +dZ +fA +cR +ab +ai +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(33,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +ai +ab +ai +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aD +aD +aD +aD +aD +aD +aD +aD +aD +aj +aj +aj +aj +ab +ai +cQ +dk +dA +WJ +ed +er +eM +cM +fd +fq +fB +cM +ai +ad +ai +ai +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(34,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ja +ab +ab +ab +aj +aj +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +ad +aj +aj +aj +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aD +aD +aD +aD +aD +aD +aD +aj +aj +aj +aj +ab +ab +cQ +cQ +cQ +cQ +ee +er +dZ +cM +cM +cM +cM +cM +cM +cM +cM +cM +cM +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(35,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ad +ab +ab +ab +aj +aj +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +ai +aj +aj +aj +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aD +aD +aD +aD +aD +aD +aD +aj +aj +aj +aj +aj +ab +cM +dl +dB +cM +dZ +er +dZ +cM +fe +fr +cM +fe +fr +cM +fe +fr +cM +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(36,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +it +ab +aj +aj +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +ai +aj +aj +aj +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aD +aD +aD +aD +aD +aD +aD +aD +aj +aj +aj +aj +ab +cR +dm +dC +dQ +ea +er +dZ +cM +ff +fs +cM +ff +fM +cM +ff +fP +cM +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(37,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +aj +aj +aj +ab +ab +ab +aj +aj +ab +aj +ab +ab +ab +ab +ab +ab +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +ai +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aD +aD +aT +an +aD +aD +aj +aj +aj +aj +ab +cR +dm +dD +dR +ef +es +dZ +WK +fg +cM +cM +fH +cM +cM +fO +cM +cM +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(38,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +aj +aj +aj +ab +ab +ab +ab +aj +aj +aj +aj +ab +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +ai +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +an +an +an +ab +ab +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aD +aD +aD +aj +aj +ai +ad +cM +dn +dE +dQ +ec +er +dZ +eL +fh +ft +eL +fh +ec +eL +fh +ec +cR +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(39,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +aj +aj +aj +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +ai +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aj +aj +ai +cM +cM +cM +cM +cM +eg +et +eN +eN +fi +eN +eN +fi +fN +eN +fi +fp +cR +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(40,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +ai +aj +aj +ai +ai +ai +aj +aj +aj +aj +aj +aj +aj +ab +ab +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aD +aj +aj +cM +cS +do +dF +cM +eh +er +dZ +cM +cM +dQ +dQ +cM +cM +cM +cR +cR +cM +ai +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(41,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +jq +ab +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +ai +ai +am +am +am +ai +aj +aj +aj +aj +aj +aj +aj +ab +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aD +aD +aj +aj +cN +cT +cV +dG +cM +ea +er +eM +cM +fj +fk +fk +fI +cM +ab +ab +ab +ai +ad +ai +ai +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +"} +(42,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +iu +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +ai +aj +aj +aj +aj +aj +aj +aj +aj +ab +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aD +aD +aj +aj +cM +cU +dp +dH +dS +ei +eu +ek +dQ +fk +fk +fC +fk +cM +ab +aj +ab +ab +ai +ai +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(43,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +ai +aj +aj +aj +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aj +aj +aj +aj +aj +ab +ab +ab +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aD +aD +aj +ab +cM +cV +dq +dI +cM +ej +ev +eK +eR +fl +fu +fD +fJ +cM +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(44,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +an +an +an +an +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +ab +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aD +aD +aj +aj +ab +cM +cW +dr +dr +cM +dZ +er +eL +dQ +fk +fk +fE +fK +cM +ad +aj +aj +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(45,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +ai +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +an +an +an +an +an +an +an +an +an +an +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +an +an +ab +aj +aj +ab +an +an +an +an +an +an +an +an +an +an +an +an +an +ab +aj +aj +an +an +an +an +an +aD +aD +aD +aD +aj +aj +aj +aj +cM +cM +cM +cM +cM +dZ +er +dZ +cM +fm +fk +fF +fk +cM +ai +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(46,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ja +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +ai +ab +aj +aj +aj +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +an +an +an +an +an +aj +aj +aj +aj +aj +aj +aj +aD +aD +aD +aD +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +cR +dZ +er +dZ +cM +fn +fv +fG +fL +cM +ai +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +aj +"} +(47,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ai +ab +ab +ab +ai +am +ai +aj +aj +ai +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +ab +cR +ek +ew +eO +cM +cR +cR +cR +cR +cM +ai +ai +ai +aj +ab +aj +aj +ab +ab +aj +ab +ab +ab +aj +aj +aj +aj +aj +aj +"} +(48,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +ai +ai +ai +am +am +am +ai +ai +am +am +ai +ai +aj +aj +aj +aj +aj +aj +ai +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +ab +aj +aj +aj +aj +aj +cR +cR +ex +cR +cR +ab +ab +ab +ab +ai +ai +ai +ab +aj +aj +aj +aj +ab +ab +ab +ai +ad +ad +ab +ab +aj +aj +aj +aj +"} +(49,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +ai +ai +ai +ai +ai +ai +am +am +ai +ai +aj +aj +aj +aj +ad +ab +ab +ab +ai +aj +aj +aj +aj +aj +aj +aj +ai +ai +ai +ai +ai +ai +ai +aj +aj +aj +aj +aj +ai +ai +ai +ai +ai +ai +ai +ab +ab +ai +ai +ai +ai +aj +aj +aj +aj +ai +ai +aj +aj +aj +aj +aj +aj +aj +ai +ai +ai +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +cR +ey +cR +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ad +ad +ad +ad +ad +ai +ai +aj +aj +aj +"} +(50,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +it +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ai +ai +ai +am +ai +ai +ai +am +ai +ai +ai +ai +ai +ai +ai +am +am +am +am +am +am +am +ai +ai +ab +ab +ai +am +am +am +am +am +am +am +ai +ai +am +am +am +am +ai +ab +ab +ab +ai +am +ai +ai +ai +ai +ai +ai +ai +am +ai +ab +aj +aj +aj +aj +aj +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +cR +er +cR +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +ab +ab +ad +ad +ad +ad +ad +ad +ad +ad +ab +aj +aj +"} +(51,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ai +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ai +ai +am +am +am +am +am +am +am +am +am +ai +ab +aj +aj +aj +aj +aj +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +cR +er +cR +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ad +ad +ad +ad +ad +ad +ad +ab +aj +aj +"} +(52,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +aj +aj +ab +ab +aj +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +cR +er +cR +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ad +ad +ad +ad +ad +ad +ad +ab +aj +aj +"} +(53,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +aj +ab +ab +aj +aj +aj +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +ab +br +ez +br +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ad +ad +ai +ad +ab +ab +aj +aj +"} +(54,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +Wp +ab +ab +ab +ab +aj +aj +ab +br +ez +br +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ab +aj +aj +aj +aj +"} +(55,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +jx +ad +ad +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +aj +ab +aj +aj +aj +aj +aj +ab +ab +bN +cj +br +ab +ab +aj +aj +aj +ab +br +ez +br +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +aj +aj +aj +aj +aj +"} +(56,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ai +ai +ai +ai +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +aj +aj +aj +aj +aj +aj +ab +br +bP +br +ab +aj +aj +aj +aj +ab +br +bR +br +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +"} +(57,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ad +ai +ai +ai +ai +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +ai +ab +aj +aj +aj +aj +aj +aj +br +br +WE +br +br +ab +aj +aj +ab +br +br +eA +br +br +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +"} +(58,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ad +ai +ai +ai +ai +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +ai +ai +ai +aj +aj +aj +bq +br +bO +ck +cD +br +bq +bq +bq +bq +br +cH +eB +cD +br +bq +am +am +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(59,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ad +ad +ad +jq +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +ai +aj +aj +aj +ab +bq +bC +bP +cl +bP +cH +cO +cX +ck +dJ +dT +bP +ez +bP +eS +bq +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +"} +(60,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +aj +ab +aj +aj +ab +ab +aj +ab +aj +ab +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +ai +aj +aj +aj +aj +ab +br +bD +bQ +cm +cE +cE +cE +cY +cE +cE +cE +cE +eC +eP +eT +bq +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(61,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +ai +aj +aj +aj +aj +ab +ab +br +bE +bR +cn +cF +cI +cP +cn +bP +bP +bP +bP +eD +bP +eU +br +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(62,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +ai +aj +aj +ai +ab +bf +bf +bf +bF +bS +bF +bf +cJ +bq +cZ +ds +dK +dU +cF +eE +cn +eV +br +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(63,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +ai +ai +ai +ab +bf +bn +bs +bG +bT +co +bf +cK +bq +bq +br +bq +dV +el +eF +dV +bq +bq +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(64,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +bg +bo +bt +bt +bU +cp +bf +cL +bq +da +du +dL +cH +ck +eG +cD +bP +br +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(65,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +aj +ab +ab +aj +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +ai +aj +aj +ab +bg +bo +bt +bH +bV +cq +WH +bq +WI +db +bP +bP +bP +bP +eH +cF +eW +bq +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(66,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +aj +aj +ab +bf +bp +bu +bI +bW +cr +bf +ad +bq +dc +bP +dM +dW +dW +eI +bq +eX +bq +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +"} +(67,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +aj +aj +ab +bf +bf +bf +bg +bX +bg +bf +ai +bq +dd +bP +dN +dX +em +eJ +dV +eY +bq +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +"} +(68,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +jb +ab +ab +ab +ab +aj +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +aj +aj +ab +ab +ab +bf +bJ +bY +cs +bf +ai +bq +de +dv +bq +dV +en +dV +dV +eY +bq +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +"} +(69,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +aj +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ai +aj +aj +ab +ab +bf +bK +bW +ct +bf +ai +bq +df +dw +dO +dY +eo +dY +dY +eZ +bq +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(70,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +aj +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ai +ai +aj +aj +ab +bf +bg +WD +bg +bf +ai +bq +bq +bq +bq +bq +bq +bq +bq +bq +bq +ab +ab +ab +aj +aj +aj +aj +ab +aj +aj +aj +ab +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +"} +(71,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +bv +ab +ab +ab +bv +ai +ai +ab +ab +aj +aj +aj +aj +ab +ab +ab +ab +ab +ab +aj +aj +ab +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(72,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +aj +aj +aj +aj +ab +ab +ab +aj +aj +aj +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +ai +ai +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +"} +(73,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +iw +ad +ad +ab +ab +ab +ab +ab +aj +aj +aj +aj +ab +ab +ab +aj +ab +aj +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ai +ai +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +aj +aj +ab +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +ab +ab +ab +aj +aj +aj +aj +"} +(74,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ai +ab +ai +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +aj +aj +ab +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +ab +ab +ab +aj +aj +aj +aj +"} +(75,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ai +ai +ab +ab +ab +aj +ab +ab +ab +aj +aj +aj +ab +ab +ab +aj +aj +aj +ab +ab +ab +aj +aj +aj +aj +"} +(76,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ai +ab +ab +ab +ab +ab +ab +ai +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +ai +ai +ai +ai +ai +ab +ab +aj +ab +ab +ab +aj +aj +aj +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +"} +(77,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +ab +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +ai +ab +ab +ai +ab +ab +ab +ab +ai +ai +ab +ab +ab +ab +ai +ai +ai +ab +ab +ab +ab +ab +ab +ab +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ab +aj +ab +ab +ab +ab +ab +aj +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +"} +(78,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +ai +ai +ai +ab +ab +ab +ab +ab +ai +ai +ab +ab +ab +ai +ai +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +ai +ai +ai +aj +aj +aj +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +"} +(79,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ad +ad +ad +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +ai +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +ab +ab +ab +ab +ab +ab +ab +aj +ab +aj +aj +aj +aj +"} +(80,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ad +ai +ai +ai +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +ai +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +ai +ai +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +"} +(81,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ad +ai +ai +ai +ad +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +ai +ai +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +"} +(82,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ai +ai +ai +ad +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +ai +ai +ai +ab +ab +ab +ab +ab +ab +ab +ai +ai +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +"} +(83,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ad +ad +ix +ab +aj +aj +aj +aj +aj +aj +aj +ab +aj +ab +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ai +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +ai +ai +ai +ab +aj +aj +aj +aj +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +"} +(84,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ai +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +am +am +am +ai +aj +aj +aj +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +"} +(85,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ai +ai +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +am +am +ai +aj +aj +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +"} +(86,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +aj +ab +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ai +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +am +ai +aj +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +"} +(87,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ix +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +ab +ab +ab +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +ab +ab +ab +ai +am +ai +ai +ai +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +"} +(88,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +jb +ab +ab +ab +ab +ab +ab +ab +aj +ab +aj +ab +ab +ab +aj +ab +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +ai +ai +am +ai +ai +ab +ai +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +"} +(89,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +ab +ab +aj +ab +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +ai +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +am +am +am +am +am +am +ai +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +"} +(90,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +ab +ab +ab +ab +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +"} +(91,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +ab +ab +ab +ab +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +"} +(92,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +iy +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +ab +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +"} +(93,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +ab +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +ai +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +"} +(94,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +"} +(95,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ix +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +"} +(96,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +ab +ab +ab +ab +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +ab +ab +"} +(97,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +iy +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +ab +ab +ab +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +ai +ab +ab +ai +ai +ab +ab +ab +ab +ab +ai +ab +ab +ab +ab +ab +ab +ai +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +"} +(98,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ai +ai +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +ab +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +ai +ab +ab +ai +ab +ab +ab +ab +ab +ab +ai +ai +ab +ab +ab +ab +ab +ab +ai +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +"} +(99,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ai +ai +ad +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +ai +ab +ab +ai +ab +ab +ab +ab +ab +ab +ai +am +ai +ai +ai +ai +ab +ab +ai +ai +ai +am +am +ai +ai +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +"} +(100,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ad +ai +ai +ad +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ai +ab +ab +ai +am +am +am +am +am +ai +ab +ab +ab +ab +ai +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +"} +(101,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ad +ad +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +aj +ab +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ai +ai +ab +ai +am +am +ai +ai +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +Uq +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +"} +(102,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ai +am +ai +am +am +ai +cu +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +"} +(103,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ai +am +am +am +am +ai +cv +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +"} +(104,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ai +am +am +am +am +ai +ab +ab +ab +ab +ab +ai +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +"} +(105,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ad +jb +jb +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ai +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ai +am +ai +ai +ai +ai +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +"} +(106,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ai +am +am +am +am +am +am +am +ai +ai +ab +ab +ai +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +"} +(107,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ai +ab +am +am +am +am +am +am +am +am +am +ai +ai +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +"} +(108,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +ai +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +"} +(109,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ix +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +"} +(110,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +"} +(111,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ad +ad +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +"} +(112,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ix +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +"} +(113,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +ab +ab +ab +ab +"} +(114,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +ab +aj +aj +"} +(115,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ad +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +"} +(116,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +it +ab +ab +ab +ab +ad +ai +ai +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +ab +aj +aj +"} +(117,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ad +ad +ai +ai +ad +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +"} +(118,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +it +ky +ad +ai +ai +ad +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +"} +(119,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ad +ai +ai +jq +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +"} +(120,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +kN +aj +aj +aj +aj +aj +aj +mD +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ai +ai +ab +ab +ab +ab +ab +ab +aj +ab +ab +aj +aj +aj +aj +"} +(121,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ae +jg +gB +gB +js +ab +ab +ab +ab +aj +aj +mu +aj +aj +aj +ab +mA +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ai +ab +ab +ab +ab +aj +aj +ab +aj +aj +aj +aj +"} +(122,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +iC +gr +gs +gr +gr +kR +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +jQ +ak +ak +ak +ak +al +iy +ab +ab +mK +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +"} +(123,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gR +ag +jF +gM +kB +jm +ix +ab +jS +aj +aj +aj +aj +lI +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ab +ab +jx +ab +ab +mM +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +ab +ab +aj +aj +ab +aj +aj +aj +aj +"} +(124,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gG +go +kg +hs +gr +hH +ab +ab +aj +ly +aj +aj +aj +lw +aj +aj +ls +aj +aj +jx +jS +iy +al +ak +al +jq +ab +kN +ab +ab +jx +ab +ab +mN +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +ai +ab +aj +aj +ab +aj +aj +ab +ab +aj +aj +aj +"} +(125,1,1) = {" +aa +aa +aa +mS +mV +mq +mV +nc +aa +aa +fV +fV +gr +jH +gO +kD +ag +le +aa +aa +ls +aj +aj +aj +aj +aj +aj +aj +aj +aj +lI +aa +aa +jS +ab +ab +ja +ab +jx +ab +jq +ab +kN +ab +ab +ab +mO +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +aj +aj +aj +aj +aj +aj +aj +ab +aj +aj +aj +"} +(126,1,1) = {" +aa +aa +fV +gj +gC +mr +nb +ne +aa +aa +fV +fV +jk +gr +gr +gr +gr +gs +aa +lp +lp +lz +lp +lF +lp +lP +lS +lp +lZ +lS +lS +lp +aa +mE +ab +ab +ab +ab +kN +ab +ab +ab +ab +ab +jS +ab +ab +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +aj +"} +(127,1,1) = {" +mQ +mQ +fW +mQ +mW +hg +ac +nf +ac +ac +ac +af +lg +fT +kj +fT +fT +lg +gP +lq +lu +lq +lD +lG +lu +lQ +lu +lW +ma +lq +mk +mn +kR +mF +ab +mG +ab +ja +ab +jx +ab +ab +kN +ab +ab +jq +jR +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +am +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(128,1,1) = {" +aa +aa +fV +gk +mX +mZ +nc +ng +aa +aa +fV +fV +jl +gr +ah +gG +gs +gy +aa +lr +lv +lv +lE +lv +lE +lR +lv +lv +mb +lR +ml +lR +aa +it +ab +ab +jx +jR +ab +ab +ab +mL +al +iY +ab +ab +jQ +ab +jx +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +am +am +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(129,1,1) = {" +aa +aa +aa +mS +mY +ms +hJ +id +aa +aa +fV +fV +jm +jL +gM +kH +gr +hH +aa +aa +lw +aj +aj +aj +lI +aj +aj +aj +aj +lw +aj +aa +aa +jq +ab +ab +ab +jQ +ab +mI +ab +ab +al +al +ab +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +am +fR +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(130,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gr +go +kl +hs +gG +lj +ab +ab +aj +aj +mv +my +lw +aj +aj +aj +lI +aj +aj +kN +jq +jS +jx +jS +ab +ab +ab +ab +ab +ab +jR +ak +jS +kN +ab +ab +jR +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +am +am +fS +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +"} +(131,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gR +ah +jN +gO +kJ +gr +it +ab +ab +aj +aj +aj +ab +jQ +aj +jx +ab +ly +aj +aj +ab +ab +ak +al +ja +ab +mH +ab +ab +mJ +al +ak +ak +al +ab +ab +mP +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +fS +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(132,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gR +gr +gr +gr +jm +gP +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +mB +aj +aj +aj +ab +ja +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +am +fS +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(133,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ae +gr +jm +ko +iu +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +iy +aj +aj +aj +kN +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +am +am +fS +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +"} +(134,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +jq +ab +ab +ab +ab +ab +kN +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +am +am +am +am +fS +aj +ab +aj +ab +aj +aj +aj +aj +aj +aj +"} +(135,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +jR +mt +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +fQ +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(136,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +jq +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +mC +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +fQ +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(137,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +iK +ab +jQ +jq +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +fQ +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(138,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(139,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(140,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +lI +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(141,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +iy +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(142,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(143,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(144,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +jq +ab +ab +ab +ab +ab +ab +ab +aj +aj +mw +ab +lI +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(145,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +iy +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +mx +ab +ab +mx +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(146,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(147,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +ab +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(148,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +jR +ad +ab +ab +ll +ab +ab +aj +aj +aj +ab +ab +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(149,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(150,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +aj +aj +aj +ab +aj +aj +aj +aj +aj +aj +ab +ab +ab +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(151,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ix +ab +ab +ab +ad +ad +ad +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(152,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(153,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(154,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +jS +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(155,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(156,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(157,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +iy +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(158,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(159,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(160,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(161,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +iy +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(162,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(163,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(164,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +ab +ab +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(165,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +ab +ab +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(166,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +jS +ad +ad +ab +ab +aj +aj +aj +aj +ab +ab +ab +aj +ab +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(167,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ai +ai +ai +ai +ab +aj +aj +aj +ab +ab +ab +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +ab +aj +ab +aj +aj +aj +aj +aj +aj +"} +(168,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +kM +ai +ai +ai +ai +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +fQ +fQ +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(169,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ad +ai +ai +ai +ai +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +fQ +fQ +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +"} +(170,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ad +ad +ai +ai +ai +ai +ad +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(171,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ad +ai +ai +ai +ai +ad +ad +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +"} +(172,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ad +ai +ai +ai +ai +ad +ad +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +aj +"} +(173,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +it +ab +ab +ab +ad +ai +ai +ai +ai +ad +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(174,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ad +ai +ai +ai +ai +ad +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(175,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ab +ab +kN +ai +ai +ai +ai +jq +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(176,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +it +ab +ai +ai +ai +ai +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(177,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ad +ad +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(178,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(179,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(180,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +iy +ab +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(181,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(182,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(183,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(184,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ad +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(185,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ai +jS +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(186,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ai +ad +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +fQ +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(187,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ai +ad +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +fQ +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(188,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ai +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(189,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +iy +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(190,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +iy +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +ab +aj +aj +ab +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(191,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(192,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(193,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(194,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(195,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(196,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(197,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(198,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +iy +ab +ad +ad +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(199,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +iy +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(200,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(201,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(202,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(203,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ad +iy +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(204,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(205,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +it +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(206,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +it +ab +ab +ab +ab +ab +ab +ab +ai +ai +ab +ab +ab +aj +aj +aj +aj +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +fQ +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(207,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ad +ai +ai +ab +ab +ab +aj +ab +aj +ab +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(208,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ai +ai +ad +ab +aj +aj +aj +aj +aj +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(209,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(210,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(211,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +it +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(212,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(213,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(214,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +fQ +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(215,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(216,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(217,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(218,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +js +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(219,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(220,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ai +ai +ai +ai +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +fQ +aj +aj +aj +aj +aj +aj +aj +aj +"} +(221,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ai +ai +ai +ai +ad +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +fQ +aj +aj +aj +aj +aj +aj +aj +aj +"} +(222,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ai +ai +ai +ai +ad +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +fQ +aj +aj +aj +aj +aj +aj +aj +aj +"} +(223,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ai +ai +ai +ai +ad +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(224,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ai +ai +ai +ai +ad +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +fQ +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(225,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gP +ai +ai +ai +ai +ad +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +fQ +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(226,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ai +ai +ai +ai +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +al +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(227,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ai +ai +ai +ai +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +ab +ab +ab +al +al +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(228,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +al +al +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +fQ +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(229,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +ab +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +fQ +fQ +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(230,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +fQ +fQ +fQ +fQ +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(231,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +fQ +fQ +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(232,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +it +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(233,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(234,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(235,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(236,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(237,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gP +js +ab +ad +ad +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(238,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +ab +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(239,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +aj +aj +aj +aj +ab +ab +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(240,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +aj +ab +aj +ab +ab +ab +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(241,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +ab +ab +ab +ab +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(242,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(243,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(244,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(245,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(246,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(247,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(248,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(249,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(250,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ab +ab +ad +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(251,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +al +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(252,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(253,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ad +ad +js +ab +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(254,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +js +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} +(255,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +"} diff --git a/_maps/cit_map_files/OmegaStation/OmegaStation.dmm b/_maps/cit_map_files/OmegaStation/OmegaStation.dmm index 8234e0bf62..853f932cab 100644 --- a/_maps/cit_map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/cit_map_files/OmegaStation/OmegaStation.dmm @@ -517,7 +517,6 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/machinery/light, /turf/open/floor/plasteel/vault/side{ dir = 1 }, @@ -550,8 +549,8 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/vault/side{ - dir = 5 +/turf/open/floor/plasteel/vault{ + dir = 8 }, /area/bridge) "abd" = ( @@ -568,8 +567,9 @@ dir = 4 }, /obj/effect/landmark/event_spawn, +/obj/machinery/holopad, /turf/open/floor/plasteel/vault{ - dir = 5 + dir = 8 }, /area/bridge) "abe" = ( @@ -582,7 +582,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/light, /turf/open/floor/plasteel/vault/side{ dir = 1 }, @@ -680,18 +679,14 @@ /turf/open/floor/plasteel, /area/bridge) "abm" = ( -/obj/machinery/status_display, -/turf/closed/wall, -/area/bridge) -"abn" = ( /obj/structure/cable/white{ icon_state = "0-2" }, /obj/machinery/modular_computer/console/preset/command{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/darkpurple/side{ + dir = 8 }, /area/bridge) "abo" = ( @@ -703,6 +698,8 @@ /obj/structure/cable/white{ icon_state = "1-2" }, +/obj/structure/table/wood, +/obj/item/storage/lockbox/medal, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -794,39 +791,34 @@ /turf/closed/wall, /area/bridge) "abB" = ( -/obj/structure/table/wood, -/obj/item/folder/blue, -/obj/item/pen, +/obj/machinery/computer/robotics{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, /obj/machinery/firealarm{ dir = 8; pixel_x = -24 }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/vault/side{ - dir = 4 +/turf/open/floor/plasteel/darkpurple/side{ + dir = 8 }, /area/bridge) "abC" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/bridge) "abD" = ( /obj/structure/cable/white{ icon_state = "4-8" }, -/turf/open/floor/plasteel/vault/side{ - dir = 4 +/turf/open/floor/plasteel/vault{ + dir = 8 }, /area/bridge) "abE" = ( @@ -836,38 +828,34 @@ /obj/structure/cable/white{ icon_state = "1-4" }, -/obj/machinery/holopad, -/turf/open/floor/plasteel/vault, -/area/bridge) -"abF" = ( /obj/structure/table/wood, -/obj/item/lighter, -/obj/structure/cable/white{ - icon_state = "2-8" - }, -/obj/structure/cable/white{ - icon_state = "1-2" - }, +/obj/item/paper_bin, +/obj/item/pen, /turf/open/floor/plasteel/vault{ dir = 8 }, /area/bridge) -"abG" = ( -/obj/structure/table/wood, -/obj/item/storage/secure/briefcase{ - pixel_x = 5; - pixel_y = 5 +"abF" = ( +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, +/area/bridge) +"abG" = ( +/obj/machinery/computer/mecha{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 }, -/obj/item/storage/lockbox/medal, /obj/machinery/airalarm{ dir = 8; pixel_x = 24 }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/vault/side{ - dir = 8 +/turf/open/floor/plasteel/darkpurple/side{ + dir = 4 }, /area/bridge) "abH" = ( @@ -1126,11 +1114,10 @@ /turf/open/floor/carpet, /area/bridge) "acj" = ( -/obj/structure/table/wood, -/obj/item/storage/fancy/donut_box, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/item/device/beacon, /turf/open/floor/carpet, /area/bridge) "ack" = ( @@ -1141,6 +1128,9 @@ dir = 4 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/structure/cable/white{ + icon_state = "2-8" + }, /turf/open/floor/plasteel/grimy, /area/bridge) "acl" = ( @@ -1495,7 +1485,7 @@ dir = 4 }, /turf/open/floor/plasteel/vault/side{ - dir = 1 + dir = 5 }, /area/bridge) "acY" = ( @@ -1531,13 +1521,6 @@ /area/bridge) "ada" = ( /obj/structure/table/wood, -/obj/item/clothing/mask/cigarette/cigar/cohiba{ - pixel_x = 3 - }, -/obj/item/clothing/mask/cigarette/cigar/havana{ - pixel_x = -3 - }, -/obj/item/clothing/mask/cigarette/cigar, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -1545,6 +1528,14 @@ c_tag = "Bridge Center"; dir = 1 }, +/obj/item/storage/fancy/donut_box, +/obj/item/clothing/mask/cigarette/cigar/havana{ + pixel_x = -3 + }, +/obj/item/clothing/mask/cigarette/cigar/cohiba{ + pixel_x = 3 + }, +/obj/item/clothing/mask/cigarette/cigar, /turf/open/floor/carpet, /area/bridge) "adb" = ( @@ -1564,6 +1555,9 @@ /obj/structure/cable/white{ icon_state = "1-2" }, +/obj/structure/cable/white{ + icon_state = "2-8" + }, /turf/open/floor/plasteel/grimy, /area/bridge) "add" = ( @@ -1966,10 +1960,6 @@ /turf/closed/wall, /area/crew_quarters/heads/hop) "adZ" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "cargounload" - }, /obj/item/device/radio/intercom{ name = "Station Intercom"; pixel_x = -28 @@ -1980,6 +1970,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 2 }, +/obj/machinery/conveyor/inverted{ + dir = 5; + id = "cargounload" + }, /turf/open/floor/plasteel, /area/quartermaster/storage) "aea" = ( @@ -2258,6 +2252,9 @@ uses = 10 }, /obj/effect/turf_decal/bot, +/obj/structure/cable/white{ + icon_state = "2-8" + }, /turf/open/floor/plasteel/vault, /area/ai_monitored/nuke_storage) "aeF" = ( @@ -2801,8 +2798,9 @@ /turf/open/floor/plasteel/neutral, /area/quartermaster/storage) "afH" = ( -/obj/machinery/conveyor_switch{ - id = "cargounload" +/obj/machinery/conveyor_switch/oneway{ + id = "cargounload"; + dir = 8 }, /turf/open/floor/plasteel/brown{ dir = 4 @@ -3637,15 +3635,15 @@ /turf/open/floor/plasteel, /area/quartermaster/storage) "ahn" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "cargoload" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line{ dir = 9 }, /obj/effect/turf_decal/stripes/corner, +/obj/machinery/conveyor{ + dir = 5; + id = "cargoload" + }, /turf/open/floor/plating, /area/quartermaster/storage) "aho" = ( @@ -3972,6 +3970,19 @@ /area/ai_monitored/nuke_storage) "ahT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/flasher{ + id = "AI"; + pixel_x = 9; + pixel_y = -24 + }, +/obj/item/device/radio/intercom{ + broadcasting = 1; + frequency = 1447; + listening = 0; + name = "AI Intercom"; + pixel_x = -4; + pixel_y = -28 + }, /turf/open/floor/circuit/green, /area/ai_monitored/nuke_storage) "ahU" = ( @@ -4284,18 +4295,6 @@ name = "AI Vault Chamber"; req_access_txt = "16" }, -/obj/machinery/flasher{ - id = "AI"; - pixel_x = 26; - pixel_y = -10 - }, -/obj/item/device/radio/intercom{ - broadcasting = 1; - frequency = 1447; - listening = 0; - name = "AI Intercom"; - pixel_x = 28 - }, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -4397,12 +4396,12 @@ }, /area/quartermaster/storage) "aiL" = ( -/obj/machinery/conveyor_switch{ - id = "cargoload" - }, /obj/machinery/light{ dir = 1 }, +/obj/machinery/conveyor_switch/oneway{ + id = "cargoload" + }, /turf/open/floor/plasteel/brown{ dir = 5 }, @@ -6964,8 +6963,6 @@ }, /obj/item/gun/energy/e_gun/dragnet, /obj/item/gun/energy/e_gun/dragnet, -/obj/item/gun/energy/pumpaction/blaster, -/obj/item/gun/energy/pumpaction/blaster, /turf/open/floor/plasteel/red/corner{ dir = 8 }, @@ -7143,6 +7140,7 @@ "anN" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, +/obj/item/device/beacon, /turf/open/floor/plasteel, /area/teleporter) "anP" = ( @@ -7245,6 +7243,7 @@ "anW" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, +/obj/item/device/beacon, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "anX" = ( @@ -8996,10 +8995,8 @@ }, /area/quartermaster/miningdock) "arr" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped{ - dir = 8; - filter_type = "n2o"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2o{ + dir = 8 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ @@ -10896,10 +10893,8 @@ }, /area/engine/atmos) "avy" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped{ - dir = 4; - filter_type = "o2"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/o2{ + dir = 4 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ @@ -12402,10 +12397,8 @@ /turf/open/floor/plating, /area/hallway/secondary/exit) "azl" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped{ - dir = 4; - filter_type = "n2"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2{ + dir = 4 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ @@ -13253,16 +13246,15 @@ icon_state = "1-2" }, /obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 5 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 8 }, /turf/open/floor/plasteel, /area/engine/atmos) "aBB" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "External Waste Ports to Filter"; - on = 1 + name = "External Waste Ports to Filter" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ @@ -13731,15 +13723,15 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /turf/open/floor/plasteel/vault/side{ dir = 1 }, /area/engine/atmos) "aCF" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Air to External Air Ports"; - on = 1 + name = "Air to External Air Ports" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/camera{ @@ -14056,7 +14048,6 @@ height = 18; id = "emergency_home"; name = "OmegaStation emergency evac bay"; - turf_type = /turf/open/space; width = 30 }, /turf/open/space/basic, @@ -14097,6 +14088,7 @@ dir = 1 }, /obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /turf/open/floor/plasteel, /area/engine/atmos) "aDu" = ( @@ -14543,10 +14535,8 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, /obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel, /area/engine/engineering) "aEz" = ( @@ -14558,6 +14548,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, /turf/open/floor/plasteel, /area/engine/engineering) "aEA" = ( @@ -14998,6 +14991,7 @@ /obj/effect/turf_decal/bot, /obj/item/areaeditor/blueprints, /obj/item/tank/jetpack/suit, +/obj/item/clothing/shoes/magboots/advance, /turf/open/floor/plasteel/vault/side{ dir = 8 }, @@ -15069,16 +15063,19 @@ dir = 10 }, /obj/item/clothing/glasses/meson/engine, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/engineering) "aFA" = ( /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/engineering) "aFB" = ( @@ -15325,6 +15322,7 @@ /area/hallway/primary/starboard) "aGa" = ( /obj/effect/landmark/event_spawn, +/obj/item/device/beacon, /turf/open/floor/plasteel/neutral, /area/hallway/secondary/exit) "aGb" = ( @@ -16444,10 +16442,9 @@ /turf/open/floor/engine, /area/engine/engineering) "aIl" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Gas to Filter"; - on = 1 + name = "Gas to Filter" }, /obj/structure/cable{ icon_state = "4-8" @@ -16991,13 +16988,13 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "aJo" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/white{ icon_state = "0-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, +/obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating, /area/engine/gravity_generator) "aJp" = ( @@ -17077,13 +17074,13 @@ /turf/open/floor/engine, /area/engine/engineering) "aJA" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/white{ icon_state = "0-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating, /area/engine/engineering) "aJB" = ( @@ -18071,11 +18068,11 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "aLL" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/white, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, +/obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating, /area/engine/gravity_generator) "aLM" = ( @@ -18124,7 +18121,8 @@ /turf/closed/wall/r_wall/rust, /area/engine/supermatter) "aLR" = ( -/obj/machinery/door/airlock/atmos/glass{ +/obj/machinery/door/airlock/atmos/glass/critical{ + heat_proof = 1; name = "Supermatter Chamber"; req_access_txt = "24" }, @@ -18172,8 +18170,8 @@ /turf/open/floor/engine, /area/engine/engineering) "aLX" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/white, +/obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating, /area/engine/engineering) "aLY" = ( @@ -18406,9 +18404,7 @@ /area/tcommsat/server) "aMK" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/tcommsat/server) "aML" = ( @@ -18984,7 +18980,10 @@ /turf/open/floor/engine, /area/engine/engineering) "aOa" = ( -/obj/machinery/power/supermatter_shard/crystal/engine, +/obj/machinery/power/supermatter_crystal/shard/engine{ + anchored = 1; + moveable = 0 + }, /turf/open/floor/engine, /area/engine/supermatter) "aOb" = ( @@ -19843,6 +19842,10 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/tcommsat/server) +"aPH" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/cryopod) "aPI" = ( /obj/structure/cable/white{ icon_state = "1-2" @@ -20482,7 +20485,7 @@ /area/medical/morgue) "aRd" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Morgue"; req_access_txt = "5" }, @@ -20663,16 +20666,10 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/fans/tiny, /turf/open/floor/plasteel/vault/side, /area/tcommsat/server) "aRE" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 2; - min_temperature = 80; - on = 1; - target_temperature = 80 - }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel/vault/side, /area/tcommsat/server) @@ -20699,10 +20696,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 2; - name = "Gas to Cooling Loop"; - on = 1 + name = "Gas to Cooling Loop" }, /turf/open/floor/engine, /area/engine/engineering) @@ -20784,10 +20780,9 @@ /turf/open/floor/engine, /area/engine/engineering) "aRQ" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Gas to Cooling Loop"; - on = 1 + name = "Gas to Cooling Loop" }, /turf/open/floor/engine, /area/engine/engineering) @@ -21243,9 +21238,8 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/thermomachine/heater{ - dir = 1; - on = 1 +/obj/machinery/atmospherics/components/unary/thermomachine/heater/on{ + dir = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -21266,11 +21260,8 @@ /turf/open/floor/plasteel/dark, /area/engine/engineering) "aSW" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1; - min_temperature = 80; - on = 1; - target_temperature = 80 +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + dir = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -21851,6 +21842,10 @@ c_tag = "Genetics Cloning"; dir = 4 }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, /turf/open/floor/plasteel/whiteblue/corner{ dir = 1 }, @@ -22209,7 +22204,7 @@ /area/medical/morgue) "aVf" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Morgue"; req_access_txt = "5" }, @@ -23578,12 +23573,7 @@ /turf/open/floor/plasteel, /area/medical/medbay/zone3) "aXV" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 2; - min_temperature = 80; - on = 1; - target_temperature = 80 - }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -23779,11 +23769,8 @@ /turf/open/floor/plasteel/whitepurple/corner, /area/science/research) "aYq" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1; - min_temperature = 80; - on = 1; - target_temperature = 80 +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + dir = 1 }, /obj/machinery/firealarm{ dir = 8; @@ -24864,6 +24851,9 @@ /area/medical/medbay/zone3) "bay" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/defibrillator_mount/loaded{ + pixel_y = -32 + }, /turf/open/floor/plasteel/whiteblue/corner{ dir = 8 }, @@ -25800,6 +25790,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, +/obj/structure/closet/crate/bin, /turf/open/floor/plasteel, /area/science/robotics/lab) "bcz" = ( @@ -25821,11 +25812,11 @@ /turf/open/floor/plasteel, /area/science/robotics/lab) "bcC" = ( -/obj/structure/closet/crate/bin, /obj/structure/extinguisher_cabinet{ pixel_x = 24 }, /obj/effect/turf_decal/bot, +/obj/machinery/aug_manipulator, /turf/open/floor/plasteel/vault/side{ dir = 8 }, @@ -27277,7 +27268,7 @@ /turf/closed/wall, /area/chapel/main) "bfz" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Crematorium"; req_access_txt = "27" }, @@ -27783,7 +27774,7 @@ /area/chapel/main) "bgC" = ( /obj/structure/table/wood/fancy, -/obj/item/spellbook/oneuse/smoke, +/obj/item/book/granter/spell/smoke, /obj/item/nullrod, /obj/item/organ/heart, /obj/item/reagent_containers/food/drinks/bottle/holywater, @@ -28147,7 +28138,7 @@ /turf/closed/wall, /area/chapel/main) "bhr" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Crematorium"; req_access_txt = "27" }, @@ -28219,7 +28210,7 @@ /area/chapel/main) "bhy" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel Hall" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -28800,7 +28791,7 @@ /turf/open/floor/plasteel/grimy, /area/chapel/main) "biH" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel Quarters"; req_access_txt = "27" }, @@ -28844,7 +28835,7 @@ /area/chapel/main) "biM" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel Office"; req_access_txt = "27" }, @@ -29286,11 +29277,8 @@ }, /area/science/xenobiology) "bjH" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1; - min_temperature = 80; - on = 1; - target_temperature = 80 +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + dir = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -29851,7 +29839,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "blA" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Mass Driver Room"; req_access_txt = "27" }, @@ -30346,18 +30334,6 @@ /obj/structure/grille, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"btj" = ( -/obj/docking_port/stationary{ - dir = 2; - dwidth = 4; - height = 17; - id = "arrivals_stationary"; - name = "omega arrivals"; - roundstart_template = /datum/map_template/shuttle/arrival/delta; - width = 9 - }, -/turf/open/space/basic, -/area/space) "btk" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -30513,17 +30489,6 @@ dir = 5 }, /area/tcommsat/server) -"buV" = ( -/obj/structure/cable/white{ - icon_state = "0-2" - }, -/obj/machinery/modular_computer/console/preset/research{ - dir = 8 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/bridge) "buW" = ( /turf/closed/wall/r_wall, /area/engine/supermatter) @@ -30566,7 +30531,6 @@ height = 13; id = "ferry_home"; name = "port bay 2"; - turf_type = /turf/open/space; width = 5 }, /turf/open/space/basic, @@ -30631,14 +30595,8 @@ /turf/closed/mineral/random/labormineral, /area/asteroid/nearstation) "bxj" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/closed/wall/r_wall, -/area/tcommsat/server) -"bxk" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 + dir = 10 }, /turf/closed/wall/r_wall, /area/tcommsat/server) @@ -30997,9 +30955,6 @@ dir = 1 }, /area/engine/atmos) -"bSm" = ( -/turf/closed/wall, -/area/crew_quarters/cryopod) "bYE" = ( /obj/structure/sign/warning/fire, /obj/machinery/atmospherics/pipe/simple/general/visible{ @@ -31122,6 +31077,17 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) +"cKy" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/structure/cable/white, +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/ai_monitored/nuke_storage) "cRz" = ( /obj/machinery/button/door{ id = "supplybridge"; @@ -31256,9 +31222,6 @@ }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) -"dTj" = ( -/turf/open/floor/plasteel/purple, -/area/crew_quarters/cryopod) "dWc" = ( /turf/closed/mineral/random/labormineral, /area/space) @@ -31333,6 +31296,13 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) +"ezi" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/flora/ausbushes/ppflowers, +/turf/open/floor/grass, +/area/hallway/secondary/entry) "ezP" = ( /obj/machinery/atmospherics/pipe/simple/general/visible, /obj/effect/spawner/structure/window/plasma/reinforced, @@ -31460,6 +31430,18 @@ /obj/item/wrench, /turf/open/space, /area/space/nearstation) +"fsl" = ( +/obj/docking_port/stationary{ + dir = 2; + dwidth = 2; + height = 16; + id = "arrivals_stationary"; + name = "omega arrivals"; + roundstart_template = /datum/map_template/shuttle/arrival/omega; + width = 5 + }, +/turf/open/space/basic, +/area/space) "fsJ" = ( /obj/structure/cable{ icon_state = "4-8" @@ -31532,9 +31514,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) -"fSE" = ( -/turf/closed/wall/r_wall, -/area/space) "fWz" = ( /obj/machinery/door/airlock/external{ name = "External Docking Port"; @@ -31573,6 +31552,11 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/neutral/corner, /area/hallway/primary/port) +"ggq" = ( +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/bridge) "gii" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -31599,11 +31583,6 @@ dir = 5 }, /area/engine/atmos) -"gxL" = ( -/obj/structure/cable/white, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/hallway/primary/central) "gyV" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 @@ -31644,10 +31623,8 @@ }, /area/engine/atmos) "gVX" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped{ - dir = 8; - filter_type = "co2"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2{ + dir = 8 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ @@ -31725,6 +31702,18 @@ }, /turf/open/floor/engine/co2, /area/engine/atmos) +"hQh" = ( +/obj/structure/cable/white{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + areastring = "/area/crew_quarters/cryopod"; + dir = 2; + name = "Cryogenics APC"; + pixel_y = -24 + }, +/turf/open/floor/plasteel/purple, +/area/crew_quarters/cryopod) "hUG" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -31779,18 +31768,6 @@ heat_capacity = 1e+006 }, /area/hallway/primary/aft) -"ilY" = ( -/obj/structure/cable/white{ - icon_state = "0-8" - }, -/obj/machinery/power/apc{ - areastring = "/area/crew_quarters/cryopod"; - dir = 2; - name = "Cryogenics APC"; - pixel_y = -24 - }, -/turf/open/floor/plasteel/purple, -/area/crew_quarters/cryopod) "iqC" = ( /obj/machinery/air_sensor/atmos/carbon_tank, /turf/open/floor/engine/co2, @@ -31809,14 +31786,18 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "iIj" = ( -/obj/machinery/atmospherics/components/trinary/mixer/flipped{ - dir = 4; - node1_concentration = 0.8; - node2_concentration = 0.2; - on = 1 +/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped{ + dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmos) +"iJz" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/grass, +/area/hallway/secondary/entry) "iJY" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/structure/cable{ @@ -31997,6 +31978,9 @@ }, /turf/closed/wall/r_wall/rust, /area/engine/atmos) +"jIn" = ( +/turf/closed/wall, +/area/crew_quarters/cryopod) "kaA" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 @@ -32099,6 +32083,21 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) +"luP" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/flora/ausbushes/ywflowers, +/turf/open/floor/grass, +/area/hallway/secondary/entry) +"lvt" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/vacuum, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating, +/area/quartermaster/storage) "lvw" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible, /obj/effect/decal/cleanable/dirt, @@ -32180,6 +32179,13 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"lTY" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/flora/ausbushes/ywflowers, +/turf/open/floor/grass, +/area/hallway/secondary/entry) "lUu" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/machinery/light/small, @@ -32283,6 +32289,10 @@ /obj/item/paper/guides/jobs/hydroponics, /turf/open/floor/plasteel/neutral, /area/hydroponics) +"mLI" = ( +/obj/machinery/cryopod, +/turf/open/floor/plasteel/purple, +/area/crew_quarters/cryopod) "mQi" = ( /turf/closed/wall/rust, /area/maintenance/starboard/central) @@ -32457,6 +32467,17 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel, /area/engine/atmos) +"oKz" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 9 + }, +/area/bridge) "oOk" = ( /turf/open/floor/engine/plasma, /area/engine/atmos) @@ -32533,9 +32554,6 @@ dir = 5 }, /area/science/xenobiology) -"psC" = ( -/turf/closed/wall, -/area/hallway/primary/central) "pvX" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/orange/visible, @@ -32573,6 +32591,13 @@ heat_capacity = 1e+006 }, /area/hallway/primary/starboard/fore) +"pEA" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/flora/ausbushes/grassybush, +/turf/open/floor/grass, +/area/hallway/secondary/entry) "pEH" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, @@ -32600,6 +32625,13 @@ /obj/structure/grille, /turf/open/space/basic, /area/space/nearstation) +"qcg" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/flora/ausbushes/grassybush, +/turf/open/floor/grass, +/area/hallway/secondary/entry) "qdt" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -32788,6 +32820,11 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/engine/atmos) +"rTn" = ( +/obj/structure/cable/white, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/primary/central) "rVj" = ( /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos/air_output{ dir = 1 @@ -32827,10 +32864,10 @@ dir = 4 }, /area/hallway/primary/starboard) -"spW" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/cryopod) +"spw" = ( +/obj/machinery/computer/bank_machine, +/turf/open/floor/circuit/green, +/area/ai_monitored/nuke_storage) "sqz" = ( /turf/closed/wall, /area/hallway/primary/starboard) @@ -32860,7 +32897,6 @@ height = 17; id = "syndicate_sw"; name = "southwest of station"; - turf_type = /turf/open/space; width = 23 }, /turf/open/space, @@ -32868,20 +32904,6 @@ "swv" = ( /turf/closed/wall/r_wall/rust, /area/bridge) -"swx" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/structure/cable/white{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/vault/side{ - dir = 9 - }, -/area/bridge) "swy" = ( /turf/open/floor/plasteel/vault/side{ dir = 8 @@ -32896,14 +32918,6 @@ "swC" = ( /turf/closed/wall/r_wall/rust, /area/crew_quarters/heads/captain/private) -"swD" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/vault/side{ - dir = 8 - }, -/area/bridge) "swF" = ( /obj/structure/sign/warning/securearea, /turf/closed/wall/rust, @@ -33040,6 +33054,12 @@ /obj/structure/sign/warning/vacuum, /turf/closed/wall/rust, /area/maintenance/starboard) +"sCb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/medical/medbay/zone3) "sCr" = ( /obj/structure/cable/white{ icon_state = "1-2" @@ -34634,6 +34654,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/item/device/beacon, /turf/open/floor/plasteel/vault/side{ dir = 5 }, @@ -34672,10 +34693,9 @@ /area/ai_monitored/turret_protected/aisat_interior) "sNf" = ( /obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Waste Out"; - on = 1 + name = "Waste Out" }, /obj/structure/cable/yellow{ icon_state = "1-8" @@ -34871,6 +34891,10 @@ }, /turf/open/floor/plasteel/vault, /area/ai_monitored/turret_protected/aisat_interior) +"sNz" = ( +/obj/item/device/beacon, +/turf/open/floor/carpet, +/area/crew_quarters/lounge) "sNA" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -35307,6 +35331,13 @@ "sPY" = ( /turf/open/floor/plating, /area/maintenance/starboard/aft) +"sSy" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/flora/ausbushes/ppflowers, +/turf/open/floor/grass, +/area/hallway/secondary/entry) "tac" = ( /obj/structure/grille, /obj/machinery/meter, @@ -35363,10 +35394,7 @@ dir = 8 }, /area/engine/atmos) -"txm" = ( -/obj/machinery/computer/cryopod{ - pixel_x = 28 - }, +"tAC" = ( /turf/open/floor/plasteel/purple, /area/crew_quarters/cryopod) "tKM" = ( @@ -35691,6 +35719,9 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) +"vGz" = ( +/turf/closed/wall, +/area/hallway/primary/central) "vJk" = ( /obj/machinery/atmospherics/pipe/simple/yellow/visible, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ @@ -35717,10 +35748,6 @@ "vMb" = ( /turf/open/floor/engine/n2o, /area/engine/atmos) -"vMJ" = ( -/obj/machinery/cryopod, -/turf/open/floor/plasteel/purple, -/area/crew_quarters/cryopod) "vVA" = ( /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 @@ -35779,14 +35806,32 @@ /obj/structure/lattice/catwalk, /turf/open/floor/plating/airless, /area/space/nearstation) +"wkO" = ( +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/machinery/modular_computer/console/preset/research{ + dir = 8 + }, +/turf/open/floor/plasteel/darkpurple/side{ + dir = 4 + }, +/area/bridge) "wqL" = ( /obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmos) +"wSl" = ( +/obj/machinery/computer/cryopod{ + pixel_x = 28 + }, +/turf/open/floor/plasteel/purple, +/area/crew_quarters/cryopod) "wUF" = ( -/obj/machinery/door/airlock/atmos/glass{ +/obj/machinery/door/airlock/atmos/glass/critical{ + heat_proof = 1; name = "Supermatter Chamber"; req_access_txt = "24" }, @@ -35805,6 +35850,13 @@ }, /turf/open/floor/plasteel, /area/science/xenobiology) +"wWj" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/grass, +/area/hallway/secondary/entry) "wWz" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ dir = 4 @@ -35851,18 +35903,6 @@ /turf/open/floor/plasteel, /area/engine/atmos) "xtL" = ( -/obj/machinery/embedded_controller/radio/airlock_controller{ - name = "Incinerator Access Console"; - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_access_control"; - interior_door_tag = "incinerator_airlock_interior"; - pixel_x = 8; - pixel_y = -24; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor"; - req_access_txt = "12" - }, /obj/machinery/button/ignition{ id = "Incinerator"; pixel_x = 8; @@ -35931,10 +35971,8 @@ /turf/open/floor/plasteel/neutral/corner, /area/hallway/primary/port) "xEQ" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped{ - dir = 8; - filter_type = "plasma"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/plasma{ + dir = 8 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ @@ -35973,6 +36011,18 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, +/obj/machinery/embedded_controller/radio/airlock_controller{ + airpump_tag = "incinerator_airlock_pump"; + exterior_door_tag = "incinerator_airlock_exterior"; + id_tag = "incinerator_airlock_control"; + interior_door_tag = "incinerator_airlock_interior"; + name = "Incinerator Access Console"; + pixel_x = -8; + pixel_y = 35; + req_access_txt = "12"; + sanitize_external = 1; + sensor_tag = "incinerator_airlock_sensor" + }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "yba" = ( @@ -64425,7 +64475,7 @@ sIu aJj aKs aLG -bxk +aMJ aNT aOv buC @@ -69030,7 +69080,7 @@ swZ agF agF agF -fSE +agF swZ agF auE @@ -73941,9 +73991,9 @@ aQf nxA aSh aSh -aUn +aSh aVf -aWb +sCb aSh aSh aXR @@ -74464,7 +74514,7 @@ bxT aYL aZH bay -aSi +aSh aUn aWb bdT @@ -74741,10 +74791,10 @@ aaa bgU bkj bgU -aae -aaa -aaa -aae +bgU +bgU +bgU +bgU bgU bkj bgU @@ -74998,10 +75048,10 @@ aae bgU bki bgU -bgU -bgU -bgU -bgU +sSy +lTY +wWj +qcg bgU bki bgU @@ -76283,10 +76333,10 @@ aae bgU bki bgU -bgU -bgU -bgU -bgU +iJz +pEA +ezi +luP bgU bki bgU @@ -76540,10 +76590,10 @@ aaa bgU btl bgU -aae -aaa -aaa -aae +bgU +bgU +bgU +bgU bgU btl bgU @@ -77234,7 +77284,7 @@ aar aaD aaQ acX -abn +abo abC ach acY @@ -77306,7 +77356,7 @@ bgU aaa aaa aaa -aaa +fsl aaa aaa aaa @@ -77491,7 +77541,7 @@ aas aaE aaR abc -abo +ggq abD aci acZ @@ -77755,7 +77805,7 @@ ada adR aeC sOA -agi +spw aha ahS aiA @@ -77798,7 +77848,7 @@ sEG aTA aUy aVq -aUy +sNz aWR tWh aYd @@ -77819,7 +77869,7 @@ blv bgU aaa aaa -btj +aaa aaa aaa aaa @@ -78004,9 +78054,9 @@ aal aau aaG aaR -swx -swy -swD +abc +ggq +abD aci adb sOx @@ -78261,12 +78311,12 @@ aak aav aaH aaQ -acX -buV +oKz +swy abF ack adc -adP +cKy aeE afr afr @@ -78519,7 +78569,7 @@ aaw aaI aaS abe -abm +wkO abG acl swK @@ -78535,7 +78585,7 @@ akz als aml and -psC +vGz aoS apY ara @@ -78791,8 +78841,8 @@ ajx akA alt amm -ilY -bSm +hQh +jIn aoT apZ ara @@ -79046,10 +79096,10 @@ agl abq ajy akB -gxL -dTj -dTj -spW +rTn +tAC +tAC +aPH aoU aqa arg @@ -79303,10 +79353,10 @@ ahX aiC ajz akC -gxL -vMJ -txm -spW +rTn +mLI +wSl +aPH aoV aqb arh @@ -84182,7 +84232,7 @@ aeX adp agC ahr -adq +lvt aae aae aae diff --git a/_maps/cit_map_files/PubbyStation/PubbyStation.dmm b/_maps/cit_map_files/PubbyStation/PubbyStation.dmm index e4a519b3ed..af527e89c3 100644 --- a/_maps/cit_map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/cit_map_files/PubbyStation/PubbyStation.dmm @@ -2,207 +2,6 @@ "aaa" = ( /turf/open/space/basic, /area/space) -"aab" = ( -/turf/closed/wall, -/area/crew_quarters/cryopod) -"aac" = ( -/obj/machinery/power/apc{ - areastring = "/area/crew_quarters/cryopod"; - dir = 1; - name = "Crew Cryogenics APC"; - pixel_y = 24 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) -"aad" = ( -/obj/machinery/computer/cryopod{ - pixel_y = 24 - }, -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) -"aae" = ( -/obj/machinery/cryopod, -/obj/machinery/light/small/built{ - dir = 4 - }, -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) -"aaf" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) -"aag" = ( -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) -"aah" = ( -/obj/machinery/cryopod, -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) -"aai" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/stairs, -/area/crew_quarters/cryopod) -"aaj" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) -"aak" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"aal" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"aam" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"aan" = ( -/obj/machinery/field/generator{ - anchored = 1; - state = 2 - }, -/turf/open/floor/plating/airless, -/area/space) -"aao" = ( -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/power/tesla_coil, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aap" = ( -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/machinery/power/tesla_coil, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aaq" = ( -/turf/open/space/basic, -/area/space/nearstation) -"aar" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating/airless, -/area/space) -"aas" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/space) -"aat" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating/airless, -/area/space) -"aau" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/space) -"aav" = ( -/obj/machinery/the_singularitygen/tesla, -/turf/open/floor/plating/airless, -/area/space) -"aaw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space) -"aax" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating/airless, -/area/space) -"aay" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plating/airless, -/area/space) -"aaz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating/airless, -/area/space) -"aaA" = ( -/obj/machinery/computer/libraryconsole/bookmanagement, -/obj/structure/table, -/turf/open/floor/plasteel/dark, -/area/security/prison) -"aaB" = ( -/obj/machinery/computer/cryopod{ - pixel_x = -28 - }, -/turf/open/floor/plasteel/dark, -/area/security/prison) -"aaC" = ( -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (EAST)"; - icon_state = "cryopod-open"; - dir = 4 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/security/prison) -"aaD" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/security/prison) -"aaE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/vending/kink, -/turf/open/floor/plasteel/arrival{ - dir = 1 - }, -/area/crew_quarters/fitness/recreation) "aby" = ( /obj/structure/lattice, /obj/structure/grille, @@ -910,10 +709,9 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/AIsatextAS) "adD" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Waste Out"; - on = 1 + name = "Waste Out" }, /obj/machinery/camera{ c_tag = "MiniSat Maintenance Starboard Fore"; @@ -1580,6 +1378,12 @@ }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/AIsatextAS) +"afn" = ( +/obj/machinery/computer/cryopod{ + pixel_x = -28 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) "afo" = ( /obj/structure/chair/stool, /turf/open/floor/plasteel/dark, @@ -1613,10 +1417,9 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/AIsatextAP) "afu" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Air Out"; - on = 1 + name = "Air Out" }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/AIsatextAP) @@ -1666,6 +1469,12 @@ /obj/item/stack/cable_coil, /turf/open/floor/plating, /area/ai_monitored/turret_protected/AIsatextAS) +"afC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) "afD" = ( /obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -3125,7 +2934,6 @@ dir = 4; pixel_x = -23 }, -/obj/item/gun/energy/pumpaction/blaster, /turf/open/floor/plasteel/dark, /area/security/armory) "ajh" = ( @@ -3323,7 +3131,6 @@ height = 17; id = "syndicate_ne"; name = "northeast of station"; - turf_type = /turf/open/space; width = 23 }, /turf/open/space, @@ -3743,11 +3550,8 @@ /turf/open/floor/plating, /area/maintenance/department/security/brig) "aku" = ( -/obj/machinery/atmospherics/components/trinary/mixer/flipped{ - dir = 1; - node1_concentration = 0.2; - node2_concentration = 0.8; - on = 1 +/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped/inverse{ + dir = 1 }, /turf/open/floor/plating, /area/maintenance/department/security/brig) @@ -4959,9 +4763,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"ann" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_1) "anp" = ( /obj/structure/cable{ icon_state = "1-2" @@ -5289,13 +5090,6 @@ /obj/item/device/camera, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"aoc" = ( -/obj/machinery/computer/shuttle/monastery_shuttle, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) "aod" = ( /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, @@ -5518,27 +5312,6 @@ /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"aoE" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/status_display{ - pixel_x = -32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) -"aoF" = ( -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) -"aoG" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/status_display{ - pixel_x = 32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) "aoH" = ( /obj/structure/lattice, /obj/structure/grille, @@ -5895,18 +5668,6 @@ icon_state = "platingdmg1" }, /area/maintenance/department/crew_quarters/dorms) -"apx" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) -"apy" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) "apz" = ( /obj/structure/chair{ dir = 8 @@ -6078,24 +5839,6 @@ "apX" = ( /turf/closed/wall, /area/crew_quarters/dorms) -"apY" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/item/storage/pod{ - pixel_x = -24 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) -"apZ" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/item/device/radio/intercom{ - pixel_x = 30 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) "aqa" = ( /obj/structure/cable{ icon_state = "0-4" @@ -6450,33 +6193,17 @@ }, /turf/open/floor/plasteel/barber, /area/crew_quarters/dorms) -"aqX" = ( -/obj/structure/shuttle/engine/propulsion/burst, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_1) "aqY" = ( -/obj/machinery/door/airlock/titanium{ - name = "Shuttle Airlock" - }, /obj/docking_port/stationary{ + dir = 1; dwidth = 2; height = 6; - id = "monastery_shuttle_station"; - name = "station"; + name = "large escape pod loader"; + roundstart_template = /datum/map_template/shuttle/escape_pod/large; width = 5 }, -/obj/docking_port/mobile{ - dwidth = 2; - height = 6; - id = "pod1"; - launch_status = 0; - name = "monastery shuttle"; - port_direction = 2; - width = 5; - timid = 0 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) +/turf/open/space/basic, +/area/space) "aqZ" = ( /obj/machinery/space_heater, /turf/open/floor/plating, @@ -8721,6 +8448,15 @@ }, /turf/open/floor/plating, /area/crew_quarters/fitness/recreation) +"awx" = ( +/obj/structure/closet/athletic_mixed, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/arrival{ + dir = 1 + }, +/area/crew_quarters/fitness/recreation) "awy" = ( /obj/structure/closet/lasertag/blue, /obj/structure/disposalpipe/segment{ @@ -14223,11 +13959,16 @@ dir = 1; icon_state = "direction_sec"; pixel_x = 32; - pixel_y = -26 + pixel_y = -24 }, /obj/structure/sign/directions/medical{ pixel_x = 32; - pixel_y = -38 + pixel_y = -40 + }, +/obj/structure/sign/directions/evac{ + dir = 1; + pixel_x = 32; + pixel_y = -32 }, /turf/open/floor/plasteel, /area/hallway/primary/central) @@ -15338,7 +15079,6 @@ /area/maintenance/disposal) "aMF" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = 1; id = "garbagestacked"; name = "disposal conveyor" }, @@ -16377,14 +16117,14 @@ dir = 8 }, /obj/machinery/conveyor{ - dir = 2; + dir = 9; id = "garbage" }, /turf/open/floor/plating, /area/maintenance/disposal) "aPh" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "garbage" }, /turf/open/floor/plating, @@ -16761,10 +16501,6 @@ /turf/closed/wall, /area/maintenance/disposal) "aQl" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "garbage" - }, /obj/structure/disposaloutlet{ dir = 4 }, @@ -16778,7 +16514,7 @@ /area/maintenance/disposal) "aQm" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/structure/disposalpipe/segment{ @@ -16788,7 +16524,7 @@ /area/maintenance/disposal) "aQn" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/machinery/recycler, @@ -16796,7 +16532,7 @@ /area/maintenance/disposal) "aQo" = ( /obj/machinery/conveyor{ - dir = 2; + dir = 1; id = "garbage" }, /turf/open/floor/plating, @@ -17319,7 +17055,7 @@ /area/maintenance/disposal) "aRx" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = -1; + dir = 8; id = "garbage"; name = "disposal conveyor" }, @@ -17810,10 +17546,10 @@ /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "aSF" = ( -/obj/machinery/chem_master/condimaster, /obj/machinery/light/small{ dir = 1 }, +/obj/machinery/smartfridge/disks, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "aSG" = ( @@ -18071,7 +17807,7 @@ dir = 1 }, /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "QMLoad" }, /obj/machinery/airalarm{ @@ -18081,7 +17817,7 @@ /area/quartermaster/storage) "aTo" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "QMLoad" }, /obj/machinery/status_display{ @@ -18092,7 +17828,7 @@ /area/quartermaster/storage) "aTp" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "QMLoad" }, /obj/structure/sign/poster/official/random{ @@ -18102,7 +17838,7 @@ /area/quartermaster/storage) "aTq" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "QMLoad" }, /turf/open/floor/plating, @@ -18113,7 +17849,7 @@ name = "supply dock loading door" }, /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "QMLoad" }, /turf/open/floor/plating, @@ -18121,7 +17857,7 @@ "aTs" = ( /obj/structure/plasticflaps, /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "QMLoad" }, /turf/open/floor/plating, @@ -19096,7 +18832,6 @@ /area/quartermaster/storage) "aVB" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = -1; id = "QMLoad" }, /obj/machinery/button/door{ @@ -20287,7 +20022,7 @@ /area/quartermaster/storage) "aYB" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = 1; + dir = 8; id = "QMLoad2" }, /obj/effect/turf_decal/stripes/line{ @@ -24380,7 +24115,7 @@ /area/medical/morgue) "biZ" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Morgue"; opacity = 1; req_access_txt = "6" @@ -26626,10 +26361,8 @@ /turf/open/floor/plasteel/dark, /area/science/robotics/lab) "bpa" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 4; - on = 1; - target_temperature = 80 +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + dir = 4 }, /obj/machinery/airalarm{ dir = 4; @@ -26893,7 +26626,7 @@ /area/medical/medbay/zone3) "bpG" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Morgue"; opacity = 1; req_access_txt = "6" @@ -26952,7 +26685,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Morgue"; opacity = 1; req_access_txt = "6" @@ -28781,7 +28514,6 @@ height = 13; id = "ferry_home"; name = "port bay 2"; - turf_type = /turf/open/space; width = 5 }, /turf/open/space/basic, @@ -33754,10 +33486,9 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "bEl" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Air Out"; - on = 1 + name = "Air Out" }, /turf/open/floor/plating, /area/maintenance/department/engine) @@ -36386,10 +36117,10 @@ /area/science/mixing) "bJT" = ( /obj/machinery/computer/security/telescreen{ - desc = "Used for watching the test chamber."; + desc = "Used for watching the bomb testing site."; dir = 2; layer = 4; - name = "Test Chamber Telescreen"; + name = "Testing Site Telescreen"; network = list("toxins"); pixel_y = -32 }, @@ -36852,8 +36583,7 @@ "bKY" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Mix Outlet Pump"; - on = 0 + name = "Mix Outlet Pump" }, /turf/open/floor/plasteel/yellow/side{ dir = 5 @@ -36985,7 +36715,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/dock) "bLq" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Monastery Transit"; opacity = 1 }, @@ -37271,8 +37001,7 @@ "bMa" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Distro to Waste"; - on = 0 + name = "Distro to Waste" }, /obj/machinery/light{ dir = 1 @@ -37299,8 +37028,7 @@ "bMd" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Mix to Distro"; - on = 0 + name = "Mix to Distro" }, /turf/open/floor/plasteel/yellow/side{ dir = 1 @@ -37354,10 +37082,7 @@ /area/science/mixing) "bMm" = ( /obj/machinery/igniter{ - icon_state = "igniter0"; - id = "toxigniter"; - luminosity = 2; - on = 0 + id = "toxigniter" }, /turf/open/floor/engine/vacuum, /area/science/mixing) @@ -37626,10 +37351,9 @@ /turf/closed/wall/r_wall, /area/engine/atmos) "bMY" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "External to Filter"; - on = 1 + name = "External to Filter" }, /turf/open/floor/plasteel/yellow/side{ dir = 8 @@ -37687,10 +37411,9 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bNg" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Air to Distro"; - on = 1 + name = "Air to Distro" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -38050,10 +37773,9 @@ /turf/closed/wall/r_wall, /area/engine/atmos) "bOg" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Air to External"; - on = 1 + name = "Air to External" }, /turf/open/floor/plasteel/yellow/side{ dir = 8 @@ -38116,8 +37838,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 0; - name = "Mix to Port"; - on = 0 + name = "Mix to Port" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -38127,8 +37848,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Pure to Mix"; - on = 0 + name = "Pure to Mix" }, /obj/structure/cable{ icon_state = "1-2" @@ -38139,10 +37859,9 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Unfiltered to Mix"; - on = 1 + name = "Unfiltered to Mix" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -38436,8 +38155,7 @@ "bPe" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "N2O Outlet Pump"; - on = 0 + name = "N2O Outlet Pump" }, /turf/open/floor/plasteel/yellow/side{ dir = 4 @@ -38482,7 +38200,7 @@ /turf/open/space, /area/space/nearstation) "bPn" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel"; opacity = 1 }, @@ -38494,7 +38212,7 @@ }, /area/chapel/dock) "bPo" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel"; opacity = 1 }, @@ -38669,10 +38387,9 @@ /turf/closed/wall, /area/engine/atmos) "bPR" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 0; - name = "Waste In"; - on = 1 + name = "Waste In" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -38683,8 +38400,7 @@ "bPT" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 0; - name = "Air to Port"; - on = 0 + name = "Air to Port" }, /obj/machinery/light{ dir = 8 @@ -38697,8 +38413,7 @@ "bPU" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 0; - name = "Mix to Port"; - on = 0 + name = "Mix to Port" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -39067,10 +38782,8 @@ }, /area/engine/atmos) "bQN" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 1; - filter_type = "n2o"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o{ + dir = 1 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -39695,8 +39408,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Plasma Outlet Pump"; - on = 0 + name = "Plasma Outlet Pump" }, /turf/open/floor/plasteel/yellow/side{ dir = 4 @@ -39961,8 +39673,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 0; - name = "Port to Filter"; - on = 0 + name = "Port to Filter" }, /obj/structure/extinguisher_cabinet{ pixel_x = -27 @@ -40066,10 +39777,9 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Air Out"; - on = 1 + name = "Air Out" }, /turf/open/floor/plating, /area/maintenance/department/engine) @@ -40402,8 +40112,7 @@ "bTR" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Port to Filter"; - on = 0 + name = "Port to Filter" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -40419,10 +40128,8 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bTU" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 1; - filter_type = "plasma"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/plasma{ + dir = 1 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -40984,8 +40691,7 @@ "bVk" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "CO2 Outlet Pump"; - on = 0 + name = "CO2 Outlet Pump" }, /turf/open/floor/plasteel/yellow/side{ dir = 4 @@ -41030,7 +40736,7 @@ dir = 8 }, /turf/open/floor/plating, -/area/maintenance/department/engine) +/area/construction/mining/aux_base) "bVr" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating/airless, @@ -41333,8 +41039,7 @@ "bVV" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 0; - name = "Waste to Space"; - on = 0 + name = "Waste to Space" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -41356,8 +41061,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "O2 to Pure"; - on = 0 + name = "O2 to Pure" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -41370,8 +41074,7 @@ "bWa" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 4; - name = "N2 to Pure"; - on = 0 + name = "N2 to Pure" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -41698,10 +41401,8 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bWK" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 4; - filter_type = "o2"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/o2{ + dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -41731,16 +41432,13 @@ "bWP" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Air to Pure"; - on = 0 + name = "Air to Pure" }, /turf/open/floor/plasteel, /area/engine/atmos) "bWQ" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 1; - filter_type = "co2"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/co2{ + dir = 1 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -41770,7 +41468,7 @@ /turf/closed/wall, /area/chapel/main/monastery) "bWW" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel"; opacity = 1 }, @@ -41780,7 +41478,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "bWX" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel"; opacity = 1 }, @@ -41965,11 +41663,7 @@ /turf/open/floor/plasteel/yellow/side, /area/engine/atmos) "bXA" = ( -/obj/machinery/atmospherics/components/trinary/mixer{ - node1_concentration = 0.8; - node2_concentration = 0.2; - on = 1 - }, +/obj/machinery/atmospherics/components/trinary/mixer/airmix, /turf/open/floor/plasteel/yellow/side, /area/engine/atmos) "bXB" = ( @@ -41980,10 +41674,9 @@ /area/engine/atmos) "bXC" = ( /obj/machinery/light, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Air Outlet Pump"; - on = 1 + name = "Air Outlet Pump" }, /turf/open/floor/plasteel/yellow/side, /area/engine/atmos) @@ -42305,7 +41998,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/maintenance/department/engine) +/area/construction/mining/aux_base) "bYG" = ( /obj/machinery/power/apc/highcap/five_k{ dir = 8; @@ -42752,32 +42445,14 @@ }, /area/maintenance/department/engine) "bZs" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, /turf/open/floor/plating, -/area/shuttle/auxillary_base) +/area/construction/mining/aux_base) "bZt" = ( /obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"bZu" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/docking_port/stationary/public_mining_dock{ dir = 2 }, /turf/open/floor/plating, -/area/shuttle/auxillary_base) -"bZv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) +/area/construction/mining/aux_base) "bZw" = ( /obj/item/bikehorn/rubberducky, /turf/open/floor/plating, @@ -42995,20 +42670,17 @@ }, /area/maintenance/department/engine) "cab" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cac" = ( -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cad" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, /turf/open/floor/plating, -/area/shuttle/auxillary_base) +/area/construction/mining/aux_base) +"cad" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/construction/mining/aux_base) "cae" = ( /obj/structure/plasticflaps{ opacity = 1 @@ -43264,6 +42936,17 @@ name = "Turbine Interior Airlock"; req_access_txt = "24" }, +/obj/machinery/embedded_controller/radio/airlock_controller{ + airpump_tag = "incinerator_airlock_pump"; + exterior_door_tag = "incinerator_airlock_exterior"; + id_tag = "incinerator_airlock_control"; + interior_door_tag = "incinerator_airlock_interior"; + name = "Incinerator Access Console"; + pixel_x = -6; + pixel_y = -26; + sanitize_external = 1; + sensor_tag = "incinerator_airlock_sensor" + }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "caM" = ( @@ -43297,10 +42980,7 @@ icon_state = "4-8" }, /obj/machinery/igniter{ - icon_state = "igniter0"; - id = "Incinerator"; - luminosity = 2; - on = 0 + id = "Incinerator" }, /obj/machinery/air_sensor/atmos/incinerator_tank{ pixel_x = 32; @@ -43574,24 +43254,12 @@ "cbB" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Incinerator to Output"; - on = 0 + name = "Incinerator to Output" }, /obj/machinery/atmospherics/pipe/simple/general/visible, /turf/open/floor/plasteel/dark, /area/maintenance/disposal/incinerator) "cbC" = ( -/obj/machinery/embedded_controller/radio/airlock_controller{ - name = "Incinerator Access Console"; - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_access_control"; - interior_door_tag = "incinerator_airlock_interior"; - pixel_x = 26; - pixel_y = 6; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor" - }, /obj/machinery/button/ignition{ id = "Incinerator"; pixel_x = 26; @@ -43670,7 +43338,7 @@ }, /area/chapel/main/monastery) "cbR" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel Access"; opacity = 1 }, @@ -43935,15 +43603,6 @@ /obj/structure/table/optable, /turf/open/floor/plating, /area/maintenance/department/engine) -"ccP" = ( -/obj/machinery/light, -/obj/machinery/camera{ - c_tag = "Auxillary Mining Base"; - dir = 1; - network = list("ss13","auxbase") - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "ccQ" = ( /obj/machinery/field/generator, /turf/open/floor/plating, @@ -44163,28 +43822,6 @@ /obj/item/cigbutt, /turf/open/floor/plating, /area/maintenance/department/engine) -"cdF" = ( -/obj/structure/closet/secure_closet/miner/unlocked, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cdG" = ( -/obj/docking_port/mobile/auxillary_base{ - dheight = 5; - dir = 1; - dwidth = 5; - height = 11; - width = 11 - }, -/obj/machinery/bluespace_beacon, -/obj/machinery/computer/auxillary_base, -/turf/closed/wall, -/area/shuttle/auxillary_base) -"cdH" = ( -/obj/structure/mining_shuttle_beacon{ - dir = 4 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "cdI" = ( /obj/machinery/field/generator, /obj/machinery/camera{ @@ -44349,7 +43986,7 @@ /turf/open/floor/plasteel/asteroid, /area/chapel/office) "ceg" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel Office"; opacity = 1; req_access_txt = "22" @@ -44370,7 +44007,7 @@ /turf/closed/wall, /area/chapel/office) "cei" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel"; opacity = 1 }, @@ -44383,7 +44020,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "cej" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel"; opacity = 1 }, @@ -44391,7 +44028,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "cek" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel"; opacity = 1 }, @@ -44399,7 +44036,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "cel" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel Access"; opacity = 1 }, @@ -44417,12 +44054,6 @@ }, /turf/open/floor/plating/asteroid, /area/chapel/asteroid/monastery) -"cep" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "ceq" = ( /obj/machinery/power/emitter, /turf/open/floor/plating, @@ -44690,7 +44321,7 @@ /turf/closed/wall, /area/chapel/office) "cfl" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel Access"; opacity = 1 }, @@ -45035,22 +44666,12 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) -"cgo" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "cgp" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cgq" = ( /obj/effect/turf_decal/stripes/line{ - dir = 6 + dir = 1 }, /turf/open/floor/plating, -/area/shuttle/auxillary_base) +/area/construction/mining/aux_base) "cgr" = ( /obj/structure/window/reinforced/fulltile, /obj/structure/transit_tube, @@ -45208,6 +44829,13 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) +"cgV" = ( +/obj/machinery/field/generator{ + anchored = 1; + state = 2 + }, +/turf/open/floor/plating/airless, +/area/space) "cgY" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -45351,6 +44979,20 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) +"chx" = ( +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"chz" = ( +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless, +/area/engine/engineering) "chA" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -45545,6 +45187,24 @@ /obj/structure/grille, /turf/open/floor/plating/airless, /area/engine/engineering) +"cii" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating/airless, +/area/space) +"cij" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/space) +"cik" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating/airless, +/area/space) "cio" = ( /obj/structure/closet/cabinet, /obj/item/clothing/suit/holidaypriest, @@ -45583,6 +45243,22 @@ /obj/structure/grille, /turf/open/floor/plating/airless, /area/engine/engineering) +"cis" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/space) +"cit" = ( +/obj/machinery/the_singularitygen/tesla, +/turf/open/floor/plating/airless, +/area/space) +"ciu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space) "civ" = ( /obj/machinery/light{ dir = 4 @@ -45637,6 +45313,24 @@ }, /turf/open/floor/plasteel/grimy, /area/chapel/main/monastery) +"ciG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating/airless, +/area/space) +"ciH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plating/airless, +/area/space) +"ciI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating/airless, +/area/space) "ciJ" = ( /obj/structure/closet/emcloset, /obj/effect/decal/cleanable/cobweb, @@ -45753,7 +45447,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "cjl" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Monastery Cemetary"; opacity = 1 }, @@ -45825,7 +45519,6 @@ height = 22; id = "whiteship_home"; name = "monastery"; - turf_type = /turf/open/space; width = 35 }, /turf/open/space/basic, @@ -45840,7 +45533,7 @@ /turf/open/floor/plating, /area/chapel/main/monastery) "cjH" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel Garden"; opacity = 1 }, @@ -45906,7 +45599,7 @@ invuln = 1; luminosity = 3; name = "Hardened Bomb-Test Camera"; - network = list("toxins"); + network = list("ss13","rd","toxins"); use_power = 0 }, /turf/open/floor/plating/asteroid/airless, @@ -45976,10 +45669,9 @@ /turf/open/floor/plating, /area/maintenance/department/chapel/monastery) "cki" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Air Out"; - on = 1 + name = "Air Out" }, /turf/open/floor/plating, /area/maintenance/department/chapel/monastery) @@ -46203,7 +45895,7 @@ /turf/open/floor/plasteel/dark, /area/library/lounge) "ckT" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Library" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -46398,10 +46090,9 @@ /turf/closed/wall, /area/tcommsat/computer) "clM" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Waste Out"; - on = 1 + name = "Waste Out" }, /turf/open/floor/plating, /area/tcommsat/computer) @@ -46455,10 +46146,9 @@ /turf/open/floor/plating, /area/tcommsat/computer) "clV" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 0; - name = "Air Out"; - on = 1 + name = "Air Out" }, /obj/machinery/light/small{ dir = 4 @@ -46937,7 +46627,7 @@ invuln = 1; luminosity = 3; name = "Hardened Bomb-Test Camera"; - network = list("toxins"); + network = list("ss13","rd","toxins"); use_power = 0 }, /turf/open/floor/plating/asteroid/airless, @@ -47087,11 +46777,6 @@ /obj/structure/punching_bag, /turf/open/floor/plasteel/showroomfloor, /area/security/main) -"cnW" = ( -/obj/structure/grille, -/obj/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_1) "cnX" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance, @@ -47979,7 +47664,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "crJ" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Crematorium"; opacity = 1; req_access_txt = "27" @@ -48226,7 +47911,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Chapel Office"; opacity = 1; req_access_txt = "22" @@ -49113,7 +48798,7 @@ /turf/closed/wall/mineral/iron, /area/library/lounge) "cwg" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Library" }, /obj/structure/cable{ @@ -49358,7 +49043,7 @@ /turf/open/floor/carpet, /area/library/lounge) "cxz" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Library" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -50245,6 +49930,18 @@ dir = 1 }, /area/science/circuit) +"eab" = ( +/obj/machinery/power/apc{ + areastring = "/area/crew_quarters/cryopod"; + dir = 1; + name = "Crew Cryogenics APC"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/darkpurple, +/area/crew_quarters/cryopod) "eeQ" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -50263,20 +49960,51 @@ dir = 1 }, /area/science/circuit) +"eIh" = ( +/obj/machinery/chem_master/condimaster, +/turf/open/floor/plasteel/hydrofloor, +/area/hydroponics) "eQR" = ( /obj/effect/spawner/lootdrop/two_percent_xeno_egg_spawner, /turf/open/floor/engine, /area/science/xenobiology) +"fap" = ( +/obj/machinery/cryopod{ + tag = "icon-cryopod-open (EAST)"; + icon_state = "cryopod-open"; + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) +"ffT" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space) +"fmr" = ( +/obj/docking_port/stationary{ + area_type = /area/construction/mining/aux_base; + dheight = 4; + dir = 2; + dwidth = 4; + height = 9; + id = "aux_base_zone"; + name = "aux base zone"; + roundstart_template = /datum/map_template/shuttle/aux_base/default; + width = 9 + }, +/turf/open/floor/plating, +/area/construction/mining/aux_base) "fon" = ( /obj/structure/lattice, /obj/structure/grille, /turf/open/space/basic, /area/space/nearstation) "fuR" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 4; - filter_type = "n2"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2{ + dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -50308,6 +50036,11 @@ /obj/machinery/door/firedoor/heavy, /turf/open/floor/plasteel, /area/science/mixing) +"fCc" = ( +/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/structure/table, +/turf/open/floor/plasteel/dark, +/area/security/prison) "fIW" = ( /obj/machinery/light_switch{ dir = 9; @@ -50348,14 +50081,49 @@ dir = 8 }, /area/science/circuit) +"gIT" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/stairs, +/area/crew_quarters/cryopod) "gMm" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/science/mixing) +"gQc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "gYo" = ( /obj/structure/grille, /turf/open/space/basic, /area/space/nearstation) +"hbH" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/darkpurple, +/area/crew_quarters/cryopod) +"htQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "htU" = ( /obj/machinery/rnd/production/protolathe/department/science, /turf/open/floor/plasteel/purple/side{ @@ -50433,7 +50201,7 @@ /turf/open/floor/plasteel/white, /area/science/circuit) "jgr" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Library" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -50455,6 +50223,12 @@ dir = 1 }, /area/crew_quarters/heads/hos) +"jwN" = ( +/obj/machinery/computer/cryopod{ + pixel_y = 24 + }, +/turf/open/floor/plasteel/darkpurple, +/area/crew_quarters/cryopod) "jBh" = ( /obj/structure/rack, /obj/item/stack/sheet/glass/fifty{ @@ -50538,6 +50312,11 @@ "kwI" = ( /turf/open/floor/plasteel, /area/science/mixing) +"kAy" = ( +/obj/effect/spawner/structure/window, +/obj/structure/sign/departments/evac, +/turf/open/floor/plating, +/area/hallway/secondary/exit/departure_lounge) "kAz" = ( /obj/structure/cable{ icon_state = "1-2" @@ -50546,6 +50325,15 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/department/cargo) +"kEM" = ( +/obj/structure/sign/directions/evac{ + dir = 1; + pixel_x = -32 + }, +/turf/open/floor/plasteel/green/corner{ + dir = 1 + }, +/area/hallway/primary/central) "lju" = ( /obj/machinery/vending/snack/random, /turf/open/floor/plasteel/purple/corner{ @@ -50562,7 +50350,7 @@ /turf/open/floor/plasteel, /area/science/circuit) "lqy" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Library" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -50605,6 +50393,27 @@ /obj/item/stack/cable_coil, /turf/open/floor/plasteel/whitepurple/side, /area/science/lab) +"myu" = ( +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "bridge blast door" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/command/glass{ + name = "Bridge"; + req_access_txt = "19" + }, +/obj/effect/turf_decal/delivery, +/obj/structure/sign/directions/evac{ + dir = 1; + pixel_x = 32 + }, +/turf/open/floor/plasteel/vault, +/area/bridge) "mCe" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -50670,6 +50479,9 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/storage/primary) +"oEA" = ( +/turf/closed/wall, +/area/construction/mining/aux_base) "oEG" = ( /obj/machinery/bookbinder, /turf/open/floor/plasteel/purple/side{ @@ -50790,6 +50602,9 @@ dir = 4 }, /area/hallway/primary/central) +"rnf" = ( +/turf/open/floor/plasteel/darkpurple, +/area/crew_quarters/cryopod) "rtE" = ( /turf/open/floor/plasteel/purple/corner{ dir = 1 @@ -50863,6 +50678,30 @@ /obj/machinery/atmospherics/pipe/simple/general/hidden, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"tHk" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/sign/directions/evac{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"tRq" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"tSS" = ( +/obj/machinery/conveyor/inverted{ + dir = 10; + id = "garbage" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"tWt" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/departments/evac, +/turf/open/floor/plating, +/area/hallway/secondary/exit/departure_lounge) "tYg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -50881,6 +50720,10 @@ /obj/item/device/integrated_electronics/analyzer, /turf/open/floor/plasteel/white, /area/science/circuit) +"ukn" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/construction/mining/aux_base) "ulu" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -50920,6 +50763,9 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"vdT" = ( +/turf/closed/wall, +/area/crew_quarters/cryopod) "vpz" = ( /obj/structure/table/reinforced, /obj/machinery/computer/security/telescreen{ @@ -50964,7 +50810,7 @@ /turf/open/floor/plasteel, /area/science/circuit) "vOw" = ( -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/grunge{ name = "Library" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -50983,6 +50829,28 @@ dir = 1 }, /area/storage/primary) +"wmX" = ( +/obj/machinery/cryopod, +/turf/open/floor/plasteel/darkpurple, +/area/crew_quarters/cryopod) +"wsv" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"wxp" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/darkpurple, +/area/crew_quarters/cryopod) "wxJ" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/poddoor/preopen{ @@ -51024,6 +50892,13 @@ }, /turf/open/floor/plating, /area/crew_quarters/heads/cmo) +"wMV" = ( +/obj/machinery/conveyor/inverted{ + dir = 6; + id = "garbage" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) "wTO" = ( /obj/machinery/vending/assist, /turf/open/floor/plasteel/purple/corner{ @@ -51059,6 +50934,13 @@ }, /turf/open/floor/plasteel/dark, /area/library) +"xyz" = ( +/obj/machinery/cryopod, +/obj/machinery/light/small/built{ + dir = 4 + }, +/turf/open/floor/plasteel/darkpurple, +/area/crew_quarters/cryopod) "xGQ" = ( /obj/structure/closet/crate, /obj/item/gun/energy/laser/practice, @@ -69690,7 +69572,7 @@ aHA aHA aHA aKB -aHA +tWt aKB aHA aHA @@ -70670,8 +70552,8 @@ aem aem aem aeT -aaB -aaC +afn +fap afZ agn agy @@ -70926,9 +70808,9 @@ abI aem aeo aeC -aaA +fCc aeU -aaD +afC aeU aeU agy @@ -74115,19 +73997,19 @@ bva bva bDi bva -bva -bva -bva -bva -bva -bva -bva -bva -bva -cqy -cqy -bva -bva +oEA +oEA +oEA +oEA +oEA +oEA +oEA +oEA +oEA +ukn +ukn +oEA +oEA aaa aaa aaa @@ -74372,7 +74254,7 @@ bva bWj bWZ bXS -bva +oEA bZs cab cab @@ -74383,8 +74265,8 @@ cab cab cab cab -cgo -bva +bZs +oEA aaa aaa aaa @@ -74573,7 +74455,7 @@ aOs aPv aQz aRH -aRH +kAy aRH aUJ aVQ @@ -74629,19 +74511,19 @@ bVt bWk bXa bXT -cqy +ukn bZt -cac -cac -cac -cac -cac -cac -cac -cac -cac +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs cgp -cqy +ukn aaa aaa aaa @@ -74888,17 +74770,17 @@ bDi bSw bYF bZt -cac -cac -cac -cac -cac -cac -cac -cac -cac +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs cgp -cqy +ukn aaa aaa aaa @@ -75143,19 +75025,19 @@ bVu bNX bDi bDi -cqy +ukn bZt -cac -cac -cac -cac -cac -cac -cac -cac -cac +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs cgp -cqy +ukn aaa aaa aaa @@ -75333,7 +75215,7 @@ aDv aBh aBh aGd -aEY +tHk aHG aIM aJG @@ -75400,19 +75282,19 @@ bVv bSw bPC bXU -bva +oEA bZt -cac -cac -cac -cac -cdF -cac -cac -cac -cac +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs cgp -bva +oEA aaa aaa aaa @@ -75657,19 +75539,19 @@ bVw bDi bDi bXV -cqy -bZu -cac -cac -cac -ccP -cdG -cep -cac -cac -cac +ukn +bZt +bZs +bZs +bZs +bZs +fmr +bZs +bZs +bZs +bZs cgp -bva +oEA aaa aaa aaa @@ -75914,19 +75796,19 @@ bVx bPC bXb bDi -bva +oEA bZt -cac -cac -cac -cac -cdH -cac -cac -cac -cac +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs cgp -bva +oEA aaa aaa aaa @@ -76171,19 +76053,19 @@ bVy bDi bXc bDi -cqy +ukn bZt -cac -cac -cac -cac -cac -cac -cac -cac -cac +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs cgp -cqy +ukn aaa aaa aaa @@ -76430,17 +76312,17 @@ bSw bDi bVq bZt -cac -cac -cac -cac -cac -cac -cac -cac -cac +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs cgp -cqy +ukn aaa aaa aaa @@ -76685,19 +76567,19 @@ bVz bWm bSw bNX -cqy +ukn bZt -cac -cac -cac -cac -cac -cac -cac -cac -cac +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs cgp -cqy +ukn aaa aaa aaa @@ -76942,8 +76824,8 @@ bva bva bDi cBj -bva -bZv +oEA +bZs cad cad cad @@ -76953,8 +76835,8 @@ cad cad cad cad -cgq -bva +bZs +oEA aaa aaa aaa @@ -77199,19 +77081,19 @@ bDi bDi bNK bva -bva -bva -bva -bva -bva -bva -bva -bva -bva -cqy -cqy -bva -bva +oEA +oEA +oEA +oEA +oEA +oEA +oEA +oEA +oEA +ukn +ukn +oEA +oEA aaa aaa aaa @@ -77659,7 +77541,7 @@ aQJ aRL aSD aTT -aTV +eIh aRL aWR aXT @@ -78698,7 +78580,7 @@ bcb bdn bel bdn -bdn +kEM aJI aDZ bik @@ -80473,7 +80355,7 @@ aDJ aEC aDJ aAA -aHe +myu aHU aIV aJS @@ -81067,13 +80949,13 @@ cfV cfV cgv cfV -aao +chx cfV -aao +chx cfV -aao +chx cfV -aao +chx cfV cfV bTE @@ -81323,15 +81205,15 @@ cCI cfV cfU cgv -aan +cgV bBW bBW -aan -aht +cgV +tRq aaa bBW bBW -aan +cgV cfV bTE abI @@ -81583,8 +81465,8 @@ cgv bBW bBW bBW -aht -abI +tRq +ffT aaa bBW bBW @@ -81840,9 +81722,9 @@ cgv bBW bBW aaa -aaq -abI -aaq +aaa +ffT +aaa aaa bBW bBW @@ -82096,13 +81978,13 @@ cfa cgv aaa aaa -aaq -aar -aau -aax -aaq -aht -aan +aaa +cii +cis +ciG +aaa +tRq +cgV cfV bTE abI @@ -82351,15 +82233,15 @@ cfd cfw cfW cgw -aht -abI -abI -aas -aav -aay -abI -abI -aht +tRq +ffT +ffT +cij +cit +ciH +ffT +ffT +tRq cfV bTE abI @@ -82608,13 +82490,13 @@ cfe cfx cfa cgv -aan -aht -aaq -aat -aaw -aaz -aaq +cgV +tRq +aaa +cik +ciu +ciI +aaa aaa aaa cfV @@ -82868,9 +82750,9 @@ cgv bBW bBW aaa -aaq -abI -aaq +aaa +ffT +aaa aaa bBW bBW @@ -83126,8 +83008,8 @@ bBW bBW aaa aaa -abI -aht +ffT +tRq aaa bBW bBW @@ -83379,15 +83261,15 @@ cCI cfV cfU cgv -aan +cgV bBW aaa aaa -aht -aan +tRq +cgV bBW bBW -aan +cgV cfV bTE abI @@ -83637,13 +83519,13 @@ cfV cfV cgv cfV -aap +chz cfV -aap +chz cfV -aap +chz cfV -aap +chz cfV cfV bTE @@ -87666,12 +87548,12 @@ aaa aaa aaa aaa -aab -aac -aaf -aai -aak -aam +vdT +eab +wxp +gIT +htQ +wsv aJI aLe aMe @@ -87923,11 +87805,11 @@ aaa aaa aaa aaa -aab -aad -aag -aaj -aal +vdT +jwN +rnf +hbH +gQc aIU aJH aLe @@ -88180,10 +88062,10 @@ apX aBL aBL apX -aab -aae -aah -aab +vdT +xyz +wmX +vdT aHN aIU aJI @@ -90219,11 +90101,11 @@ alf aaa aaa aaa -ann -ann -cnW -ann -aqX +aaa +aaa +aaa +aaa +aaa apX apX aul @@ -90475,12 +90357,12 @@ akn alg aaa aaa -ann -ann -aoE -apx -apY -aqX +aaa +aaa +aaa +aaa +aaa +aaa ash ash ash @@ -90732,11 +90614,11 @@ ako alg aaa aaa -cnW -aoc -aoF -aoF -aoF +aaa +aaa +aaa +aaa +aaa aqY asi atk @@ -90989,12 +90871,12 @@ akn alg aaa aaa -ann -ann -aoG -apy -apZ -aqX +aaa +aaa +aaa +aaa +aaa +aaa asj atl aum @@ -91247,11 +91129,11 @@ alh aaa aaa aaa -ann -ann -cnW -ann -aqX +aaa +aaa +aaa +aaa +aaa apX apX apX @@ -91770,7 +91652,7 @@ aiS atm aun atn -aaE +awx axw ayu azC @@ -97699,8 +97581,8 @@ aaa aLo aMG aNX -aPh -aQo +wMV +tSS aRy aSn aTA diff --git a/_maps/cit_map_files/generic/CentCom.dmm b/_maps/cit_map_files/generic/CentCom.dmm index d758c687ba..4804bc4534 100644 --- a/_maps/cit_map_files/generic/CentCom.dmm +++ b/_maps/cit_map_files/generic/CentCom.dmm @@ -1918,7 +1918,7 @@ /turf/closed/indestructible/riveted, /area/space) "fy" = ( -/obj/machinery/igniter, +/obj/machinery/igniter/on, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/tdome/arena_source) @@ -2526,10 +2526,6 @@ /obj/machinery/capture_the_flag/red, /turf/open/floor/circuit/green/anim, /area/ctf) -"hH" = ( -/obj/effect/landmark/shuttle_import, -/turf/open/space, -/area/space) "hI" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -2981,8 +2977,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/centcom{ name = "CentCom"; - opacity = 1; - req_access_txt = "0" + opacity = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -2995,19 +2990,17 @@ /turf/open/floor/plating, /area/centcom/supply) "jc" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "XCCQMLoad2"; - movedir = 2 - }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/conveyor{ + dir = 1; + id = "XCCQMLoad2" + }, /turf/open/floor/plasteel, /area/centcom/supply) "jd" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = 1; id = "XCCQMLoad2"; pixel_x = 6 }, @@ -3072,58 +3065,50 @@ "jk" = ( /obj/machinery/door/poddoor{ density = 1; - icon_state = "closed"; id = "XCCQMLoaddoor2"; - name = "Supply Dock Loading Door"; - opacity = 1 - }, -/obj/machinery/conveyor{ - dir = 4; - id = "XCCQMLoad2"; - movedir = 8 + name = "Supply Dock Loading Door" }, /obj/effect/turf_decal/stripes/end{ dir = 8 }, +/obj/machinery/conveyor{ + dir = 4; + id = "XCCQMLoad2" + }, /turf/open/floor/plasteel, /area/centcom/supply) "jl" = ( /obj/structure/plasticflaps, -/obj/machinery/conveyor{ - dir = 4; - id = "XCCQMLoad2"; - movedir = 8 - }, /obj/effect/turf_decal/stripes/line{ dir = 2 }, +/obj/machinery/conveyor{ + dir = 4; + id = "XCCQMLoad2" + }, /turf/open/floor/plasteel, /area/centcom/supply) "jm" = ( /obj/machinery/door/poddoor{ density = 1; - icon_state = "closed"; id = "XCCQMLoaddoor2"; - name = "Supply Dock Loading Door"; - opacity = 1 - }, -/obj/machinery/conveyor{ - dir = 4; - id = "XCCQMLoad2"; - movedir = 8 + name = "Supply Dock Loading Door" }, /obj/effect/turf_decal/stripes/line{ dir = 2 }, +/obj/machinery/conveyor{ + dir = 4; + id = "XCCQMLoad2" + }, /turf/open/floor/plasteel, /area/centcom/supply) "jn" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "XCCQMLoad2"; - movedir = 2 - }, /obj/effect/turf_decal/stripes/end, +/obj/machinery/conveyor/inverted{ + dir = 10; + id = "XCCQMLoad2" + }, /turf/open/floor/plasteel, /area/centcom/supply) "jo" = ( @@ -3280,10 +3265,8 @@ "jI" = ( /obj/machinery/door/poddoor{ density = 1; - icon_state = "closed"; id = "XCCQMLoaddoor"; - name = "Supply Dock Loading Door"; - opacity = 1 + name = "Supply Dock Loading Door" }, /obj/machinery/conveyor{ dir = 8; @@ -3308,10 +3291,8 @@ "jK" = ( /obj/machinery/door/poddoor{ density = 1; - icon_state = "closed"; id = "XCCQMLoaddoor"; - name = "Supply Dock Loading Door"; - opacity = 1 + name = "Supply Dock Loading Door" }, /obj/machinery/conveyor{ dir = 8; @@ -3323,13 +3304,13 @@ /turf/open/floor/plasteel, /area/centcom/supply) "jL" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "XCCQMLoad" - }, /obj/effect/turf_decal/stripes/end{ dir = 1 }, +/obj/machinery/conveyor/inverted{ + dir = 6; + id = "XCCQMLoad2" + }, /turf/open/floor/plasteel, /area/centcom/supply) "jM" = ( @@ -3343,20 +3324,9 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/centcom/supply) -"jO" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "XCCQMLoad"; - movedir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/centcom/supply) "jP" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = 1; + dir = 8; id = "XCCQMLoad"; pixel_x = 6 }, @@ -3534,7 +3504,6 @@ height = 50; id = "emergency_syndicate"; name = "Syndicate Auxillary Shuttle Dock"; - turf_type = /turf/open/floor/plating/asteroid/snow; width = 50 }, /turf/open/floor/plating/asteroid/snow/airless, @@ -5083,7 +5052,6 @@ /obj/machinery/vending/wallmed{ name = "Emergency NanoMed"; pixel_y = 32; - req_access_txt = "0"; use_power = 0 }, /turf/open/floor/plasteel/vault, @@ -5334,6 +5302,24 @@ dir = 8 }, /area/centcom/control) +"oS" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks/beer{ + dir = 8 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/tdome/tdomeobserve) +"oT" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks{ + dir = 8 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/tdome/tdomeobserve) "oW" = ( /obj/structure/flora/bush, /obj/effect/light_emitter{ @@ -6051,8 +6037,7 @@ "qT" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom"; - opacity = 1; - req_access_txt = "0" + opacity = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -6960,21 +6945,6 @@ }, /turf/open/floor/plating/airless, /area/syndicate_mothership/control) -"tj" = ( -/obj/machinery/porta_turret/syndicate/pod, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/assault_pod) -"tk" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/assault_pod) -"tl" = ( -/obj/machinery/door/airlock/centcom{ - name = "Assault Pod"; - opacity = 1; - req_access_txt = "150" - }, -/turf/open/floor/plating, -/area/shuttle/assault_pod) "tn" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -7295,21 +7265,6 @@ }, /turf/open/floor/plating/airless, /area/syndicate_mothership/control) -"uf" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/assault_pod) -"ug" = ( -/turf/open/floor/mineral/plastitanium, -/area/shuttle/assault_pod) -"uh" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/assault_pod) "ui" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -7338,8 +7293,7 @@ /obj/machinery/button/door{ id = "XCCFerry"; name = "Hanger Bay Shutters"; - pixel_y = -38; - req_access_txt = "0" + pixel_y = -38 }, /turf/open/floor/plasteel/vault{ dir = 8 @@ -7536,13 +7490,6 @@ }, /turf/open/floor/mineral/plastitanium, /area/syndicate_mothership/control) -"uN" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/light, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/assault_pod) "uO" = ( /obj/machinery/door/airlock/centcom{ name = "Shuttle Control Office"; @@ -7770,19 +7717,6 @@ /obj/item/toy/nuke, /turf/open/floor/wood, /area/syndicate_mothership/control) -"vy" = ( -/obj/machinery/door/airlock/centcom{ - aiControlDisabled = 1; - name = "Assault Pod"; - opacity = 1; - req_access_txt = "150" - }, -/turf/open/floor/plating, -/area/shuttle/assault_pod) -"vz" = ( -/obj/machinery/computer/shuttle/syndicate/drop_pod, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/assault_pod) "vA" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/directions/engineering{ @@ -8077,13 +8011,6 @@ dir = 2 }, /area/syndicate_mothership/control) -"wq" = ( -/obj/structure/chair, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/assault_pod) "wr" = ( /obj/structure/chair{ dir = 4 @@ -8227,8 +8154,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/centcom{ name = "CentCom"; - opacity = 1; - req_access_txt = "0" + opacity = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -8336,8 +8262,7 @@ /area/space) "xc" = ( /obj/machinery/door/airlock/external{ - name = "Ferry Airlock"; - req_access_txt = "0" + name = "Ferry Airlock" }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -8528,21 +8453,17 @@ /turf/open/floor/plating/airless, /area/syndicate_mothership/control) "xN" = ( -/obj/machinery/door/airlock/centcom{ - aiControlDisabled = 1; - name = "Assault Pod"; - opacity = 1; - req_access_txt = "150" - }, -/obj/docking_port/mobile/assault_pod{ +/obj/docking_port/stationary{ + area_type = /area/syndicate_mothership/control; + dir = 1; dwidth = 3; - name = "steel rain"; - port_direction = 4; - preferred_direction = 4; - timid = 0 + height = 7; + name = "escape pod loader"; + roundstart_template = /datum/map_template/shuttle/assault_pod/default; + width = 7 }, -/turf/open/floor/plating, -/area/shuttle/assault_pod) +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) "xO" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -8847,8 +8768,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/centcom{ name = "CentCom"; - opacity = 1; - req_access_txt = "0" + opacity = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -9971,7 +9891,6 @@ /obj/machinery/vending/wallmed{ name = "Emergency NanoMed"; pixel_y = -32; - req_access_txt = "0"; use_power = 0 }, /obj/effect/turf_decal/stripes/line{ @@ -10559,8 +10478,7 @@ "Eg" = ( /obj/machinery/door/airlock/centcom{ name = "Thunderdome Booth"; - opacity = 1; - req_access_txt = "0" + opacity = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -11091,8 +11009,7 @@ "FK" = ( /obj/machinery/door/airlock/centcom{ name = "Thunderdome Backstage"; - opacity = 1; - req_access_txt = "0" + opacity = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -11838,13 +11755,6 @@ }, /turf/open/floor/plasteel/bar, /area/tdome/tdomeobserve) -"HE" = ( -/obj/structure/table/wood, -/obj/machinery/chem_dispenser/drinks/beer, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/tdome/tdomeobserve) "HF" = ( /obj/structure/sink{ dir = 4; @@ -11939,13 +11849,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) -"HQ" = ( -/obj/structure/table/wood, -/obj/machinery/chem_dispenser/drinks, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/tdome/tdomeobserve) "HR" = ( /obj/structure/sink{ dir = 4; @@ -12165,7 +12068,7 @@ }, /area/tdome/tdomeobserve) "Is" = ( -/obj/machinery/igniter, +/obj/machinery/igniter/on, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/tdome/arena) @@ -13467,7 +13370,6 @@ "My" = ( /obj/docking_port/stationary{ area_type = /area/syndicate_mothership; - baseturf_type = /turf/open/floor/plating/asteroid/snow; dheight = 1; dir = 8; dwidth = 12; @@ -13475,7 +13377,6 @@ id = "syndicate_away"; name = "syndicate recon outpost"; roundstart_template = /datum/map_template/shuttle/infiltrator/basic; - turf_type = /turf/open/floor/plating/asteroid/snow; width = 23 }, /turf/open/floor/plating/asteroid/snow/airless, @@ -13529,8 +13430,7 @@ "NU" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom"; - opacity = 1; - req_access_txt = "0" + opacity = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -13544,8 +13444,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/centcom{ name = "CentCom"; - opacity = 1; - req_access_txt = "0" + opacity = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -13581,6 +13480,10 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"VX" = ( +/obj/effect/landmark/shuttle_import, +/turf/open/space/basic, +/area/space) "Wc" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; @@ -13638,8 +13541,7 @@ /area/centcom/control) "Xy" = ( /obj/machinery/door/airlock/external{ - name = "Ferry Airlock"; - req_access_txt = "0" + name = "Ferry Airlock" }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -34936,11 +34838,11 @@ aa ku sl ti -tj -tk -vy -tk -tj +sk +sk +sk +sk +sk xM yk ku @@ -35192,13 +35094,13 @@ hh aa ku sm -tj -tk -uf -ug -uf -tk -tj +sk +sk +sk +sk +sk +sk +sk yl ku aa @@ -35449,13 +35351,13 @@ hh aa ku sn -tk -uf -ug -uh -ug -uf -tk +sk +sk +sk +sk +sk +sk +sk ym ku aa @@ -35706,12 +35608,12 @@ hh aa ku sm -tl -ug -uN -vz -wq -ug +sk +sk +sk +sk +sk +sk xN yl ku @@ -35963,13 +35865,13 @@ hh aa ku sm -tk -uh -ug -uf -ug -uh -tk +sk +sk +sk +sk +sk +sk +sk yl ku aa @@ -36097,7 +35999,7 @@ aa aa aa aa -aa +VX aa aa aa @@ -36220,13 +36122,13 @@ hh aa ku so -tj -tk -uh -ug -uh -tk -tj +sk +sk +sk +sk +sk +sk +sk yl ku aa @@ -36478,11 +36380,11 @@ aa ku sp tn -tj -tk -vy -tk -tj +sk +sk +sk +sk +sk xO xP ku @@ -44640,7 +44542,7 @@ aa aa aa aa -hH +ad aa aa aa @@ -53677,9 +53579,9 @@ iP jy jD jL -jO -jO -jO +jc +jc +jc iO iO iX @@ -59893,8 +59795,8 @@ Ep GU GM Hw -HE -HQ +oS +oT HX Ie Iq diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 91d975de6f..1b9ee66537 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -53,6 +53,9 @@ /turf/open/space, /area/space/nearstation) "aah" = ( +/obj/structure/sign/warning/securearea{ + pixel_y = -32 + }, /turf/open/space, /area/space/nearstation) "aai" = ( @@ -277,11 +280,6 @@ /obj/structure/lattice, /turf/open/space, /area/space/nearstation) -"aaT" = ( -/obj/machinery/flasher/portable, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/security/armory) "aaU" = ( /obj/machinery/computer/arcade, /turf/open/floor/plasteel/floorgrime, @@ -1847,15 +1845,6 @@ }, /turf/open/floor/plating, /area/security/main) -"aeD" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_3) -"aeE" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_3) "aeG" = ( /obj/structure/cable, /obj/machinery/power/solar{ @@ -2086,7 +2075,6 @@ height = 18; id = "emergency_home"; name = "BoxStation emergency evac bay"; - turf_type = /turf/open/space; width = 32 }, /turf/open/space/basic, @@ -2192,51 +2180,15 @@ /turf/open/floor/plating, /area/security/main) "afp" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ +/obj/docking_port/stationary{ dir = 4; - id = "pod3"; - name = "escape pod 3"; - port_direction = 2; - preferred_direction = 4; - timid = 0 + dwidth = 1; + height = 4; + roundstart_template = /datum/map_template/shuttle/escape_pod/default; + width = 3 }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_3) -"afq" = ( -/obj/machinery/computer/shuttle/pod{ - pixel_y = -32; - possible_destinations = "pod_lavaland3"; - shuttleId = "pod3" - }, -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_3) -"afr" = ( -/obj/item/device/radio/intercom{ - pixel_y = 25 - }, -/obj/item/storage/pod{ - pixel_x = 6; - pixel_y = -32 - }, -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/light/small, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_3) -"afs" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_3) +/turf/open/space/basic, +/area/space) "aft" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 5 @@ -5939,8 +5891,14 @@ dir = 4 }, /area/hallway/primary/fore) +"apn" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/closed/wall, +/area/maintenance/fore/secondary) "apo" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, /turf/closed/wall, /area/maintenance/fore/secondary) "app" = ( @@ -6022,10 +5980,9 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "apw" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Air In"; - on = 1 + name = "Air In" }, /obj/effect/landmark/blobstart, /obj/effect/turf_decal/stripes/line{ @@ -6107,10 +6064,6 @@ /obj/machinery/portable_atmospherics/canister/water_vapor, /turf/open/floor/plasteel, /area/janitor) -"apH" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_1) "apI" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on{ dir = 1; @@ -6124,10 +6077,6 @@ "apJ" = ( /turf/closed/wall, /area/construction/mining/aux_base) -"apK" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_2) "apL" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance{ @@ -6144,11 +6093,8 @@ /turf/open/floor/plasteel/floorgrime, /area/maintenance/port/fore) "apN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, /turf/open/floor/plating, -/area/shuttle/auxillary_base) +/area/construction/mining/aux_base) "apO" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 @@ -6220,9 +6166,6 @@ dir = 8; pixel_x = 24 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, /turf/open/floor/plasteel/red/corner{ dir = 4 }, @@ -6456,9 +6399,6 @@ /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"aqF" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_1) "aqG" = ( /obj/docking_port/stationary/random{ dir = 4; @@ -6467,15 +6407,6 @@ }, /turf/open/space, /area/space/nearstation) -"aqH" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_2) -"aqI" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "aqJ" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/external{ @@ -6501,13 +6432,6 @@ /obj/machinery/meter, /turf/open/floor/plating, /area/maintenance/port/fore) -"aqN" = ( -/obj/structure/closet/secure_closet/miner/unlocked, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "aqO" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance{ @@ -6776,15 +6700,6 @@ "arB" = ( /turf/closed/wall/r_wall, /area/hallway/secondary/entry) -"arC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"arD" = ( -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "arE" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/yellow/side{ @@ -7161,12 +7076,6 @@ "asC" = ( /turf/open/floor/plasteel/airless, /area/space/nearstation) -"asD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "asE" = ( /turf/closed/wall, /area/hallway/secondary/entry) @@ -7174,10 +7083,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/construction/mining/aux_base) -"asG" = ( -/obj/machinery/light, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "asH" = ( /obj/structure/closet/toolcloset, /turf/open/floor/plasteel/yellow/side{ @@ -7380,27 +7285,6 @@ dir = 8 }, /area/crew_quarters/dorms) -"atk" = ( -/obj/machinery/camera{ - c_tag = "Auxillary Mining Base"; - dir = 8; - network = list("ss13","auxbase") - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"atl" = ( -/obj/docking_port/mobile/auxillary_base{ - dheight = 4; - dir = 4; - dwidth = 4; - height = 9; - width = 9; - timid = 0 - }, -/obj/machinery/bluespace_beacon, -/obj/machinery/computer/auxillary_base, -/turf/closed/wall, -/area/shuttle/auxillary_base) "atm" = ( /turf/open/floor/wood, /area/crew_quarters/dorms) @@ -7930,10 +7814,6 @@ }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/department/electrical) -"auN" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "auO" = ( /obj/structure/closet/emcloset, /turf/open/floor/plating, @@ -8380,7 +8260,6 @@ height = 17; id = "syndicate_ne"; name = "northeast of station"; - turf_type = /turf/open/space; width = 23 }, /turf/open/space, @@ -8845,12 +8724,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/hallway/secondary/entry) -"awX" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "awY" = ( /obj/machinery/light{ dir = 1 @@ -9523,8 +9396,7 @@ "ayK" = ( /obj/structure/closet/crate/rcd, /obj/machinery/camera/motion{ - c_tag = "EVA Motion Sensor"; - name = "motion-sensitive security camera" + c_tag = "EVA Motion Sensor" }, /turf/open/floor/plasteel/dark, /area/ai_monitored/storage/eva) @@ -11181,13 +11053,6 @@ dir = 4 }, /area/construction/mining/aux_base) -"aCU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel, -/area/security/armory) "aCW" = ( /obj/structure/reagent_dispensers/watertank, /obj/effect/spawner/lootdrop/maintenance, @@ -11761,19 +11626,16 @@ /obj/structure/fans/tiny, /turf/open/floor/plating, /area/chapel/main) -"aEp" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 +"aEs" = ( +/obj/structure/window/reinforced, +/obj/vehicle/ridden/secway, +/obj/item/key/security, +/obj/machinery/door/window/eastleft{ + name = "Secway Docking Port" }, -/obj/structure/ore_box, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"aEt" = ( -/obj/item/restraints/handcuffs/fake, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears, -/turf/open/floor/plating, -/area/maintenance/bar) +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/showroomfloor, +/area/space) "aEz" = ( /obj/machinery/power/apc{ dir = 4; @@ -12224,13 +12086,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/dark, /area/chapel/main) -"aFD" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "aFG" = ( /turf/open/floor/plasteel/arrival{ dir = 4 @@ -14315,8 +14170,8 @@ /turf/open/floor/wood, /area/crew_quarters/theatre) "aKK" = ( -/obj/structure/closet/wardrobe/botanist, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/closet/secure_closet/hydroponics, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "aKL" = ( @@ -15037,6 +14892,7 @@ /area/library) "aMI" = ( /obj/machinery/light/small, +/obj/structure/closet/wardrobe/botanist, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "aMJ" = ( @@ -21729,7 +21585,7 @@ /area/maintenance/disposal) "beP" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /turf/open/floor/plating, @@ -21748,7 +21604,7 @@ /area/maintenance/disposal) "beR" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/machinery/recycler, @@ -21760,7 +21616,7 @@ /area/maintenance/disposal) "beS" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/machinery/light/small{ @@ -21775,8 +21631,7 @@ "beU" = ( /obj/machinery/conveyor{ dir = 6; - id = "garbage"; - verted = -1 + id = "garbage" }, /turf/open/floor/plating, /area/maintenance/disposal) @@ -22230,23 +22085,15 @@ /area/hallway/secondary/entry) "bgj" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "garbage" }, /turf/open/floor/plating, /area/maintenance/disposal) "bgk" = ( -/obj/machinery/conveyor{ - dir = 5; - id = "garbage" - }, -/turf/open/floor/plating, -/area/maintenance/disposal) -"bgl" = ( /obj/machinery/conveyor{ dir = 10; - id = "garbage"; - verted = -1 + id = "garbage" }, /turf/open/floor/plating, /area/maintenance/disposal) @@ -22835,7 +22682,6 @@ /area/maintenance/starboard) "bhI" = ( /obj/machinery/conveyor{ - dir = 1; id = "garbage" }, /turf/open/floor/plating, @@ -22894,13 +22740,6 @@ }, /turf/open/floor/plating, /area/maintenance/port) -"bhP" = ( -/obj/machinery/flasher{ - id = "Cell 2"; - pixel_x = -28 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) "bhQ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -23376,7 +23215,6 @@ /area/maintenance/disposal) "bjb" = ( /obj/machinery/conveyor{ - dir = 1; id = "garbage" }, /obj/structure/sign/warning/vacuum{ @@ -23963,9 +23801,7 @@ /area/maintenance/starboard) "bkz" = ( /obj/machinery/conveyor{ - dir = 1; - id = "garbage"; - layer = 2.5 + id = "garbage" }, /obj/machinery/door/poddoor/preopen{ id = "Disposal Exit"; @@ -28298,8 +28134,8 @@ /area/maintenance/starboard) "buB" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = -1; - id = "QMLoad" + id = "QMLoad"; + dir = 8 }, /turf/open/floor/plasteel, /area/quartermaster/storage) @@ -28866,7 +28702,7 @@ /area/maintenance/starboard) "bvS" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "QMLoad" }, /obj/machinery/door/poddoor{ @@ -28878,14 +28714,14 @@ "bvT" = ( /obj/structure/plasticflaps, /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "QMLoad" }, /turf/open/floor/plating, /area/quartermaster/storage) "bvU" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "QMLoad" }, /obj/machinery/light, @@ -28900,7 +28736,7 @@ /area/quartermaster/storage) "bvV" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "QMLoad" }, /obj/effect/turf_decal/stripes/line{ @@ -30403,11 +30239,7 @@ /turf/open/floor/plating, /area/science/server) "bzx" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - target_temperature = 80; - dir = 2; - on = 1 - }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plasteel/dark, /area/science/server) @@ -36005,7 +35837,7 @@ id = "mixingsparker"; pixel_x = 25 }, -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output{ dir = 4 }, /turf/open/floor/engine/vacuum, @@ -36016,9 +35848,8 @@ master_tag = "tox_airlock_control"; pixel_y = 24 }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/engine, @@ -36850,10 +36681,8 @@ id = "mixingsparker"; pixel_x = 25 }, -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 4; - frequency = 1441; - id = "air_in" +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input{ + dir = 4 }, /turf/open/floor/engine/vacuum, /area/science/mixing) @@ -36861,9 +36690,8 @@ /obj/structure/sign/warning/fire{ pixel_y = -32 }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/engine, @@ -40926,8 +40754,7 @@ "bYv" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Mix to Space"; - on = 0 + name = "Mix to Space" }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/port/aft) @@ -41186,8 +41013,7 @@ "bZl" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Mix to Port"; - on = 0 + name = "Mix to Port" }, /obj/machinery/light/small, /turf/open/floor/plating, @@ -42056,10 +41882,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Mix to Space"; - on = 1 + name = "Mix to Space" }, /turf/open/floor/plating/airless, /area/maintenance/port/aft) @@ -43990,11 +43815,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "cgn" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - target_temperature = 80; - dir = 2; - on = 1 - }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, /obj/effect/turf_decal/stripes/line{ dir = 9 }, @@ -45180,8 +45001,7 @@ "cju" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Incinerator to Output"; - on = 0 + name = "Incinerator to Output" }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -45544,12 +45364,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"ckq" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_2) "ckr" = ( /obj/structure/reagent_dispensers/fueltank, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -45832,8 +45646,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/components/binary/pump{ dir = 4; - name = "Mix to Incinerator"; - on = 0 + name = "Mix to Incinerator" }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) @@ -46187,6 +46000,18 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, +/obj/machinery/embedded_controller/radio/airlock_controller{ + airpump_tag = "incinerator_airlock_pump"; + exterior_door_tag = "incinerator_airlock_exterior"; + id_tag = "incinerator_airlock_control"; + interior_door_tag = "incinerator_airlock_interior"; + name = "Incinerator Access Console"; + pixel_x = 38; + pixel_y = 6; + req_access_txt = "12"; + sanitize_external = 1; + sensor_tag = "incinerator_airlock_sensor" + }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "cmg" = ( @@ -46412,9 +46237,8 @@ /turf/open/floor/plasteel, /area/construction) "cmY" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 2; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 2 }, /obj/machinery/light/small{ dir = 8 @@ -46434,9 +46258,8 @@ /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "cmZ" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1 }, /obj/structure/sign/warning/fire{ pixel_x = 32 @@ -46674,10 +46497,9 @@ /turf/open/floor/plating, /area/maintenance/aft) "cnF" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 2; - name = "Waste Out"; - on = 1 + name = "Waste Out" }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -46893,15 +46715,13 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cop" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 1; - frequency = 1441; - id = "inc_in" +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input{ + dir = 1 }, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "coq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/incinerator_output{ dir = 1 }, /obj/structure/sign/warning/vacuum/external{ @@ -46911,14 +46731,15 @@ /area/maintenance/disposal/incinerator) "cor" = ( /obj/machinery/igniter{ - icon_state = "igniter0"; - id = "Incinerator"; - luminosity = 2; - on = 0 + id = "Incinerator" }, /obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/machinery/air_sensor{ + pixel_x = -32; + pixel_y = -32 + }, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cos" = ( @@ -47132,15 +46953,6 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"cpc" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_4) -"cpd" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_4) "cpe" = ( /obj/docking_port/stationary/random{ dir = 8; @@ -47294,6 +47106,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/light{ + dir = 8 + }, /turf/open/floor/plasteel, /area/engine/engineering) "cpE" = ( @@ -47318,52 +47133,6 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"cpJ" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ - dir = 4; - id = "pod4"; - name = "escape pod 4"; - port_direction = 2; - preferred_direction = 4; - timid = 0 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_4) -"cpK" = ( -/obj/machinery/computer/shuttle/pod{ - pixel_y = -32; - possible_destinations = "pod_lavaland2"; - shuttleId = "pod2" - }, -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_2) -"cpL" = ( -/obj/item/storage/pod{ - pixel_x = 6; - pixel_y = -28 - }, -/obj/item/device/radio/intercom{ - pixel_y = 25 - }, -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/light/small, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_2) -"cpM" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_4) "cpN" = ( /obj/machinery/power/turbine{ luminosity = 2 @@ -47544,18 +47313,16 @@ /turf/open/floor/plating, /area/engine/engineering) "cqq" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ +/obj/docking_port/stationary{ dir = 8; - id = "pod2"; - name = "escape pod 2"; - port_direction = 2; - timid = 0 + dwidth = 1; + height = 4; + name = "escape pod loader"; + roundstart_template = /datum/map_template/shuttle/escape_pod/default; + width = 3 }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_2) +/turf/open/space/basic, +/area/space) "cqr" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -47960,13 +47727,13 @@ /obj/structure/lattice/catwalk, /turf/open/space, /area/solar/starboard/aft) +"crH" = ( +/turf/open/space/basic, +/area/space/nearstation) "crI" = ( /obj/structure/chair/stool, /turf/open/floor/plating, /area/engine/engineering) -"crJ" = ( -/turf/open/space/basic, -/area/space/nearstation) "crK" = ( /obj/structure/cable{ icon_state = "1-2" @@ -48026,13 +47793,6 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) -"csb" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "csc" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, @@ -48100,18 +47860,6 @@ /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "csr" = ( -/obj/machinery/embedded_controller/radio/airlock_controller{ - name = "Incinerator Access Console"; - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_access_control"; - interior_door_tag = "incinerator_airlock_interior"; - pixel_x = 6; - pixel_y = -26; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor"; - req_access_txt = "12" - }, /obj/machinery/button/ignition{ id = "Incinerator"; pixel_x = -6; @@ -48123,23 +47871,6 @@ /obj/machinery/meter, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) -"css" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"csx" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) "csy" = ( /obj/structure/table, /obj/item/weldingtool, @@ -48704,8 +48435,7 @@ "cuq" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 0; - name = "Air Out"; - on = 0 + name = "Air Out" }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, @@ -49824,12 +49554,6 @@ /obj/machinery/light/small, /turf/open/floor/plating, /area/hallway/secondary/entry) -"cwU" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_1) "cwV" = ( /obj/docking_port/stationary/random{ dir = 8; @@ -49848,39 +49572,11 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) -"cxl" = ( -/obj/machinery/computer/shuttle/pod{ - pixel_y = -32; - possible_destinations = "pod_lavaland1"; - shuttleId = "pod1" - }, -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) "cxn" = ( /obj/structure/lattice, /obj/effect/landmark/carpspawn, /turf/open/space, /area/space/nearstation) -"cxx" = ( -/obj/item/storage/pod{ - pixel_x = 6; - pixel_y = -28 - }, -/obj/item/device/radio/intercom{ - pixel_y = 25 - }, -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/light/small, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) "cxA" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -49894,24 +49590,10 @@ height = 13; id = "ferry_home"; name = "port bay 2"; - turf_type = /turf/open/space; width = 5 }, /turf/open/space/basic, /area/space) -"cxF" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ - dir = 8; - id = "pod1"; - name = "escape pod 1"; - port_direction = 2; - timid = 0 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) "cxG" = ( /obj/machinery/door/airlock/external{ cyclelinkeddir = 0; @@ -50221,34 +49903,6 @@ "czK" = ( /turf/closed/wall, /area/security/vacantoffice) -"czL" = ( -/obj/machinery/computer/shuttle/pod{ - pixel_y = -32; - possible_destinations = "pod_lavaland4"; - shuttleId = "pod4" - }, -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_4) -"czM" = ( -/obj/item/device/radio/intercom{ - pixel_y = 25 - }, -/obj/item/storage/pod{ - pixel_x = 6; - pixel_y = -32 - }, -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/light/small, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_4) "czN" = ( /obj/docking_port/stationary/random{ dir = 4; @@ -50531,7 +50185,7 @@ /area/maintenance/port/aft) "cAI" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = -1; + dir = 8; id = "garbage"; name = "disposal conveyor" }, @@ -50908,6 +50562,7 @@ /area/maintenance/aft) "cBE" = ( /obj/effect/landmark/event_spawn, +/obj/machinery/air_sensor/atmos/toxins_mixing_tank, /turf/open/floor/engine/vacuum, /area/science/mixing) "cBF" = ( @@ -51155,21 +50810,9 @@ /obj/machinery/deepfryer, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) -"cCs" = ( -/obj/structure/mining_shuttle_beacon{ - dir = 4 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cCt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/docking_port/stationary/public_mining_dock{ - dir = 8 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) +"cCS" = ( +/turf/open/space, +/area/space/nearstation) "cCT" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -51351,13 +50994,6 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) -"cFn" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "cFI" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -51373,7 +51009,7 @@ state = 2 }, /turf/open/floor/plating/airless, -/area/space/nearstation) +/area/space) "cFU" = ( /obj/machinery/power/emitter/anchored{ dir = 8; @@ -51412,11 +51048,11 @@ dir = 8 }, /turf/open/floor/plating/airless, -/area/space/nearstation) +/area/space) "cGV" = ( /obj/machinery/the_singularitygen/tesla, /turf/open/floor/plating/airless, -/area/space/nearstation) +/area/space) "cGZ" = ( /obj/machinery/light{ dir = 4 @@ -51732,15 +51368,6 @@ }, /turf/open/floor/plating, /area/hallway/secondary/entry) -"cIK" = ( -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/maintenance/bar) -"cKY" = ( -/obj/structure/table/wood/poker, -/obj/item/coin/iron, -/turf/open/floor/wood, -/area/maintenance/bar) "cMm" = ( /obj/structure/cable{ icon_state = "1-2" @@ -51803,6 +51430,13 @@ }, /turf/open/floor/plasteel/airless/solarpanel, /area/solar/starboard/aft) +"cNt" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/engine/engineering) "cNE" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, @@ -51990,10 +51624,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"cQG" = ( -/obj/structure/lattice, -/turf/open/space, -/area/space) "cSz" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -52029,6 +51659,10 @@ /obj/machinery/power/tesla_coil, /turf/open/floor/plating/airless, /area/space) +"cSI" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space) "cSK" = ( /obj/structure/cable/yellow{ icon_state = "0-4" @@ -52360,10 +51994,17 @@ "cVb" = ( /turf/closed/wall, /area/hallway/secondary/service) -"dcQ" = ( -/obj/effect/spawner/structure/window/reinforced, +"cXd" = ( +/obj/structure/falsewall, +/obj/effect/turf_decal/delivery/white, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"cZO" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/cleanable/blood/old, +/obj/item/device/assembly/signaler, /turf/open/floor/plating, -/area/space/nearstation) +/area/maintenance/bar) "dfh" = ( /obj/machinery/power/apc{ areastring = "/area/science/circuit"; @@ -52378,21 +52019,9 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"diu" = ( -/obj/structure/chair/stool, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/bar) -"dlj" = ( -/turf/open/floor/plating/airless, -/area/engine/engineering) -"dnc" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "0" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, +"dpp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, /area/maintenance/bar) "dqu" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -52404,66 +52033,44 @@ }, /turf/closed/wall, /area/science/circuit) -"dxw" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Singularity"; - name = "radiation shutters" +"dwQ" = ( +/obj/structure/grille, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"dKf" = ( +/turf/closed/wall/r_wall, +/area/security/armory) +"dMY" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"dAs" = ( -/obj/structure/sign/poster/random{ - pixel_y = -32 +/obj/structure/cable{ + icon_state = "1-2" }, /turf/open/floor/wood, /area/maintenance/bar) -"dCs" = ( -/obj/machinery/button/door{ - id = "Singularity"; - name = "Shutters Control"; - pixel_x = -25; - req_access_txt = "11" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"dFc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/bar) -"dFm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) "dMZ" = ( /obj/structure/sign/poster/official/random{ pixel_y = 32 }, /turf/open/floor/plasteel/white, /area/science/circuit) -"dVC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +"dPI" = ( +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"dTy" = ( +/obj/effect/spawner/lootdrop/keg, +/turf/open/floor/wood{ + icon_state = "wood-broken7" }, -/obj/machinery/light, -/turf/open/floor/plasteel/red/side, -/area/security/brig) +/area/maintenance/bar) +"dUz" = ( +/obj/structure/table/wood, +/obj/item/storage/box/drinkingglasses, +/turf/open/floor/wood, +/area/maintenance/bar) "eaI" = ( /obj/structure/table/reinforced, /obj/item/device/radio/intercom{ @@ -52471,20 +52078,57 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"erb" = ( +"ebz" = ( +/obj/structure/window/reinforced, +/obj/vehicle/ridden/secway, +/obj/item/key/security, +/obj/machinery/door/window/eastleft{ + name = "Secway Docking Port" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/showroomfloor, +/area/space/nearstation) +"eeA" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 + dir = 4 }, -/turf/open/floor/plasteel/red/side{ - dir = 1 +/turf/closed/wall, +/area/maintenance/bar) +"eeO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 }, +/turf/open/floor/plating/airless, +/area/space) +"ejP" = ( +/obj/machinery/suit_storage_unit/security, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"ekX" = ( +/obj/machinery/flasher{ + id = "Cell 4"; + pixel_x = -28 + }, +/turf/open/floor/plasteel/floorgrime, /area/security/brig) -"erH" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable{ - icon_state = "4-8" +"enX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel, +/area/security/armory) +"exs" = ( +/turf/open/floor/plasteel/showroomfloor, +/area/space/nearstation) +"exQ" = ( +/obj/structure/table, +/obj/item/storage/toolbox/drone, +/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "eyM" = ( /obj/machinery/mineral/ore_redemption{ @@ -52494,41 +52138,12 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel, /area/quartermaster/miningdock) -"eyV" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "seclobby"; - name = "security shutters" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/security/brig) -"eCQ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood, -/area/maintenance/bar) "eHI" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) -"eLY" = ( -/obj/effect/turf_decal/stripes/white/line, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 1 - }, -/obj/machinery/door_timer{ - id = "Secure Cell"; - name = "Secure Cell"; - pixel_y = -32 - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) "eRz" = ( /obj/structure/lattice, /obj/structure/grille, @@ -52544,42 +52159,39 @@ }, /turf/open/floor/plasteel, /area/quartermaster/miningdock) -"eXc" = ( -/obj/structure/window/reinforced, -/obj/vehicle/ridden/secway, -/obj/item/key/security, -/obj/machinery/door/window/eastleft{ - name = "Secway Docking Port" +"faG" = ( +/turf/open/floor/plasteel/purple/side{ + tag = "icon-purple (NORTH)"; + icon_state = "purple"; + dir = 1 }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/showroomfloor, -/area/space) -"eXD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/obj/structure/tank_dispenser/oxygen, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"eYQ" = ( -/obj/machinery/vending/kink, -/turf/open/floor/wood, -/area/maintenance/bar) -"fbL" = ( -/obj/structure/table, -/obj/item/storage/toolbox/drone, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/area/crew_quarters/cryopod) "fcG" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, /turf/closed/wall/r_wall, /area/science/mixing) +"fev" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "seclobby"; + name = "security shutters" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/security/brig) "flc" = ( /obj/machinery/bookbinder, /turf/open/floor/plasteel/white, /area/science/circuit) +"flZ" = ( +/turf/open/floor/plasteel/red/side{ + dir = 6 + }, +/area/security/brig) "fnC" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -52593,87 +52205,88 @@ }, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"fnP" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/decal/cleanable/blood/old, -/obj/item/device/assembly/signaler, -/turf/open/floor/plating, -/area/maintenance/bar) -"fpI" = ( -/turf/open/floor/plasteel/red/side{ - dir = 8 +"fvg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/area/security/brig) -"fAn" = ( +/turf/open/floor/plating/airless, +/area/space) +"fBa" = ( /obj/structure/grille, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plating/airless, /area/engine/engineering) -"fAq" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/red/side{ - dir = 4 +"fBP" = ( +/obj/machinery/power/emitter/anchored{ + dir = 4; + state = 2 }, -/area/security/brig) -"fDs" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 +/obj/structure/cable{ + icon_state = "0-8" }, -/turf/open/floor/wood, -/area/maintenance/bar) +/turf/open/floor/plating/airless, +/area/engine/engineering) +"fGf" = ( +/obj/machinery/smartfridge/disks, +/turf/open/floor/plasteel/hydrofloor, +/area/hydroponics) +"fGu" = ( +/obj/structure/lattice, +/obj/structure/grille, +/turf/open/space, +/area/space) +"fJG" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/white/corner, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) "fKl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, /area/science/circuit) -"fPq" = ( -/obj/item/device/radio/intercom{ - freerange = 0; - frequency = 1459; - name = "Station Intercom (General)"; - pixel_x = -30 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/bar) -"fPE" = ( -/obj/structure/table, -/obj/item/grenade/barrier{ - pixel_x = 4 - }, -/obj/item/grenade/barrier, -/obj/item/grenade/barrier{ - pixel_x = -4 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/security/armory) -"fSk" = ( +"fVA" = ( /obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/rack, +/obj/item/clothing/mask/gas/sechailer{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/mask/gas/sechailer, +/obj/item/clothing/mask/gas/sechailer{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"fVS" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable/yellow{ icon_state = "1-2" }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" +/turf/open/floor/plating, +/area/engine/engineering) +"fXl" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Singularity"; + name = "radiation shutters" }, -/area/maintenance/bar) -"fVu" = ( -/obj/machinery/camera/motion{ - c_tag = "Non-Lethal Armory Motion Sensor"; - dir = 4 +/obj/effect/turf_decal/bot{ + dir = 2 }, -/obj/effect/turf_decal/stripes/end{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"fWC" = ( -/obj/machinery/chem_dispenser/drinks/beer, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/maintenance/bar) +/turf/open/floor/plating, +/area/engine/engineering) +"fZs" = ( +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless, +/area/engine/engineering) "gbq" = ( /obj/structure/cable{ icon_state = "4-8" @@ -52686,93 +52299,47 @@ /obj/item/stack/sheet/glass/fifty, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"get" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 +"gcN" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/wood, -/area/maintenance/bar) -"ghy" = ( -/obj/machinery/light/small{ - dir = 8; - light_color = "#fff4bc" +/turf/open/floor/plasteel, +/area/security/armory) +"gjf" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel/red/side{ + dir = 4 }, -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/plating, -/area/engine/engineering) +/area/security/brig) "gjl" = ( /turf/closed/wall, /area/quartermaster/warehouse) -"gmz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"gva" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"gvi" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 +"gqU" = ( +/obj/machinery/door/window/brigdoor/security/cell{ + id = "Cell 3"; + name = "Cell 3" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "4-8" }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"gvx" = ( -/turf/open/floor/plasteel, -/area/security/execution/transfer) +/turf/open/floor/plasteel/red/side, +/area/security/brig) "gwd" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /turf/open/floor/plasteel, /area/science/circuit) -"gAl" = ( -/turf/open/floor/plasteel/red/side{ - dir = 10 +"gKO" = ( +/obj/structure/cable{ + icon_state = "0-8" }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, /area/security/brig) -"gGR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/maintenance/bar) -"gKN" = ( -/obj/structure/bed, -/obj/item/clothing/suit/straight_jacket, -/obj/item/clothing/mask/muzzle, -/turf/open/floor/plasteel, -/area/security/execution/transfer) -"gLD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/maintenance/fore/secondary) "gLH" = ( /obj/machinery/door/airlock/external{ name = "External Access"; @@ -52783,17 +52350,31 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"gMx" = ( -/obj/effect/landmark/start/atmospheric_technician, -/turf/open/floor/plasteel, -/area/engine/atmos) -"gQx" = ( -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (NORTH)"; - icon_state = "purple"; - dir = 1 +"gMt" = ( +/obj/structure/closet/secure_closet/security/sec, +/obj/effect/turf_decal/bot{ + dir = 2 }, -/area/crew_quarters/cryopod) +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"gMI" = ( +/obj/structure/sign/poster/random{ + pixel_y = -32 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) +"gUa" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"gVz" = ( +/obj/structure/table/wood/poker, +/turf/open/floor/wood, +/area/maintenance/bar) "gWd" = ( /obj/structure/cable{ icon_state = "1-4" @@ -52804,18 +52385,6 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) -"gZp" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 1; - id_tag = "lobbyairlock"; - name = "Security Lobby"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, -/area/security/brig) "gZG" = ( /obj/structure/closet/crate/freezer/surplus_limbs, /obj/item/reagent_containers/glass/beaker/synthflesh, @@ -52840,59 +52409,37 @@ }, /turf/open/floor/plating, /area/maintenance/port) -"hfY" = ( -/obj/machinery/flasher{ - id = "brigentry"; - pixel_y = -28 +"hcV" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"hik" = ( -/obj/structure/table/wood, -/obj/item/storage/box/drinkingglasses, /turf/open/floor/wood, /area/maintenance/bar) -"hjI" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, +"heb" = ( +/turf/open/floor/plasteel/red/side, /area/security/brig) -"hnm" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "briggate"; - name = "security shutters" +"heG" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/door/window/eastright{ - name = "Brig Desk"; - req_access_txt = "2" +/turf/open/floor/wood, +/area/maintenance/bar) +"hkC" = ( +/obj/machinery/flasher{ + id = "Cell 3"; + pixel_x = -28 }, -/turf/open/floor/plasteel/dark, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/floorgrime, /area/security/brig) -"hpY" = ( -/obj/effect/spawner/lootdrop/keg, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, +"hpF" = ( +/obj/machinery/vending/kink, +/turf/open/floor/wood, /area/maintenance/bar) -"htN" = ( -/obj/structure/sign/poster/random{ - pixel_y = -32 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"hBF" = ( +"hrd" = ( /obj/machinery/door_timer{ id = "Cell 2"; name = "Cell 2"; @@ -52902,55 +52449,147 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel/red/corner, /area/security/brig) -"hHa" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "briggate"; - name = "security shutters" - }, -/obj/machinery/door/window/southleft{ - base_state = "right"; - icon_state = "right"; - name = "Brig Desk"; - req_access_txt = "1" - }, +"hrv" = ( /obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel/dark, -/area/security/brig) -"hNj" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "0" + icon_state = "1-2" }, /turf/open/floor/plating, -/area/maintenance/bar) -"hXw" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken6" +/area/maintenance/fore/secondary) +"hse" = ( +/obj/structure/closet/l3closet/security, +/turf/open/floor/plasteel/showroomfloor, +/area/space/nearstation) +"hsU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 }, +/turf/open/floor/wood, /area/maintenance/bar) -"iev" = ( +"htj" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/security/armory) -"imZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood{ - icon_state = "wood-broken5" +"hyb" = ( +/obj/structure/table, +/obj/item/storage/box/firingpins, +/obj/item/storage/box/firingpins, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"hHu" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + name = "Incinerator Access"; + req_access_txt = "12" + }, +/obj/structure/barricade/wooden{ + name = "wooden barricade (CLOSED)" + }, +/turf/open/floor/plating, +/area/maintenance/bar) +"hNR" = ( +/obj/structure/table/wood/poker, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"hPY" = ( +/obj/structure/bed, +/obj/item/bedsheet/grey, +/obj/effect/decal/cleanable/semen{ + desc = "Blech."; + name = "dried semen" + }, +/obj/effect/spawner/lootdrop/costume, +/turf/open/floor/plating{ + icon_state = "platingdmg3" }, /area/maintenance/bar) -"inb" = ( -/obj/structure/rack, -/obj/item/gun/energy/e_gun/dragnet, -/obj/item/gun/energy/e_gun/dragnet, -/obj/effect/turf_decal/bot_white, -/obj/item/gun/energy/pumpaction/blaster, -/obj/item/gun/energy/pumpaction/blaster, -/turf/open/floor/plasteel/dark, -/area/security/armory) +"hQe" = ( +/obj/machinery/light/small{ + dir = 8; + light_color = "#fff4bc" + }, +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/plating, +/area/engine/engineering) +"hSf" = ( +/obj/structure/lattice, +/obj/structure/grille, +/turf/open/space/basic, +/area/space) +"hYu" = ( +/obj/structure/table, +/obj/item/storage/toolbox/electrical{ + pixel_x = 2; + pixel_y = 4 + }, +/obj/item/storage/toolbox/electrical{ + pixel_x = -2 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"hZr" = ( +/obj/machinery/door_timer{ + id = "Cell 3"; + name = "Cell 3"; + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/red/corner, +/area/security/brig) +"iaO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"iei" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/red/side{ + dir = 4 + }, +/area/security/brig) +"iex" = ( +/turf/open/space/basic, +/area/engine/engineering) +"ifj" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + req_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/maintenance/bar) +"ilR" = ( +/obj/machinery/power/apc{ + areastring = "/area/crew_quarters/cryopod"; + dir = 4; + name = "Cryogenics APC"; + pixel_x = 24 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/crew_quarters/cryopod) +"iob" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel/red/side{ + dir = 4 + }, +/area/security/brig) "ipA" = ( /obj/machinery/droneDispenser, /turf/open/floor/plating, @@ -52961,37 +52600,13 @@ /obj/item/pen, /turf/open/floor/plasteel/white, /area/science/circuit) -"ivo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +"iCL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 2; - id_tag = "innerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/red/side{ - dir = 9 - }, -/area/security/brig) -"iyf" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"iyX" = ( -/obj/machinery/vending/cigarette, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/brig) -"iDC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/maintenance/bar) +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "iEJ" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod One" @@ -53001,10 +52616,6 @@ }, /turf/open/floor/plating, /area/hallway/secondary/entry) -"iFU" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/space) "iNn" = ( /obj/machinery/camera{ c_tag = "Kitchen Cold Room" @@ -53013,26 +52624,43 @@ /obj/structure/reagent_dispensers/cooking_oil, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) -"iUe" = ( -/turf/open/floor/plasteel/red/corner{ - dir = 1 +"iPE" = ( +/obj/structure/bed, +/obj/item/clothing/suit/straight_jacket, +/obj/item/clothing/mask/muzzle, +/turf/open/floor/plasteel, +/area/security/execution/transfer) +"iWy" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 }, -/area/security/brig) -"iVO" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Engine Containment Port Aft"; - dir = 1; - network = list("engine") +/turf/open/floor/wood, +/area/maintenance/bar) +"iWK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/maintenance/bar) +"iWM" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"iWY" = ( -/obj/structure/cable{ - icon_state = "1-8" +/turf/open/floor/wood{ + icon_state = "wood-broken6" }, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) +/area/maintenance/bar) +"iXO" = ( +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/obj/machinery/newscaster{ + pixel_x = 30 + }, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/maintenance/bar) "jbf" = ( /obj/structure/cable{ icon_state = "0-2" @@ -53045,33 +52673,19 @@ }, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"jcD" = ( -/obj/structure/rack, -/obj/item/clothing/suit/armor/bulletproof{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/suit/armor/bulletproof{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001; - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001; - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/security/armory) +"jbA" = ( +/obj/structure/sign/warning/securearea, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"jbT" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/maintenance/bar) +"jcS" = ( +/obj/machinery/light, +/turf/open/floor/plating/airless, +/area/engine/engineering) "jgm" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -53090,14 +52704,9 @@ /obj/machinery/rnd/production/techfab/department/cargo, /turf/open/floor/plasteel, /area/quartermaster/office) -"jlZ" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/maintenance/bar) +"jnp" = ( +/turf/open/floor/plasteel/dark, +/area/security/processing) "jrE" = ( /obj/machinery/rnd/production/protolathe/department/science, /obj/structure/sign/poster/official/random{ @@ -53105,28 +52714,33 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"jrJ" = ( +"jrX" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/bar) +"jsN" = ( +/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ - icon_state = "0-8" + icon_state = "4-8" }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/security/brig) -"jyK" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Brig Control"; - req_access_txt = "3" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/brig) +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"juA" = ( +/obj/machinery/flasher/portable, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/security/armory) "jAD" = ( /obj/structure/grille, /turf/open/floor/plating/airless, /area/space/nearstation) +"jAM" = ( +/obj/machinery/suit_storage_unit/security, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "jCq" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -53139,27 +52753,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"jCY" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/maintenance/fore/secondary) -"jEl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"jFG" = ( -/obj/structure/table, -/obj/item/storage/box/firingpins, -/obj/item/storage/box/firingpins, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) "jHt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment{ @@ -53173,28 +52766,24 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"jKG" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 1; - id_tag = "lobbyairlock"; - name = "Security Lobby"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"jMi" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "jMF" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, /turf/closed/wall, /area/science/circuit) +"jOb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance/abandoned{ + req_access_txt = "0" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/bar) "jSO" = ( /obj/machinery/light{ dir = 4 @@ -53204,6 +52793,23 @@ }, /turf/open/floor/plasteel, /area/science/circuit) +"jTA" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Engine Containment Starboard Aft"; + dir = 1; + network = list("engine") + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"jUO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/armory) "jVl" = ( /obj/structure/cable{ icon_state = "4-8" @@ -53213,33 +52819,64 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"jWi" = ( -/turf/open/floor/plasteel/showroomfloor, -/area/space/nearstation) -"jXD" = ( -/obj/machinery/flasher{ - id = "Cell 3"; - pixel_x = -28 +"jZP" = ( +/obj/item/device/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_x = -30 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 +/turf/open/floor/wood{ + icon_state = "wood-broken" }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"kbf" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Singularity"; - name = "radiation shutters" +/area/maintenance/bar) +"kbh" = ( +/obj/machinery/light{ + dir = 8 }, -/obj/effect/turf_decal/bot{ - dir = 2 +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/plating, +/obj/structure/grille, +/turf/open/floor/plating/airless, /area/engine/engineering) -"kgu" = ( -/turf/open/space/basic, +"kbA" = ( +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating/airless, /area/engine/engineering) +"kcH" = ( +/obj/machinery/cryopod{ + tag = "icon-cryopod-open (EAST)"; + icon_state = "cryopod-open"; + dir = 4 + }, +/turf/open/floor/noslip, +/area/crew_quarters/cryopod) +"kdx" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/closet/secure_closet/brig{ + id = "Secure Cell"; + name = "Secure Cell Locker" + }, +/obj/effect/turf_decal/stripes/white/end{ + dir = 4 + }, +/obj/effect/turf_decal/delivery/white, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) "khb" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -53257,6 +52894,20 @@ }, /turf/open/floor/plating, /area/maintenance/fore/secondary) +"kjK" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"klO" = ( +/obj/effect/landmark/secequipment, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) "knx" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/engineering{ @@ -53277,95 +52928,78 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"kqE" = ( -/obj/structure/table/wood/poker, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +"kso" = ( +/obj/machinery/button/door{ + id = "Singularity"; + name = "Shutters Control"; + pixel_x = -25; + req_access_txt = "11" }, -/turf/open/floor/wood, -/area/maintenance/bar) -"ksK" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - name = "Incinerator Access"; - req_access_txt = "12" +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/structure/barricade/wooden{ - name = "wooden barricade (CLOSED)" +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, /turf/open/floor/plating, -/area/maintenance/bar) -"kuC" = ( -/obj/item/shard, -/obj/item/wirecutters, -/obj/item/wallframe/camera, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/bar) -"kvn" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/brig) -"kwU" = ( +/area/engine/engineering) +"ksW" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/red/corner{ - dir = 8 - }, -/area/security/brig) -"kyp" = ( /obj/machinery/door/firedoor, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 1; - id_tag = "outerbrig"; + cyclelinkeddir = 2; + id_tag = "innerbrig"; name = "Brig"; req_access_txt = "63" }, /turf/open/floor/plasteel/red/side{ - dir = 9 + dir = 10 }, /area/security/brig) +"ktN" = ( +/obj/effect/turf_decal/loading_area/white, +/obj/effect/turf_decal/stripes/white/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/white/corner, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"kwo" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/armory) "kzT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, /turf/closed/wall/r_wall, /area/science/mixing) -"kEw" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "4-8" +"kBh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"kIZ" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-4" +/turf/open/floor/plasteel/red/corner{ + dir = 1 }, -/turf/open/floor/plating, -/area/security/warden) -"kOs" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) +/area/security/brig) +"kNF" = ( +/obj/structure/closet/bombcloset/security, +/turf/open/floor/plasteel/showroomfloor, +/area/space) "kOw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/white, /area/science/mixing) +"kOO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/bar) "kPd" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/structure/cable{ @@ -53373,17 +53007,6 @@ }, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"kPh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/maintenance/bar) -"kPB" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "kQk" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance{ @@ -53392,61 +53015,56 @@ }, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) +"kRe" = ( +/obj/item/restraints/handcuffs/fake, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears, +/turf/open/floor/plating, +/area/maintenance/bar) "kSb" = ( /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/quartermaster/miningdock) -"ldw" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space, -/area/space) -"ldy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/red/side{ - dir = 6 +"kTZ" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Singularity"; + name = "radiation shutters" }, -/area/security/brig) -"lgs" = ( -/obj/structure/table/wood/poker, -/turf/open/floor/wood, -/area/maintenance/bar) -"lkm" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space) -"lkA" = ( -/obj/machinery/power/apc{ - areastring = "/area/maintenance/bar"; - dir = 2; - name = "Maintenance Bar APC"; - pixel_x = 1; - pixel_y = -24 - }, -/obj/structure/cable, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"lkC" = ( -/obj/structure/sign/poster/official/no_erp, -/turf/closed/wall, -/area/maintenance/bar) -"lmZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"lou" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/light/small{ - dir = 4 +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"kUh" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"kXH" = ( +/obj/structure/falsewall, +/turf/open/floor/plating, +/area/maintenance/bar) +"leL" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/red/side{ + dir = 10 + }, +/area/security/brig) +"lnm" = ( +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/obj/item/crowbar, +/obj/item/device/electropack/shockcollar, +/turf/open/floor/plating, +/area/maintenance/bar) +"lyP" = ( +/obj/machinery/flasher{ + id = "Cell 2"; + pixel_x = -28 }, /turf/open/floor/plasteel/floorgrime, /area/security/brig) @@ -53454,357 +53072,19 @@ /obj/structure/sign/nanotrasen, /turf/closed/wall, /area/science/circuit) -"lJX" = ( -/obj/structure/closet/secure_closet/security/sec, -/obj/effect/turf_decal/bot{ - dir = 2 +"lCe" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) +/turf/open/floor/plating/airless, +/area/engine/engineering) "lMg" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 }, /turf/open/floor/plasteel, /area/science/circuit) -"lQG" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/science/circuit) -"lTm" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/engine/engineering) -"lXp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/brig) -"maf" = ( -/obj/structure/sign/warning/securearea, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"mdX" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"mkG" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"mlj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "0" - }, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/bar) -"msk" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"mtY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"mwi" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"mxQ" = ( -/obj/machinery/door/poddoor/shutters{ - id = "lowsecarmory"; - name = "Non-Lethal Armoury Shutter" - }, -/obj/machinery/button/door{ - id = "lowsecarmory"; - name = "Non-Lethal Armory Shutters"; - pixel_y = 26; - req_access_txt = "3" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/security/main) -"myR" = ( -/obj/structure/table/glass, -/obj/item/paper_bin, -/obj/item/pen/blue, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (NORTH)"; - icon_state = "purple"; - dir = 1 - }, -/area/crew_quarters/cryopod) -"mAD" = ( -/obj/machinery/door_timer{ - id = "Cell 3"; - name = "Cell 3"; - pixel_y = -32 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner, -/area/security/brig) -"mDW" = ( -/obj/machinery/flasher{ - id = "Cell 4"; - pixel_x = -28 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"mFn" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space) -"mGv" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"mNi" = ( -/obj/machinery/light_switch{ - pixel_x = -20 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"mRe" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"mTC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood, -/area/maintenance/bar) -"mUH" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"ndn" = ( -/turf/open/floor/plasteel/red/side{ - dir = 6 - }, -/area/security/brig) -"nrJ" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/hallway/primary/fore) -"nrT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/bar) -"nvm" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"nxv" = ( -/obj/machinery/power/apc{ - name = "Construction Area APC"; - areastring = "/area/construction"; - pixel_y = -24 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/construction) -"nyw" = ( -/turf/closed/wall/r_wall, -/area/space) -"nAW" = ( -/turf/open/floor/wood, -/area/maintenance/bar) -"nBt" = ( -/obj/machinery/vending/games{ - name = "\improper Good 'Clean' Fun" - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"nGt" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"nNQ" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/white/corner, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"nQE" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"nRD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"nRG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"nYB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/maintenance/fore/secondary) -"oaS" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"oce" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/science/mixing) -"odi" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"ofH" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"ouy" = ( -/obj/structure/table/wood/poker, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/item/storage/pill_bottle/dice, -/turf/open/floor/wood, -/area/maintenance/bar) -"oyk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"oFD" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/table/wood, -/obj/item/reagent_containers/spray/cleaner, -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/maintenance/bar) -"oHs" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/security/brig) -"oHU" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"oUh" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"oWs" = ( -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"pfR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"piG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/security/armory) -"pmD" = ( -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"pvp" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"pAL" = ( +"lNf" = ( /obj/machinery/door/window/brigdoor/security/cell{ dir = 4; id = "Secure Cell"; @@ -53826,6 +53106,377 @@ dir = 8 }, /area/security/execution/transfer) +"lQG" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/science/circuit) +"lSn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/engine/engineering) +"lUX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel/red/side, +/area/security/brig) +"lWf" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"mjp" = ( +/obj/machinery/chem_dispenser/drinks/beer, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/maintenance/bar) +"mtP" = ( +/obj/machinery/vending/autodrobe, +/turf/open/floor/wood, +/area/maintenance/bar) +"mDn" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/brigdoor{ + dir = 1; + name = "Armory Desk"; + req_access_txt = "3" + }, +/obj/machinery/door/window/southleft{ + name = "Reception Desk"; + req_access_txt = "63" + }, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/brig) +"mES" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/maintenance/bar) +"mNi" = ( +/obj/machinery/light_switch{ + pixel_x = -20 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"mOo" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"mOS" = ( +/obj/structure/sign/poster/official/no_erp, +/turf/closed/wall, +/area/maintenance/bar) +"mQL" = ( +/obj/effect/turf_decal/stripes/white/line, +/obj/effect/turf_decal/stripes/white/corner{ + dir = 1 + }, +/obj/machinery/door_timer{ + id = "Secure Cell"; + name = "Secure Cell"; + pixel_y = -32 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"mRe" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"mTp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/security/brig) +"mZB" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"nfW" = ( +/turf/open/floor/plasteel, +/area/security/execution/transfer) +"nip" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/space) +"nlM" = ( +/turf/open/floor/plasteel/red/corner{ + dir = 1 + }, +/area/security/brig) +"noe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"nok" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"nvz" = ( +/obj/structure/table, +/obj/item/grenade/barrier{ + pixel_x = 4 + }, +/obj/item/grenade/barrier, +/obj/item/grenade/barrier{ + pixel_x = -4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/security/armory) +"nxv" = ( +/obj/machinery/power/apc{ + name = "Construction Area APC"; + areastring = "/area/construction"; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/construction) +"nzk" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Singularity"; + name = "radiation shutters" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"nzm" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating/airless, +/area/space) +"nDS" = ( +/obj/structure/rack, +/obj/item/gun/energy/e_gun/dragnet, +/obj/item/gun/energy/e_gun/dragnet, +/obj/effect/turf_decal/bot_white, +/obj/item/gun/energy/pumpaction/blaster, +/obj/item/gun/energy/pumpaction/blaster, +/turf/open/floor/plasteel/dark, +/area/security/armory) +"nGt" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"nRG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"nZe" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + req_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/bar) +"oce" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"ohN" = ( +/turf/closed/wall, +/area/space) +"oEn" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/camera/motion{ + c_tag = "Armory Motion Sensor"; + dir = 2; + name = "motion-sensitive security camera" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"oFD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + cyclelinkeddir = 2; + id_tag = "innerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel/red/side{ + dir = 9 + }, +/area/security/brig) +"oFM" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/security/glass{ + cyclelinkeddir = 1; + id_tag = "outerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel/red/side{ + dir = 9 + }, +/area/security/brig) +"oHU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"oLO" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"oUh" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"oUp" = ( +/turf/open/floor/plasteel/red/side{ + dir = 8 + }, +/area/security/brig) +"pjh" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) +"pvY" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"pye" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_x = 30 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) +"pyu" = ( +/obj/structure/window/reinforced, +/obj/machinery/door/window/eastleft{ + name = "Cyborg Docking Port" + }, +/obj/machinery/recharge_station, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"pzB" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"pGb" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/security/brig) "pHl" = ( /obj/structure/table, /obj/item/storage/box/beakers{ @@ -53854,40 +53505,39 @@ }, /turf/open/floor/plasteel/white, /area/medical/sleeper) +"pLn" = ( +/obj/machinery/conveyor/inverted{ + dir = 5; + id = "garbage" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"pLx" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) +"pNk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "pNx" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, /area/science/misc_lab) -"pPZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 4 - }, -/area/security/brig) -"pSC" = ( -/obj/machinery/door/window/brigdoor/security/cell{ - id = "Cell 3"; - name = "Cell 3" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +"pRH" = ( +/obj/structure/grille, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-4" }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"pYB" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/airlock/external{ - name = "Engineering External Access"; - req_access = null; - req_access_txt = "10;13" - }, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/engine/engineering) "qeQ" = ( /obj/effect/turf_decal/stripes/line{ @@ -53895,6 +53545,14 @@ }, /turf/open/floor/plasteel, /area/science/circuit) +"qne" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/bar) "qpv" = ( /obj/machinery/light{ dir = 4 @@ -53902,70 +53560,48 @@ /obj/machinery/autolathe, /turf/open/floor/plasteel/white, /area/science/circuit) -"qtN" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "quT" = ( /obj/structure/lattice, /obj/structure/grille/broken, /turf/open/space/basic, /area/space/nearstation) -"qzP" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" +"qyv" = ( +/obj/machinery/door/poddoor/shutters{ + id = "lowsecarmory"; + name = "Non-Lethal Armoury Shutter" }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, +/obj/machinery/button/door{ + id = "lowsecarmory"; + name = "Non-Lethal Armory Shutters"; + pixel_y = 26; + req_access_txt = "3" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/security/main) +"qyS" = ( +/obj/effect/landmark/start/atmospheric_technician, +/turf/open/floor/plasteel, +/area/engine/atmos) +"qCO" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/yellow/side, /area/engine/engineering) -"qAQ" = ( -/obj/structure/falsewall, -/obj/effect/turf_decal/delivery/white, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"qDH" = ( -/obj/structure/bed, -/obj/item/bedsheet/grey, -/obj/effect/decal/cleanable/semen{ - desc = "Blech."; - name = "dried semen" - }, -/obj/effect/spawner/lootdrop/costume, -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/maintenance/bar) -"qIa" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/plasteel/red/side{ +"qLG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/turf/open/floor/plasteel/red/corner{ + dir = 8 + }, /area/security/brig) -"qVU" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Singularity"; - name = "radiation shutters" +"qRE" = ( +/obj/structure/cable{ + icon_state = "1-4" }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"qYL" = ( /obj/structure/grille, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, /turf/open/floor/plating/airless, /area/engine/engineering) "rcD" = ( @@ -53974,89 +53610,116 @@ }, /turf/closed/wall/r_wall, /area/science/circuit) +"rez" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + cyclelinkeddir = 1; + id_tag = "lobbyairlock"; + name = "Security Lobby"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/security/brig) "rfW" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) -"rjW" = ( -/obj/effect/landmark/secequipment, -/obj/effect/turf_decal/bot{ - dir = 2 +"rkz" = ( +/obj/machinery/power/apc{ + areastring = "/area/maintenance/bar"; + dir = 2; + name = "Maintenance Bar APC"; + pixel_x = 1; + pixel_y = -24 }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) +/obj/structure/cable, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) +"rmR" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/engine/engineering) "rmX" = ( /obj/structure/table, /obj/item/reagent_containers/food/drinks/beer, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"rre" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" +"rrQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, /turf/open/floor/plating/airless, -/area/engine/engineering) -"rDl" = ( -/obj/structure/table/wood, -/turf/open/floor/wood{ - icon_state = "wood-broken5" +/area/space) +"rth" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/area/maintenance/bar) +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"rtI" = ( +/turf/open/floor/plasteel/purple/side, +/area/crew_quarters/cryopod) +"rwa" = ( +/turf/closed/wall, +/area/crew_quarters/cryopod) +"rzC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space) "rKP" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, /turf/open/floor/plating, /area/construction) -"rRb" = ( +"rQi" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 1 + }, +/area/hallway/primary/fore) +"rVy" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"rXD" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/bar) -"rRI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/engine/engineering) -"rUB" = ( -/obj/structure/grille, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space) -"rVc" = ( -/obj/structure/window/reinforced, -/obj/machinery/door/window/eastleft{ - name = "Cyborg Docking Port" - }, -/obj/machinery/recharge_station, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) -"rWi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/structure/cable{ + icon_state = "2-4" }, /turf/open/floor/wood, /area/maintenance/bar) -"rYe" = ( -/obj/structure/table, -/obj/item/storage/toolbox/electrical{ - pixel_x = 2; - pixel_y = 4 +"rYO" = ( +/turf/closed/wall, +/area/maintenance/bar) +"rZN" = ( +/obj/machinery/light{ + dir = 4 }, -/obj/item/storage/toolbox/electrical{ - pixel_x = -2 +/obj/structure/table/wood, +/obj/item/reagent_containers/spray/cleaner, +/turf/open/floor/wood{ + icon_state = "wood-broken6" }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) +/area/maintenance/bar) "saK" = ( /obj/structure/closet/crate, /obj/item/target/alien, @@ -54069,18 +53732,31 @@ /obj/item/gun/energy/laser/practice, /turf/open/floor/plasteel/white, /area/science/circuit) -"siI" = ( -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 +"sfz" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Engine Containment Port Aft"; + dir = 1; + network = list("engine") }, -/obj/item/pen, -/obj/machinery/newscaster{ - pixel_x = 30 +/turf/open/floor/plating/airless, +/area/engine/engineering) +"sfS" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 }, -/obj/structure/table/wood, /turf/open/floor/wood, /area/maintenance/bar) +"siw" = ( +/obj/structure/table/glass, +/obj/item/paper_bin, +/obj/item/pen/blue, +/turf/open/floor/plasteel/purple/side{ + tag = "icon-purple (NORTH)"; + icon_state = "purple"; + dir = 1 + }, +/area/crew_quarters/cryopod) "slk" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -54093,50 +53769,259 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"soK" = ( -/obj/effect/turf_decal/loading_area/white, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 8 +"soh" = ( +/turf/open/floor/plasteel/showroomfloor, +/area/space) +"svF" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Brig Control"; + req_access_txt = "3" }, -/obj/effect/turf_decal/stripes/white/corner, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"ssC" = ( -/turf/open/floor/plasteel/purple/side, -/area/crew_quarters/cryopod) -"stI" = ( -/obj/item/lighter/greyscale, -/obj/effect/decal/cleanable/semen{ - desc = "Blech."; - name = "dried semen" +/turf/open/floor/plasteel/showroomfloor, +/area/security/brig) +"swV" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/plating{ - icon_state = "panelscorched" +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = null; + req_access_txt = "10;13" }, -/area/maintenance/bar) -"stR" = ( -/obj/machinery/power/apc{ - areastring = "/area/crew_quarters/cryopod"; - dir = 4; - name = "Cryogenics APC"; - pixel_x = 24 - }, -/obj/structure/cable, /turf/open/floor/plating, -/area/crew_quarters/cryopod) +/area/engine/engineering) "sxs" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/table, /obj/item/shovel/spade, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"sxz" = ( +"sxZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/red/side{ + dir = 6 + }, +/area/security/brig) +"sCb" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "briggate"; + name = "security shutters" + }, +/obj/machinery/door/window/southleft{ + base_state = "right"; + icon_state = "right"; + name = "Brig Desk"; + req_access_txt = "1" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/dark, +/area/security/brig) +"sHb" = ( +/turf/closed/wall/r_wall, +/area/space) +"sHe" = ( +/obj/machinery/computer/cryopod{ + pixel_y = 25 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/prison) +"sIS" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/security/warden) +"sLb" = ( /obj/effect/turf_decal/stripes/line{ - dir = 5 + dir = 2 }, /turf/open/floor/plating/airless, -/area/space/nearstation) -"szF" = ( +/area/space) +"sLv" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"sOa" = ( +/turf/open/floor/plating/airless, +/area/engine/engineering) +"sOs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance/abandoned, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"sPd" = ( +/turf/open/floor/plasteel/red/corner{ + dir = 4 + }, +/area/security/brig) +"sQG" = ( +/obj/machinery/camera/motion{ + c_tag = "Non-Lethal Armory Motion Sensor"; + dir = 4 + }, +/obj/effect/turf_decal/stripes/end{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/armory) +"sRl" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/maintenance/bar) +"sSO" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/white/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"sSW" = ( +/obj/structure/chair/office/light, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"sTB" = ( +/turf/open/floor/plasteel/red/side{ + dir = 10 + }, +/area/security/brig) +"sXy" = ( +/obj/machinery/door/airlock/external{ + name = "Security External Airlock"; + req_access_txt = "63" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/security/main) +"tal" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/hallway/secondary/service) +"tdg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 4 + }, +/area/security/brig) +"tgb" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"tDm" = ( +/obj/structure/table/wood, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/bar) +"tII" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) +"tMl" = ( +/obj/effect/turf_decal/loading_area, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"tNR" = ( +/obj/structure/sign/poster/random{ + pixel_x = -32 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) +"tOq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"tPI" = ( +/obj/structure/table/wood/poker, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/item/storage/pill_bottle/dice, +/turf/open/floor/wood, +/area/maintenance/bar) +"tRB" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/cryopod{ + tag = "icon-cryopod-open (EAST)"; + icon_state = "cryopod-open"; + dir = 4 + }, +/turf/open/floor/noslip, +/area/crew_quarters/cryopod) +"tXL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/maintenance/disposal/incinerator) +"uoB" = ( +/obj/structure/table/reinforced, +/obj/item/device/multitool, +/obj/item/screwdriver, +/obj/machinery/camera{ + c_tag = "Circuitry Lab North"; + network = list("ss13","rd") + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"uqz" = ( +/obj/structure/rack, +/obj/item/clothing/suit/armor/bulletproof{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001; + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001; + pixel_x = 3; + pixel_y = -3 + }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/security/armory) +"uuU" = ( /obj/structure/rack, /obj/item/clothing/suit/armor/riot{ pixel_x = -3; @@ -54168,333 +54053,24 @@ /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/security/armory) -"sCR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"sDk" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"sFW" = ( -/turf/closed/wall, -/area/maintenance/bar) -"sJQ" = ( -/obj/structure/closet/bombcloset/security, -/turf/open/floor/plasteel/showroomfloor, -/area/space) -"sLv" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"sOs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance/abandoned, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"sOy" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" +"uCa" = ( +/obj/structure/chair/stool, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -35 }, /turf/open/floor/wood, /area/maintenance/bar) -"sPM" = ( -/turf/closed/wall, -/area/crew_quarters/cryopod) -"sSW" = ( -/obj/structure/chair/office/light, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"sXy" = ( -/obj/machinery/door/airlock/external{ - name = "Security External Airlock"; - req_access_txt = "63" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/plating, -/area/security/main) -"tal" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/hallway/secondary/service) -"tgx" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/closet/secure_closet/brig{ - id = "Secure Cell"; - name = "Secure Cell Locker" - }, -/obj/effect/turf_decal/stripes/white/end{ - dir = 4 - }, -/obj/effect/turf_decal/delivery/white, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"tmi" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/brig) -"tof" = ( -/obj/machinery/power/emitter/anchored{ - dir = 4; - state = 2 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"toZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"tyq" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/rack, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/mask/gas/sechailer, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"tMh" = ( -/turf/closed/wall/r_wall, -/area/security/armory) -"tMl" = ( -/obj/effect/turf_decal/loading_area, -/turf/open/floor/plasteel/showroomfloor, -/area/crew_quarters/kitchen) -"tNC" = ( +"uCz" = ( /turf/open/floor/wood{ - icon_state = "wood-broken5" + icon_state = "wood-broken6" }, /area/maintenance/bar) -"tNK" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"tOq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/science/mixing) -"tQO" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (EAST)"; - icon_state = "cryopod-open"; - dir = 4 - }, -/turf/open/floor/noslip, -/area/crew_quarters/cryopod) -"tRc" = ( -/obj/structure/sign/poster/random{ - pixel_x = -32 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"tSN" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Engine Containment Starboard Aft"; - dir = 1; - network = list("engine") - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"tVF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "0" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/bar) -"tXL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/closed/wall/r_wall, -/area/maintenance/disposal/incinerator) -"uaf" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 5 - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"ujA" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) -"umb" = ( -/obj/machinery/suit_storage_unit/security, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"uow" = ( -/turf/closed/wall, -/area/space) -"uoB" = ( -/obj/structure/table/reinforced, -/obj/item/device/multitool, -/obj/item/screwdriver, -/obj/machinery/camera{ - c_tag = "Circuitry Lab North"; - network = list("ss13","rd") - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"utg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 2; - id_tag = "innerbrig"; - name = "Brig"; - req_access_txt = "63" - }, +"uJC" = ( +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/security/brig) -"utm" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/newscaster{ - pixel_x = 30 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"utC" = ( -/obj/machinery/suit_storage_unit/security, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"uut" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"uwV" = ( -/obj/machinery/vending/clothing, -/turf/open/floor/wood, -/area/maintenance/bar) -"uze" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/maintenance/bar) -"uAb" = ( -/obj/effect/spawner/lootdrop/keg, -/turf/open/floor/wood, -/area/maintenance/bar) -"uAc" = ( -/obj/structure/window/reinforced, -/obj/vehicle/ridden/secway, -/obj/item/key/security, -/obj/machinery/door/window/eastleft{ - name = "Secway Docking Port" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/showroomfloor, -/area/space/nearstation) -"uDn" = ( -/obj/machinery/vending/autodrobe, -/turf/open/floor/wood, -/area/maintenance/bar) -"uER" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor{ - dir = 1; - name = "Armory Desk"; - req_access_txt = "3" - }, -/obj/machinery/door/window/southleft{ - name = "Reception Desk"; - req_access_txt = "63" - }, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel/showroomfloor, /area/security/brig) "uNu" = ( /obj/structure/disposalpipe/segment{ @@ -54527,14 +54103,14 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"uYC" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 +"uXp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/maintenance/abandoned{ + req_access_txt = "0" }, -/obj/machinery/light{ - dir = 8 +/turf/open/floor/wood{ + icon_state = "wood-broken" }, -/turf/open/floor/wood, /area/maintenance/bar) "vbD" = ( /obj/machinery/door/firedoor, @@ -54547,10 +54123,30 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) -"vmf" = ( -/obj/structure/falsewall, -/turf/open/floor/plating, +"vnJ" = ( +/obj/machinery/vending/games{ + name = "\improper Good 'Clean' Fun" + }, +/turf/open/floor/wood, /area/maintenance/bar) +"vob" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"vrL" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/engine/engineering) +"vvD" = ( +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "vxh" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance{ @@ -54567,11 +54163,6 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"vzq" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood, -/area/maintenance/bar) "vCb" = ( /obj/machinery/rnd/production/techfab/department/service, /turf/open/floor/plasteel/hydrofloor, @@ -54580,25 +54171,47 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/white, /area/science/circuit) -"vMV" = ( +"vDk" = ( +/obj/machinery/flasher{ + id = "brigentry"; + pixel_y = -28 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) +"vEf" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"vEr" = ( +/obj/structure/grille, /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) -"vPg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/corner, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, /obj/structure/cable{ - icon_state = "2-4" + icon_state = "1-4" }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) +/turf/open/floor/plating/airless, +/area/engine/engineering) +"vHG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) +"vMr" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/security/brig) "vPE" = ( /obj/machinery/light{ dir = 4 @@ -54606,34 +54219,48 @@ /obj/machinery/libraryscanner, /turf/open/floor/plasteel/white, /area/science/circuit) -"vPG" = ( +"vSg" = ( +/turf/open/floor/wood, +/area/maintenance/bar) +"weO" = ( /obj/structure/table/wood, /obj/machinery/chem_dispenser/drinks, /turf/open/floor/wood, /area/maintenance/bar) -"waV" = ( -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" +"whD" = ( +/obj/structure/chair/stool, +/turf/open/floor/wood{ + icon_state = "wood-broken7" }, -/obj/item/crowbar, -/obj/item/device/electropack/shockcollar, -/turf/open/floor/plating, /area/maintenance/bar) -"wdZ" = ( -/turf/open/floor/plasteel/dark, -/area/security/processing) +"wjY" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/space/nearstation) "wkN" = ( /turf/closed/wall, /area/science/circuit) -"wom" = ( -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (EAST)"; - icon_state = "cryopod-open"; - dir = 4 +"wph" = ( +/obj/docking_port/stationary{ + area_type = /area/construction/mining/aux_base; + dheight = 4; + dir = 8; + dwidth = 4; + height = 9; + id = "aux_base_zone"; + name = "aux base zone"; + roundstart_template = /datum/map_template/shuttle/aux_base/default; + width = 9 }, -/turf/open/floor/noslip, -/area/crew_quarters/cryopod) +/turf/open/floor/plating, +/area/construction/mining/aux_base) +"wpT" = ( +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "wrp" = ( /obj/machinery/light{ dir = 8 @@ -54657,54 +54284,62 @@ }, /turf/closed/wall, /area/hallway/secondary/service) -"wEi" = ( -/obj/machinery/computer/cryopod{ - pixel_y = 25 +"wCj" = ( +/obj/item/lighter/greyscale, +/obj/effect/decal/cleanable/semen{ + desc = "Blech."; + name = "dried semen" }, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) -"wFC" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/bar) "wHz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) -"wRi" = ( -/turf/open/floor/plasteel/showroomfloor, -/area/space) -"wTe" = ( -/obj/structure/chair/stool, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"wUk" = ( -/turf/open/floor/plasteel/red/corner{ - dir = 4 +"wJD" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + cyclelinkeddir = 1; + id_tag = "lobbyairlock"; + name = "Security Lobby"; + req_access_txt = "0" }, +/turf/open/floor/plasteel/red/side, /area/security/brig) +"wUX" = ( +/obj/structure/table/wood/poker, +/obj/item/coin/iron, +/turf/open/floor/wood, +/area/maintenance/bar) "wUY" = ( /obj/structure/table, /obj/item/reagent_containers/glass/bucket, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"wWq" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"wZZ" = ( +"wWN" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/effect/turf_decal/stripes/line{ - dir = 9 + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/armory) +"wXT" = ( +/obj/structure/chair/stool, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/maintenance/bar) +"wZS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, /turf/open/floor/plating/airless, -/area/space/nearstation) +/area/space) "xhV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -54725,31 +54360,36 @@ }, /turf/open/floor/plating, /area/hallway/secondary/service) -"xiB" = ( -/obj/effect/landmark/start/station_engineer, -/obj/structure/chair/office/dark{ - dir = 1 +"xjt" = ( +/obj/effect/spawner/lootdrop/keg, +/turf/open/floor/wood, +/area/maintenance/bar) +"xte" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/maintenance/bar) +"xvH" = ( +/obj/machinery/vending/clothing, +/turf/open/floor/wood, +/area/maintenance/bar) +"xxh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"xlB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/turf/closed/wall, +/area/maintenance/bar) +"xCS" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "briggate"; + name = "security shutters" }, -/obj/machinery/camera/motion{ - c_tag = "Armory Motion Sensor"; - dir = 2; - name = "motion-sensitive security camera" +/obj/machinery/door/window/eastright{ + name = "Brig Desk"; + req_access_txt = "2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"xDv" = ( -/obj/structure/closet/l3closet/security, -/turf/open/floor/plasteel/showroomfloor, -/area/space/nearstation) +/turf/open/floor/plasteel/dark, +/area/security/brig) "xEu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -54761,27 +54401,60 @@ /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"xSp" = ( +"xMc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /obj/structure/cable{ - icon_state = "0-8" + icon_state = "4-8" }, -/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/security/brig) -"xYs" = ( -/obj/structure/chair/stool, -/obj/item/device/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = -35 - }, -/turf/open/floor/wood, /area/maintenance/bar) +"xOe" = ( +/obj/item/shard, +/obj/item/wirecutters, +/obj/item/wallframe/camera, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/bar) +"xWy" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) +"ycr" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating, +/area/engine/engineering) "ycu" = ( /obj/structure/cable{ icon_state = "2-4" }, /turf/open/floor/plasteel, /area/science/circuit) +"yeG" = ( +/obj/structure/sign/poster/random{ + pixel_y = -32 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"ylH" = ( +/obj/effect/landmark/start/station_engineer, +/obj/structure/chair/office/dark{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) (1,1,1) = {" aaa @@ -62339,9 +62012,9 @@ aaa aae aaf aaa -aqH -apK -aqH +aaa +aaa +aaa aaa aaa aae @@ -62353,9 +62026,9 @@ aaa aaa aaa aaa -aqF -apH -aqF +aaa +aaa +aaa aaa aaa aaa @@ -62596,9 +62269,6 @@ aaa aaa aaf aaa -aqH -cpK -aqH aaa aaa aaa @@ -62610,9 +62280,12 @@ aaa aaa aaa aaa -aqF -cxl -aqF +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -62853,9 +62526,6 @@ aaa aaa aaf aaa -aqH -cpL -aqH aaa aaa aaa @@ -62867,9 +62537,12 @@ aaa aaa aaa aaa -aqF -cxx -aqF +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -63110,9 +62783,8 @@ aaa aaa aaf aaa -ckq +aaa cqq -ckq aaa aaa aaa @@ -63124,9 +62796,10 @@ aaa aaa aaa aaa -cwU -cxF -cwU +aaa +aaa +cqq +aaa aaa aaa aaa @@ -63872,14 +63545,14 @@ aaa aaa apJ apN -arC -arC -arC -arC -arC -arC -arC -aEp +apN +apN +apN +apN +apN +apN +apN +apN apJ avP iEJ @@ -64128,15 +63801,15 @@ aaa aaa aaf apJ -aqI -arD -arD -arD -arD -arD -arD -arD -auN +apN +apN +apN +apN +apN +apN +apN +apN +apN apJ awY ayk @@ -64385,15 +64058,15 @@ aaa aaa aaf apJ -aqI -arD -arD -arD -arD -arD -arD -arD -auN +apN +apN +apN +apN +apN +apN +apN +apN +apN apJ awZ ayl @@ -64642,15 +64315,15 @@ aaa aaa aaf apJ -aqI -arD -arD -arD -atk -arD -arD -arD -auN +apN +apN +apN +apN +apN +apN +apN +apN +apN apJ awZ ayk @@ -64899,15 +64572,15 @@ aaa aaa aaa apJ -aqI -arD -arD -asG -atl -awX -arD -arD -auN +apN +apN +apN +apN +wph +apN +apN +apN +apN apJ awZ cqr @@ -65156,15 +64829,15 @@ aaa aaa aaa apJ -aqI -arD -arD -arD -cCs -arD -arD -arD -auN +apN +apN +apN +apN +apN +apN +apN +apN +apN apJ awZ aIK @@ -65413,15 +65086,15 @@ aaa aaa aaa apJ -aqI -arD -arD -arD -arD -arD -arD -arD -auN +apN +apN +apN +apN +apN +apN +apN +apN +apN apJ awZ aIK @@ -65670,15 +65343,15 @@ aaa aaa aaf apJ -aqI -arD -arD -arD -arD -arD -arD -arD -auN +apN +apN +apN +apN +apN +apN +apN +apN +apN apJ awZ cry @@ -65927,15 +65600,15 @@ aaa aaa aaa apJ -aqN -asD -asD -asD -cCt -asD -asD -asD -aFD +apN +apN +apN +apN +apN +apN +apN +apN +apN apJ awZ crz @@ -68020,7 +67693,7 @@ czK bhN bcl beQ -bgk +pLn bhI bjb bkz @@ -69048,7 +68721,7 @@ czK bbe beO beU -bgl +bgk bhL bjc cAF @@ -76274,20 +75947,20 @@ bCq bPY cOw bCq -sFW -sFW -sFW -sFW -sFW -ksK -sFW -sFW -sFW -sFW -sFW -sFW -sFW -sFW +rYO +rYO +rYO +rYO +rYO +hHu +rYO +rYO +rYO +rYO +rYO +rYO +rYO +rYO bUs bLv aaa @@ -76531,20 +76204,20 @@ bCq bPX bRg bRg -sFW -nAW +rYO +vSg bVG -uYC -fPq -nAW -uAb -sFW -nAW -tRc +lWf +jZP +vSg +xjt +rYO +vSg +tNR bVG -nAW -hpY -sFW +vSg +dTy +rYO bUs bLv aaa @@ -76788,20 +76461,20 @@ bLv bQa bHE bHE -sFW -get -uut -jlZ -iDC -imZ -iDC -dnc -iDC -iDC -toZ -tNC -dAs -sFW +rYO +hsU +vHG +iWM +xte +kOO +xte +ifj +xte +xte +vEf +jrX +yeG +rYO bUs bLv aaf @@ -77045,20 +76718,20 @@ bLv bPZ bHE bHE -hNj -rWi -mkG -vzq -mdX -pvp -mTC -mlj -mTC -dFc -fDs +nZe +noe +sfS +jbT +pLx +hcV +iWK +uXp +iWK +mES +iWy cCa -nAW -sFW +vSg +rYO bUs bLv aaa @@ -77302,20 +76975,20 @@ bLv bHE bHE bSs -sFW -rRb -ofH -rDl -cIK -ofH -nAW -lkC -hXw +rYO +qne +nok +tDm +sRl +nok +vSg +mOS +uCz cCa -kqE -lgs -diu -sFW +hNR +gVz +wXT +rYO bUs bLv aaa @@ -77559,20 +77232,20 @@ bCq bHE bRh bLu -sFW -jEl -utm -eCQ -fSk -sOy -lkA -sFW -nAW -wTe -kqE -lgs -xYs -sFW +rYO +rXD +pye +heG +pjh +dMY +rkz +rYO +vSg +whD +hNR +gVz +uCa +rYO bUs bLv aaf @@ -77737,10 +77410,10 @@ abc abc afu abc -abc -abc -abc -abc +aaa +aaa +aaa +aaa aaa aaa aaa @@ -77816,20 +77489,20 @@ bCq bOK bCq bCq -sFW -tVF -gGR -fWC -vPG -hik -sFW -sFW -nAW +rYO +jOb +xxh +mjp +weO +dUz +rYO +rYO +vSg cCa -ouy -cKY +tPI +wUX cCa -sFW +rYO bUs bLv aaa @@ -77993,13 +77666,13 @@ abc aea aeH aft -qAQ -soK -mUH -uaf +cXd +ktN +sSO +rVy abc -lkm -lkm +pzB +pzB aaa aiU aln @@ -78074,19 +77747,19 @@ bHE bLv aaa bLv -nrT -gGR -sFW -sFW -sFW -sFW -nAW -nAW -nAW -nQE +xMc +xxh +rYO +rYO +rYO +rYO +vSg +vSg +vSg +kjK cCa -htN -sFW +gMI +rYO bUs bLv aaa @@ -78252,18 +77925,18 @@ aeJ afw abc abc -nNQ -eLY +fJG +mQL abc aaf aaf aaf aiU -wdZ +jnp aiU aaa aiU -wdZ +jnp aiU aaf aaf @@ -78331,19 +78004,19 @@ bHE bLv aaf bLv -nrT -gGR -aEt -waV -stI -vmf -nAW -hXw -tNC -nvm -nAW -nAW -sFW +xMc +xxh +kRe +lnm +wCj +kXH +vSg +uCz +jrX +oLO +vSg +vSg +rYO bUs bLv aaf @@ -78509,8 +78182,8 @@ aeI afv agf abc -tgx -pAL +kdx +lNf abc aiT aiT @@ -78588,19 +78261,19 @@ bLv bCq aaa bLv -nrT -gGR -kuC -qDH -fnP -sFW -uwV -uDn -siI -oFD -nBt -eYQ -sFW +xMc +xxh +xOe +hPY +cZO +rYO +xvH +mtP +iXO +rZN +vnJ +hpF +rYO bUs bCq aaa @@ -78766,9 +78439,9 @@ aeL afy agh abc -gvx -gvx -gvx +nfW +nfW +nfW aiV ajs akb @@ -78846,17 +78519,17 @@ aaa aaa bTB bUv -uze -kPh -kPh -kPh -kPh -kPh -kPh -kPh -kPh -kPh -kPh +eeA +dpp +dpp +dpp +dpp +dpp +dpp +dpp +dpp +dpp +dpp car bUs bCq @@ -79023,9 +78696,9 @@ aeK afx agg abc -gvx -gKN -gvx +nfW +iPE +nfW aiV ajr aka @@ -79280,9 +78953,9 @@ aeN afA afA afA -gvx -gvx -gvx +nfW +nfW +nfW aiV aju akd @@ -79901,7 +79574,7 @@ ciN cji cDZ crr -crJ +aaa aaa aaa aaa @@ -80154,11 +79827,11 @@ ccw cfL coH cBO -cnv +cgR cDB cqP crq -crJ +aaa aaa aaa aaa @@ -80429,7 +80102,7 @@ gXs gXs gXs gXs -lkm +pzB aaa aaa aaa @@ -80672,22 +80345,22 @@ cpX cqz cqQ ccw -crJ +crH aaa aaa -nyw -nyw -nyw +sHb +sHb +sHb aaa aaa aaa aaa aaa -nyw -nyw -nyw -lkm -lkm +sHb +sHb +sHb +pzB +pzB aaa aaa aaa @@ -80929,24 +80602,24 @@ clJ cig cig ccw -crJ -crJ -nyw -nyw -nyw -nyw -nyw +crH +crH +sHb +sHb +sHb +sHb +sHb aaa aaa aaa -nyw -nyw -nyw -nyw -nyw -lkm -lkm -lkm +sHb +sHb +sHb +sHb +sHb +pzB +pzB +pzB aaa aaa aaa @@ -81180,7 +80853,7 @@ ccw ccw ccw cnZ -lmZ +pNk cpt cpt cpt @@ -81202,8 +80875,8 @@ ccw ccw ccw ccw -nyw -lkm +sHb +pzB aaa aaa aaa @@ -81344,7 +81017,7 @@ auj akl akO alx -pfR +tII amg aiX anw @@ -81439,28 +81112,28 @@ cnt cob coL cDo -xiB +ylH cgR cqT ccw -ghy +hQe ccw -csb -cFn -css -cFn -csx +wpT +fBa +vEr +fBa +qRE ccw ccw ccw cGE -cFn -mGv -fAn -fAn +fBa +pRH +dPI +dPI ccw -nyw -cQG +sHb +cSI aaa aaa aaa @@ -81698,26 +81371,26 @@ coK cpu cMm ckH -wWq -pYB +qCO +swV crK cEK csa -dlj -tof -dlj +sOa +fBP +sOa cGr -sDk -kOs -sDk -iWY -dlj -tof -dlj -dlj +vob +kbh +vob +cNt +sOa +fBP +sOa +sOa ccw -nyw -lkm +sHb +pzB aaa aaa aaa @@ -81856,9 +81529,9 @@ aiF agj ajD akm -jrJ +mTp aly -bhP +lyP amQ aiX anw @@ -81953,28 +81626,28 @@ cgR cnZ chF ciO -xiB +ylH cgR cqT ccw cig ccw cFb -dlj +sOa cFI -dlj -dlj -dlj -dlj -dlj -dlj -dlj +sOa +sOa +sOa +sOa +sOa +sOa +sOa cFI -dlj -iVO +sOa +sfz ccw -nyw -mFn +sHb +hSf aaa aaa aaa @@ -82090,7 +81763,7 @@ aaa aag aaf aai -wEi +sHe aaA aaG aaK @@ -82115,7 +81788,7 @@ aja akl akP alx -pfR +tII ami aiX anw @@ -82208,30 +81881,30 @@ ceZ clQ cgR cnZ -lmZ +pNk cgR cgR cgR cqT -dxw +kTZ cEs -dlj -oWs +sOa +fZs cAp -qtN +tgb cAo -qtN +tgb cAo -qtN +tgb cAo -qtN -jMi -dlj -dlj -dlj +tgb +lCe +sOa +sOa +sOa ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -82369,7 +82042,7 @@ agP agP aiz ajg -hBF +hrd akQ agj agj @@ -82465,15 +82138,15 @@ cTd ckF ckF cgK -lmZ +pNk cgR cgR cgR cqT -dxw +kTZ csP -dlj -dlj +sOa +sOa cAq cFJ cSH @@ -82484,11 +82157,11 @@ cSH cFJ cSH cFJ -dlj -dlj +sOa +sOa ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -82607,7 +82280,7 @@ aaa aaa aaf aaf -rUB +dwQ aaf aai abi @@ -82629,7 +82302,7 @@ ajb ajF akN alw -jXD +hkC amQ aiX anw @@ -82727,25 +82400,25 @@ cpx cqd cjc cqU -dxw +kTZ csP -dlj -oWs +sOa +fZs cAq cFK aoV aoV cFK -gXs +pzB aaa aoV aoV cFK cFJ -dlj +sOa ccw -nyw -ldw +sHb +fGu aaf aaa aaa @@ -82880,16 +82553,16 @@ agn agR agn agR -kIZ +sIS aiX -kvn +kUh akv -pSC -lou +gqU +xWy aww amk aiX -nrJ +rQi aov aph aqb @@ -82982,7 +82655,7 @@ cnZ cDh cpy ccw -kbf +fXl ccw ccw cqY @@ -82992,17 +82665,17 @@ cAq aoV aoV aoV -lkm -aaf +pzB +cSI aaa aoV aoV aoV cFJ -dlj +sOa ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -83121,26 +82794,26 @@ aaa aaa aaa aaf -rUB +dwQ aaf -tMh -aaT -fVu -umb +dKf +juA +sQG +jAM aaZ cpg acv adi -jFG +hyb aaZ aeW -tyq +fVA ahv ahQ aiI aiH ajI -mAD +hZr akQ agj agj @@ -83240,26 +82913,26 @@ cDh ccw cqf cqD -dCs +kso crs cEv -msk +ycr cqY cAq aoV aoV aaa aaa -aaf +pzB aaa aaa aoV aoV cFJ -dlj +sOa ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -83378,29 +83051,29 @@ aaa aaa aaa aaf -rUB +dwQ aaf -tMh -aaT -oaS -umb +dKf +juA +gcN +jAM aaZ acl cxA acL -fbL +exQ aaZ agp agT ahx ahS aiK -uER -kvn +mDn +kUh akm akT aly -mDW +ekX amQ aiX anw @@ -83494,29 +83167,29 @@ cmL cgR cnZ chX -qVU +nzk cqh cqF cra crI cEw -qzP +rmR cqY cAq aaa aaa aaa -wZZ +rrQ cGU -iyf +eeO aaa -lkm +pzB cFK cFJ -dlj +sOa ccw -nyw -ldw +sHb +fGu aaa aaa aae @@ -83635,12 +83308,12 @@ aaa aaa aaa aaf -rUB +dwQ aaf -tMh -aaT -odi -eXD +dKf +juA +wWN +iCL aaZ ack adk @@ -83657,13 +83330,13 @@ ajI akl akS alx -pfR +tII amp aiX anS aoy -wFC -nRD +apj +anz anz anz anz @@ -83750,7 +83423,7 @@ clJ cmL cnv cnZ -rRI +lSn ccw cqg cqE @@ -83758,22 +83431,22 @@ cqZ crt cMH cAm -tNK +fVS cMN -gXs -aaf -aaf -sCR +pzB +cSI +cSI +fvg cGV -gmz -aaf -aaf -gXs +sLb +cSI +cSI +pzB cFJ -dlj +jcS ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -83892,14 +83565,14 @@ aaa aaa aaa aaf -rUB +dwQ aaf -tMh -aaT -oaS -utC +dKf +juA +gcN +ejP aaZ -xlB +oEn acM adQ cwM @@ -83909,8 +83582,8 @@ agU ahy ahX aiL -xSp -pPZ +gKO +tdg akq akQ agj @@ -84007,30 +83680,30 @@ ccw cmN cgR cnZ -rRI -kbf +lSn +fXl cqj cSG crb cru cEx -lTm +vrL cqY cAq cFK -lkm +pzB aaa -sxz -oyk -mtY +wZS +rzC +nzm aaa aaa aaa cFJ -dlj +sOa ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -84149,14 +83822,14 @@ aaa aaa aaa aaf -rUB +dwQ aaf -tMh -fPE -piG -utC +dKf +nvz +htj +ejP aaZ -gva +pvY coS aet cxA @@ -84166,18 +83839,18 @@ agt ahz aie agt -jyK -erb +svF +vMr akp akU alz aml amT aiX -gZp -jKG +rez +wJD apl -jCY +aqc aqc aqc aqc @@ -84264,7 +83937,7 @@ clM cfz cgR cnZ -rRI +lSn ccw cqi cMD @@ -84278,16 +83951,16 @@ aoV aoV aaa aaa -aaf +cSI aaa aaa aoV aoV cFJ -dlj +sOa ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -84406,14 +84079,14 @@ aaa aaa aaa aaf -rUB +dwQ aaf -tMh -inb -mwi -vPg +dKf +nDS +jUO +iaO abQ -gvi +mZB adj arc blT @@ -84424,15 +84097,15 @@ cxk aig aiM aiX -tmi -kwU -hjI +kBh +qLG +pGb alB amn amV -hHa +sCb aiG -ndn +flZ aod aqf ahT @@ -84442,11 +84115,11 @@ ahT ahT awn axF -vMV -vMV -vMV -vMV -stR +hrv +hrv +hrv +hrv +ilR anF anF aoa @@ -84521,10 +84194,10 @@ cfa cje cgR cnZ -rRI +lSn cpy ccw -kbf +fXl ccw ccw cqY @@ -84535,16 +84208,16 @@ aoV aoV aaa aaa -aaf -lkm +cSI +pzB aaa aoV aoV cFJ -dlj +sOa ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -84663,14 +84336,14 @@ aaa aaa aaa aaf -rUB +dwQ aaf -tMh -jcD -iev -erH +dKf +uqz +kwo +mOo abN -dFm +rth acF acF aes @@ -84681,16 +84354,16 @@ ahB aHp agn aiX -ivo -utg +oFD +ksW amS alA -hnm +xCS amm -eyV +fev anT anT -aod +apn aqe arf arf @@ -84701,10 +84374,10 @@ arf arf arf arf -sPM -sPM -sPM -sPM +rwa +rwa +rwa +rwa anF ahn aJn @@ -84783,25 +84456,25 @@ cpD cDw cDF cEa -dxw +kTZ csP -dlj -oWs +sOa +fZs cAq cFK aoV aaa aaa -gXs +pzB cFK aoV aoV cFK cFJ -dlj +sOa ccw -nyw -ldw +sHb +fGu aaf aaa aaa @@ -84920,12 +84593,12 @@ aaa aaa aaa aaf -rUB +dwQ aaf -tMh -szF -aCU -kEw +dKf +uuU +enX +jsN aci acm cpA @@ -84942,10 +84615,10 @@ ajJ akr akX aje -fpI -fpI -fpI -fpI +oUp +oUp +oUp +oUp aoB aod aqe @@ -84958,10 +84631,10 @@ atf arf aqa atf -sPM -tQO -wom -sPM +rwa +tRB +kcH +rwa anF ahn aaa @@ -85040,10 +84713,10 @@ cgR cgR cgR cqT -dxw +kTZ csP -dlj -dlj +sOa +sOa cAq cFJ cSK @@ -85054,11 +84727,11 @@ cSK cFJ cSK cFJ -dlj -dlj +sOa +sOa ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -85179,9 +84852,9 @@ aaf aaf ctv ctv -nyw +sHb adR -mxQ +qyv avB aaZ aaZ @@ -85200,12 +84873,12 @@ ahY akX ajc alC -fpI -fpI -oHs -hfY -nYB -ujA +oUp +oUp +leL +vDk +aod +aqe arf apY ate @@ -85215,10 +84888,10 @@ ath arf apY ath -sPM -gQx -ssC -sPM +rwa +faG +rtI +rwa anF ahn aaa @@ -85297,25 +84970,25 @@ cnx cDx cqb cqT -dxw +kTZ cEs -dlj -oWs +sOa +fZs cAr -qtN +tgb cGh -qtN +tgb cGh -qtN +tgb cGh -qtN -rre -dlj -dlj -dlj +tgb +gUa +sOa +sOa +sOa ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -85435,9 +85108,9 @@ aaa aaa aaa atS -uAc -eXc -rVc +ebz +aEs +pyu abO abO acO @@ -85452,14 +85125,14 @@ ahA ahZ adR aiQ -kvn +kUh akt -kyp -iUe +oFM +nlM ajc -ndn +flZ aiG -pmD +heb aoD aod aqe @@ -85472,10 +85145,10 @@ ath arf ayV ath -sPM +rwa aCd -ssC -sPM +rtI +rwa anF ahn aJw @@ -85558,21 +85231,21 @@ ccw ccw ccw crc -dlj +sOa cBR -dlj -dlj -dlj -dlj -dlj -dlj -dlj +sOa +sOa +sOa +sOa +sOa +sOa +sOa cBR -dlj -tSN +sOa +jTA ccw -nyw -ldw +sHb +fGu aaa aaa aaa @@ -85691,9 +85364,9 @@ aaa aaa aaa aaa -iFU -jWi -wRi +nip +exs +soh abO abO abO @@ -85712,11 +85385,11 @@ ajf ajK aks akY -wUk +sPd ajc -gAl +sTB alC -pmD +heb aoC aod aqe @@ -85729,10 +85402,10 @@ awo arf asd aAb -sPM -myR -ssC -sPM +rwa +siw +rtI +rwa aoa ahn aJv @@ -85809,27 +85482,27 @@ cDe cDk coc cqa -rYe -wWq -pYB +hYu +qCO +swV czF cEK csd -dlj +sOa cFU -dlj +sOa cGE -sDk +vob cGZ -sDk -csx -dlj +vob +qRE +sOa cFU -dlj -dlj +sOa +sOa ccw -nyw -lkm +sHb +pzB aaa aaa aaa @@ -85948,14 +85621,14 @@ aaa aaa aaa aaa -uow -jWi -wRi -rjW -rjW -rjW -rjW -rjW +ohN +exs +soh +klO +klO +klO +klO +klO abO aew afe @@ -85967,13 +85640,13 @@ aia aiP aiR ajB -dVC +lUX aiX akz alf -lXp -lXp -ldy +iei +iei +sxZ aoF apo aqh @@ -86072,21 +85745,21 @@ ccw crM ccw crV -cFn -qYL -cFn -iWY +fBa +kbA +fBa +cNt ccw ccw ccw cGr -cFn -kPB -fAn -fAn +fBa +vvD +dPI +dPI ccw -nyw -cQG +sHb +cSI aaf aaa aaa @@ -86205,9 +85878,9 @@ aaa aaa aaa aaf -dcQ -jWi -jWi +wjY +exs +exs abO abO acp @@ -86228,11 +85901,11 @@ aku aiX alE amq -iyX -qIa -fAq +iob +gjf +uJC aoE -gLD +aod aqg aun asf @@ -86341,9 +86014,9 @@ ccw ccw ccw ccw -maf -nyw -lkm +jbA +sHb +pzB aaa aaa aaa @@ -86462,14 +86135,14 @@ aaa aaa aaa aaa -uow -sJQ -xDv -lJX +ohN +kNF +hse +gMt abR -lJX -lJX -lJX +gMt +gMt +gMt abl abp abp @@ -86589,18 +86262,18 @@ ccw ccw ccw ccw -kgu -crJ -crJ -crJ -nyw -nyw -nyw -nyw -nyw +iex +crH +crH +crH +sHb +sHb +sHb +sHb +sHb aaa -cQG -lkm +cSI +pzB aaa aaa aaa @@ -86850,13 +86523,13 @@ aaa aaa aaa aaa -crJ -nyw -nyw -nyw -lkm -lkm -lkm +crH +sHb +sHb +sHb +pzB +pzB +pzB aaa aaa aaa @@ -87079,7 +86752,7 @@ caE cbA ccy bOd -gMx +qyS bQu cfO cgW @@ -87101,17 +86774,17 @@ ccw crX cfK aag -lkm -lkm -lkm -lkm -lkm -lkm +pzB +pzB +pzB +pzB +pzB +pzB gXs gXs gXs gXs -lkm +pzB aaa aaa aae @@ -87324,7 +86997,7 @@ bIF bOZ bQp bRA -gMx +qyS bTO bUL bVU @@ -88376,9 +88049,9 @@ clV cmV bOh cig -cpc -cpJ -cpc +aaa +afp +aaa cig cqY cqY @@ -88633,9 +88306,9 @@ clW clW bOh cig -cpd -czM -cpd +aaa +aaa +aaa cig aaa aaa @@ -88890,9 +88563,9 @@ bOh bOh bOh ccw -cpd -czL -cpd +aaa +aaa +aaa ccw aaf aaa @@ -89147,9 +88820,9 @@ clY clZ bOh aaa -cpd -cpM -cpd +aaa +aaa +aaa aaf aaf aaa @@ -89812,9 +89485,9 @@ aaf aaf aaf abp -aeD +aaa afp -aeD +aaa abp aaa aaa @@ -90069,9 +89742,9 @@ aaf aaa aaa adR -aeE -afr -aeE +aaa +aaa +aaa adR aaa aaa @@ -90326,9 +89999,9 @@ aaa aaa aaa aaa -aeE -afq -aeE +aaa +aaa +aaa aaa aaa aaa @@ -90583,9 +90256,9 @@ aaa aaa aaa aaa -aeE -afs -aeE +aaa +aaa +aaa aaa aaa aaa @@ -90679,19 +90352,19 @@ ccC cdD bOh aaf -aah -aah +cCS +cCS aaf aaf aaf aaf aaf -aah -aah -aah -aah -aah -aah +cCS +cCS +cCS +cCS +cCS +cCS aaf aaf aaf @@ -95759,7 +95432,7 @@ aFp aGW anf aIp -aKI +fGf aMA aIp aOX diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index f00c4ce948..f802d8d636 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -124,27 +124,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) -"aaq" = ( -/obj/structure/cable/white{ - icon_state = "0-8" - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/security/prison) -"aar" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/cryopod, -/obj/machinery/computer/cryopod{ - pixel_y = 28 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/prison) "aas" = ( /obj/docking_port/stationary/random{ id = "pod_lavaland1"; @@ -164,116 +143,10 @@ /obj/effect/landmark/xeno_spawn, /turf/open/space, /area/solar/starboard/fore) -"aav" = ( -/obj/structure/cable/white, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/power/emitter{ - anchored = 1; - state = 2 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aaw" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Fore Starboard"; - dir = 8; - network = list("singularity") - }, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aax" = ( -/turf/open/floor/plating/airless, -/area/space) -"aay" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/engine/engineering) -"aaz" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/space, -/area/space) -"aaA" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_1) -"aaB" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_1) -"aaC" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_2) -"aaD" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_2) "aaE" = ( /obj/structure/lattice/catwalk, /turf/open/space, /area/solar/starboard/fore) -"aaF" = ( -/turf/open/floor/plating/airless, -/area/space/nearstation) -"aaG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"aaH" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/space, -/area/space) -"aaI" = ( -/obj/effect/decal/cleanable/oil, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engpa"; - name = "Engineering Chamber Shutters" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"aaJ" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/space, -/area/space) -"aaK" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/space, -/area/space) -"aaL" = ( -/turf/open/space/basic, -/area/space/nearstation) -"aaM" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/space, -/area/space) -"aaN" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/engine/engineering) "aaO" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -281,123 +154,9 @@ "aaP" = ( /turf/closed/wall/mineral/plastitanium, /area/hallway/secondary/entry) -"aaQ" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/status_display{ - pixel_x = 32 - }, -/obj/machinery/computer/shuttle/pod{ - pixel_x = -32; - possible_destinations = "pod_lavaland1"; - shuttleId = "pod1" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/pod_1) -"aaR" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/status_display{ - pixel_x = 32 - }, -/obj/machinery/computer/shuttle/pod{ - pixel_x = -32; - possible_destinations = "pod_lavaland2"; - shuttleId = "pod2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/pod_2) "aaS" = ( /turf/closed/wall/mineral/plastitanium, /area/construction/mining/aux_base) -"aaT" = ( -/turf/open/space, -/area/space) -"aaU" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"aaV" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engpa"; - name = "Engineering Chamber Shutters" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aaW" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"aaX" = ( -/obj/structure/particle_accelerator/particle_emitter/left{ - icon_state = "emitter_left"; - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"aaY" = ( -/obj/structure/cable, -/obj/machinery/particle_accelerator/control_box, -/turf/open/floor/plating, -/area/engine/engineering) -"aaZ" = ( -/obj/machinery/vending/kink, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/crew_quarters/locker) -"aba" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space) -"abb" = ( -/obj/structure/particle_accelerator/particle_emitter/center{ - icon_state = "emitter_center"; - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"abc" = ( -/obj/structure/particle_accelerator/power_box{ - icon_state = "power_box"; - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"abd" = ( -/obj/structure/particle_accelerator/fuel_chamber{ - icon_state = "fuel_chamber"; - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) "abe" = ( /obj/effect/turf_decal/delivery, /obj/item/twohanded/required/kirbyplants/random, @@ -406,48 +165,6 @@ "abf" = ( /turf/closed/wall, /area/hallway/secondary/entry) -"abg" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/item/device/radio/intercom{ - pixel_x = 25 - }, -/obj/item/storage/pod{ - pixel_x = -26 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/pod_1) -"abh" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/item/device/radio/intercom{ - pixel_x = 25 - }, -/obj/item/storage/pod{ - pixel_x = -26 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/pod_2) "abi" = ( /turf/closed/wall, /area/construction/mining/aux_base) @@ -455,44 +172,6 @@ /obj/structure/lattice/catwalk, /turf/open/space, /area/space/nearstation) -"abk" = ( -/obj/structure/particle_accelerator/end_cap{ - icon_state = "end_cap"; - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"abl" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/space) -"abm" = ( -/obj/structure/particle_accelerator/particle_emitter/right{ - icon_state = "emitter_right"; - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"abn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/computer/cryopod{ - pixel_x = 28 - }, -/turf/open/floor/plasteel/neutral/side{ - dir = 4 - }, -/area/crew_quarters/locker) -"abo" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/engine/engineering) "abp" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ @@ -516,98 +195,22 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) -"abr" = ( -/obj/structure/shuttle/engine/propulsion/burst, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_1) "abs" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Escape Pod Airlock" +/obj/docking_port/stationary{ + dir = 1; + dwidth = 1; + height = 4; + name = "escape pod loader"; + roundstart_template = /datum/map_template/shuttle/escape_pod/default; + width = 3 }, -/obj/docking_port/mobile/pod{ - id = "pod1"; - name = "escape pod 1"; - port_direction = 2 - }, -/obj/effect/turf_decal/stripes/end, -/turf/open/floor/plasteel/white, -/area/shuttle/pod_1) -"abt" = ( -/obj/structure/shuttle/engine/propulsion/burst, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_2) -"abu" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ - id = "pod2"; - name = "escape pod 2"; - port_direction = 2 - }, -/obj/effect/turf_decal/stripes/end, -/turf/open/floor/plasteel/white, -/area/shuttle/pod_2) +/turf/open/space/basic, +/area/space) "abv" = ( /obj/item/stack/cable_coil, /obj/structure/lattice/catwalk, /turf/open/space, /area/solar/starboard/fore) -"abw" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/cryopod, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/crew_quarters/locker) -"abx" = ( -/obj/machinery/status_display{ - pixel_x = 32 - }, -/obj/machinery/cryopod, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/crew_quarters/locker) -"aby" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/power/tesla_coil, -/turf/open/floor/plating/airless, -/area/space) -"abz" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, -/area/space) -"abA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"abB" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Aft Starboard"; - dir = 8; - network = list("singularity") - }, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, -/area/engine/engineering) "abC" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -660,66 +263,6 @@ }, /turf/open/floor/plasteel, /area/construction/mining/aux_base) -"abI" = ( -/obj/structure/cable/white{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/power/emitter{ - anchored = 1; - dir = 1; - icon_state = "emitter"; - state = 2 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"abJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/space) -"abK" = ( -/obj/machinery/field/generator{ - anchored = 1; - state = 2 - }, -/turf/open/floor/plating/airless, -/area/space) -"abL" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space) -"abM" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/space, -/area/space) -"abN" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/space) -"abO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating/airless, -/area/space) "abP" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/external{ @@ -768,44 +311,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/construction/mining/aux_base) -"abU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating/airless, -/area/space) -"abV" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/power/tesla_coil, -/turf/open/floor/plating/airless, -/area/space) -"abW" = ( -/obj/machinery/the_singularitygen/tesla, -/turf/open/floor/plating/airless, -/area/space) -"abX" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space) -"abY" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space) "abZ" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line{ @@ -869,57 +374,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) -"acg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating/airless, -/area/space) -"ach" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plating/airless, -/area/space) -"aci" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating/airless, -/area/space) -"acj" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/space) -"ack" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/space) -"acl" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/power/tesla_coil, -/turf/open/floor/plating/airless, -/area/space) -"acm" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/corner, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, -/area/space) -"acn" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/space, -/area/space) "aco" = ( /turf/open/floor/plasteel/neutral, /area/hallway/secondary/entry) @@ -981,23 +435,6 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) -"acw" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/space, -/area/space) -"acx" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/space, -/area/space) "acF" = ( /obj/docking_port/stationary{ dir = 2; @@ -1527,24 +964,8 @@ }, /area/construction/mining/aux_base) "aeF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, -/area/shuttle/auxillary_base) -"aeG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"aeH" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) +/area/construction/mining/aux_base) "aeR" = ( /obj/structure/closet/emcloset, /obj/effect/decal/cleanable/dirt, @@ -1638,31 +1059,6 @@ dir = 4 }, /area/construction/mining/aux_base) -"afg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"afh" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"afi" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"afj" = ( -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"afk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "aft" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/delivery, @@ -1807,10 +1203,6 @@ dir = 4 }, /area/construction/mining/aux_base) -"afZ" = ( -/obj/structure/mining_shuttle_beacon, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "agj" = ( /obj/structure/closet/firecloset, /obj/effect/decal/cleanable/dirt, @@ -1878,45 +1270,6 @@ }, /turf/open/floor/plating, /area/construction/mining/aux_base) -"agq" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/docking_port/stationary/public_mining_dock{ - dir = 4 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"agr" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"ags" = ( -/obj/docking_port/mobile/auxillary_base{ - dheight = 4; - dir = 2; - dwidth = 4; - height = 9; - width = 9 - }, -/obj/machinery/bluespace_beacon, -/obj/docking_port/mobile/auxillary_base, -/obj/machinery/computer/auxillary_base, -/turf/closed/wall, -/area/shuttle/auxillary_base) -"agt" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Auxillary Base"; - dir = 4; - name = "engineering camera" - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "agB" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -1973,7 +1326,6 @@ height = 17; id = "syndicate_ne"; name = "northeast of station"; - turf_type = /turf/open/space; width = 23 }, /turf/open/space, @@ -2087,18 +1439,6 @@ dir = 4 }, /area/construction/mining/aux_base) -"ahw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"ahx" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "ahz" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -2149,17 +1489,6 @@ dir = 6 }, /area/construction/mining/aux_base) -"ahG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/structure/ore_box, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"ahH" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "ahO" = ( /obj/machinery/status_display{ pixel_x = -32 @@ -2278,7 +1607,6 @@ height = 13; id = "ferry_home"; name = "port bay 2"; - turf_type = /turf/open/space; width = 5 }, /turf/open/space/basic, @@ -5169,20 +4497,19 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/conveyor{ - dir = 5; - id = "garbage"; - verted = -1 - }, /obj/effect/turf_decal/stripes/line{ dir = 9 }, /obj/effect/turf_decal/stripes/corner, +/obj/machinery/conveyor{ + dir = 5; + id = "garbage" + }, /turf/open/floor/plating, /area/maintenance/disposal) "apD" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/structure/disposalpipe/segment{ @@ -5201,7 +4528,7 @@ /area/maintenance/disposal) "apE" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/structure/disposalpipe/segment{ @@ -5672,7 +4999,7 @@ /area/maintenance/disposal) "aqE" = ( /obj/machinery/conveyor{ - dir = 2; + dir = 1; id = "garbage" }, /obj/effect/decal/cleanable/dirt, @@ -5711,7 +5038,7 @@ /area/maintenance/disposal) "aqG" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = -1; + dir = 8; id = "garbage"; name = "disposal conveyor" }, @@ -5966,7 +5293,7 @@ /area/maintenance/disposal) "arg" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "garbage" }, /obj/machinery/door/window/eastright{ @@ -6413,22 +5740,21 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/conveyor{ - dir = 9; - id = "garbage"; - verted = -1 - }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/effect/turf_decal/stripes/corner{ dir = 8 }, +/obj/machinery/conveyor{ + dir = 9; + id = "garbage" + }, /turf/open/floor/plating, /area/maintenance/disposal) "asf" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "garbage" }, /obj/effect/turf_decal/stripes/line{ @@ -6438,7 +5764,7 @@ /area/maintenance/disposal) "asg" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "garbage" }, /obj/effect/decal/cleanable/blood/splatter, @@ -6448,10 +5774,6 @@ /turf/open/floor/plating, /area/maintenance/disposal) "ash" = ( -/obj/machinery/conveyor{ - dir = 6; - id = "garbage" - }, /obj/machinery/door/window/eastright{ base_state = "left"; dir = 4; @@ -6464,6 +5786,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, +/obj/machinery/conveyor/inverted{ + dir = 6; + id = "garbage" + }, /turf/open/floor/plating, /area/maintenance/disposal) "asi" = ( @@ -7184,10 +6510,6 @@ /turf/open/floor/plating, /area/maintenance/disposal) "atB" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "garbage" - }, /obj/structure/disposaloutlet{ dir = 4 }, @@ -7201,7 +6523,7 @@ /area/maintenance/disposal) "atC" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/structure/disposalpipe/segment{ @@ -7213,7 +6535,7 @@ /area/maintenance/disposal) "atD" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/machinery/atmospherics/components/unary/vent_pump/on, @@ -7224,7 +6546,7 @@ /area/maintenance/disposal) "atE" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/machinery/recycler, @@ -7238,14 +6560,14 @@ name = "Danger: Conveyor Access"; req_access_txt = "12" }, -/obj/machinery/conveyor{ - dir = 10; - id = "garbage" - }, /obj/effect/decal/cleanable/blood/splatter, /obj/effect/turf_decal/stripes/line{ dir = 6 }, +/obj/machinery/conveyor/inverted{ + dir = 10; + id = "garbage" + }, /turf/open/floor/plating, /area/maintenance/disposal) "atG" = ( @@ -7957,10 +7279,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Cooling to Unfiltered"; - on = 1 + name = "Cooling to Unfiltered" }, /turf/open/floor/plasteel, /area/engine/atmospherics_engine) @@ -9627,7 +8948,7 @@ /turf/open/floor/circuit/green, /area/engine/supermatter) "ayK" = ( -/obj/machinery/power/supermatter_shard/crystal/engine, +/obj/machinery/power/supermatter_crystal/engine, /turf/open/floor/engine, /area/engine/supermatter) "ayL" = ( @@ -10093,9 +9414,8 @@ network = list("ss13","engine") }, /obj/effect/turf_decal/bot, -/obj/machinery/atmospherics/components/unary/thermomachine/heater{ - dir = 4; - on = 1 +/obj/machinery/atmospherics/components/unary/thermomachine/heater/on{ + dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmospherics_engine) @@ -10481,7 +9801,8 @@ /area/quartermaster/storage) "aAH" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/conveyor_switch{ +/obj/machinery/conveyor_switch/oneway{ + dir = 8; id = "cargounload" }, /turf/open/floor/plasteel/brown{ @@ -10528,7 +9849,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/bot, /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - icon_state = "freezer"; dir = 4 }, /turf/open/floor/plasteel, @@ -10573,7 +9893,7 @@ /turf/closed/wall/r_wall, /area/engine/supermatter) "aAW" = ( -/obj/machinery/door/airlock/atmos/glass{ +/obj/machinery/door/airlock/atmos/glass/critical{ heat_proof = 1; name = "Supermatter Chamber"; req_one_access_txt = "24;10" @@ -12034,10 +11354,9 @@ /turf/open/floor/plating, /area/quartermaster/storage) "aEl" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Gas to Cooling Loop"; - on = 1 + name = "Gas to Cooling Loop" }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -12106,10 +11425,9 @@ /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "aEr" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Gas to Filter"; - on = 1 + name = "Gas to Filter" }, /obj/structure/cable{ icon_state = "4-8" @@ -13040,11 +12358,11 @@ /turf/open/floor/plating, /area/quartermaster/sorting) "aGp" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/conveyor{ - dir = 2; + dir = 6; id = "cargodeliver" }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/quartermaster/sorting) "aGq" = ( @@ -13972,7 +13290,7 @@ /area/quartermaster/storage) "aHU" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/conveyor_switch{ +/obj/machinery/conveyor_switch/oneway{ id = "cargoload" }, /turf/open/floor/plasteel/brown{ @@ -14592,7 +13910,7 @@ "aJg" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/conveyor_switch/oneway{ - convdir = -1; + dir = 8; id = "cargodeliver"; name = "delivery conveyor"; pixel_x = -12 @@ -15395,6 +14713,14 @@ }, /turf/open/floor/plasteel, /area/security/prison) +"aKY" = ( +/obj/structure/cable/white{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/security/prison) "aKZ" = ( /turf/closed/wall/r_wall, /area/security/execution/education) @@ -15852,14 +15178,14 @@ /turf/open/floor/plasteel, /area/quartermaster/storage) "aLY" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "cargoload" - }, /obj/effect/decal/cleanable/dirt, /obj/machinery/light{ dir = 4 }, +/obj/machinery/conveyor/inverted{ + dir = 10; + id = "cargoload" + }, /turf/open/floor/plating, /area/quartermaster/storage) "aMc" = ( @@ -15951,6 +15277,19 @@ dir = 4 }, /area/security/prison) +"aMk" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/cryopod, +/obj/machinery/computer/cryopod{ + pixel_y = 28 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 1 + }, +/area/security/prison) "aMl" = ( /obj/structure/table, /obj/structure/cable/white{ @@ -16663,10 +16002,7 @@ /area/maintenance/disposal/incinerator) "aNR" = ( /obj/machinery/igniter{ - icon_state = "igniter0"; - id = "Incinerator"; - luminosity = 2; - on = 0 + id = "Incinerator" }, /obj/structure/cable{ icon_state = "4-8" @@ -16725,6 +16061,17 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, +/obj/machinery/embedded_controller/radio/airlock_controller{ + airpump_tag = "incinerator_airlock_pump"; + exterior_door_tag = "incinerator_airlock_exterior"; + id_tag = "incinerator_airlock_control"; + interior_door_tag = "incinerator_airlock_interior"; + name = "Incinerator Access Console"; + pixel_y = 27; + req_access_txt = "12"; + sanitize_external = 1; + sensor_tag = "incinerator_airlock_sensor" + }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "aNV" = ( @@ -17392,18 +16739,6 @@ /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "aPA" = ( -/obj/machinery/embedded_controller/radio/airlock_controller{ - name = "Incinerator Access Console"; - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_access_control"; - interior_door_tag = "incinerator_airlock_interior"; - pixel_x = 8; - pixel_y = -24; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor"; - req_access_txt = "12" - }, /obj/machinery/button/ignition{ id = "Incinerator"; pixel_x = 8; @@ -21005,8 +20340,7 @@ "aWq" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Justice gas pump"; - on = 0 + name = "Justice gas pump" }, /obj/machinery/door/window/westleft, /turf/open/floor/plasteel/vault{ @@ -21091,8 +20425,7 @@ /obj/machinery/atmospherics/pipe/simple/green/visible, /obj/machinery/atmospherics/components/binary/pump{ dir = 4; - name = "CO2 to Pure"; - on = 0 + name = "CO2 to Pure" }, /turf/open/floor/plasteel/vault, /area/engine/atmos) @@ -21778,9 +21111,8 @@ /turf/open/floor/plasteel, /area/engine/atmos) "aYb" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/heater{ - dir = 4; - on = 1 +/obj/machinery/atmospherics/components/unary/thermomachine/heater/on{ + dir = 4 }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -22732,15 +22064,6 @@ temperature = 2.7 }, /area/security/prison) -"aZN" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_3) -"aZO" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_3) "aZP" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/carbon_input{ dir = 4 @@ -22783,12 +22106,7 @@ dir = 8 }, /obj/structure/window/reinforced, -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 2; - filter_type = "co2"; - name = "co2 filter"; - on = 1 - }, +/obj/machinery/atmospherics/components/trinary/filter/atmos/co2, /turf/open/floor/plasteel/vault, /area/engine/atmos) "aZV" = ( @@ -22872,13 +22190,8 @@ /turf/open/floor/plasteel/neutral, /area/engine/atmos) "bag" = ( -/obj/machinery/atmospherics/components/trinary/mixer{ - dir = 1; - name = "air mixer"; - node1_concentration = 0.8; - node2_concentration = 0.2; - on = 1; - target_pressure = 4500 +/obj/machinery/atmospherics/components/trinary/mixer/airmix{ + dir = 1 }, /turf/open/floor/plasteel/neutral, /area/engine/atmos) @@ -22891,10 +22204,9 @@ pixel_y = 1 }, /obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "O2 to Airmix"; - on = 1 + name = "O2 to Airmix" }, /turf/open/floor/plasteel/blue/side{ dir = 5 @@ -23460,65 +22772,16 @@ /turf/open/floor/plasteel, /area/security/prison) "bbv" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ +/obj/docking_port/stationary{ dir = 4; - id = "pod3"; - name = "escape pod 3"; - port_direction = 2; - preferred_direction = 4 + dwidth = 1; + height = 4; + name = "escape pod loader"; + roundstart_template = /datum/map_template/shuttle/escape_pod/default; + width = 3 }, -/obj/effect/turf_decal/stripes/end{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/pod_3) -"bbw" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - pixel_y = 24 - }, -/obj/item/storage/pod{ - pixel_x = 6; - pixel_y = -32 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/machinery/light/small, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/pod_3) -"bbx" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/obj/machinery/computer/shuttle/pod{ - pixel_y = -32; - possible_destinations = "pod_lavaland3"; - shuttleId = "pod3" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/pod_3) -"bby" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_3) +/turf/open/space/basic, +/area/space) "bbz" = ( /obj/docking_port/stationary/random{ dir = 4; @@ -24219,8 +23482,7 @@ /obj/machinery/atmospherics/pipe/simple/green/visible, /obj/machinery/atmospherics/components/binary/pump{ dir = 4; - name = "Plasma to Pure"; - on = 0 + name = "Plasma to Pure" }, /turf/open/floor/plasteel/purple/side{ dir = 9 @@ -24283,11 +23545,8 @@ dir = 4 }, /obj/structure/window/reinforced, -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 1; - filter_type = "o2"; - name = "oxygen filter"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/o2{ + dir = 1 }, /turf/open/floor/plasteel/blue/side{ dir = 6 @@ -25431,12 +24690,7 @@ dir = 8 }, /obj/structure/window/reinforced, -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 2; - filter_type = "plasma"; - name = "waste filter"; - on = 1 - }, +/obj/machinery/atmospherics/components/trinary/filter/atmos/plasma, /turf/open/floor/plasteel/purple/side{ dir = 10 }, @@ -25444,8 +24698,7 @@ "bfW" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Port Mix to Port Ports"; - on = 0 + name = "Port Mix to Port Ports" }, /turf/open/floor/plasteel/neutral, /area/engine/atmos) @@ -25460,8 +24713,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Port Mix to Starboard Ports"; - on = 0 + name = "Port Mix to Starboard Ports" }, /turf/open/floor/plasteel/neutral, /area/engine/atmos) @@ -25511,10 +24763,9 @@ pixel_y = 1 }, /obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "N2 to Airmix"; - on = 1 + name = "N2 to Airmix" }, /turf/open/floor/plasteel/red/side{ dir = 5 @@ -26798,8 +26049,7 @@ /obj/machinery/atmospherics/pipe/simple/green/visible, /obj/machinery/atmospherics/components/binary/pump{ dir = 4; - name = "N2O to Pure"; - on = 0 + name = "N2O to Pure" }, /turf/open/floor/plasteel/escape{ dir = 9 @@ -26823,8 +26073,7 @@ "biZ" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Pure to Ports"; - on = 0 + name = "Pure to Ports" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -26834,8 +26083,7 @@ "bja" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Mix to Ports"; - on = 0 + name = "Mix to Ports" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -26845,8 +26093,7 @@ "bjb" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Air to Ports"; - on = 0 + name = "Air to Ports" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -26953,11 +26200,8 @@ dir = 4 }, /obj/structure/window/reinforced, -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 1; - filter_type = "n2"; - name = "nitrogen filter"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2{ + dir = 1 }, /turf/open/floor/plasteel/red/side{ dir = 6 @@ -28502,12 +27746,7 @@ dir = 8 }, /obj/structure/window/reinforced, -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 2; - filter_type = "n2o"; - name = "n2o filter"; - on = 1 - }, +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/escape{ dir = 10 @@ -30049,10 +29288,9 @@ /area/engine/atmos) "bpR" = ( /obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Unfiltered & Air to Mix"; - on = 1 + name = "Unfiltered & Air to Mix" }, /turf/open/floor/plasteel/caution{ dir = 1 @@ -30070,8 +29308,7 @@ "bpT" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 2; - name = "Pure to Mix"; - on = 0 + name = "Pure to Mix" }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/caution{ @@ -30173,10 +29410,9 @@ /turf/open/floor/plasteel/neutral, /area/engine/atmos) "bqe" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Air to External Air Ports"; - on = 1 + name = "Air to External Air Ports" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ @@ -31168,10 +30404,9 @@ /area/engine/atmos) "bsa" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Mix to Filter"; - on = 1 + name = "Mix to Filter" }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -31238,10 +30473,9 @@ /area/engine/atmos) "bsh" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "External Waste Ports to Filter"; - on = 1 + name = "External Waste Ports to Filter" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ @@ -32138,10 +31372,9 @@ /obj/machinery/light{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Waste to Filter"; - on = 1 + name = "Waste to Filter" }, /turf/open/floor/plasteel/caution{ dir = 4 @@ -32689,8 +31922,7 @@ "bva" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 2; - name = "Mix to Distro"; - on = 0 + name = "Mix to Distro" }, /turf/open/floor/plasteel/neutral, /area/engine/atmos) @@ -32701,7 +31933,6 @@ /area/engine/atmos) "bvc" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - icon_state = "freezer"; dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -33276,9 +32507,8 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/ai) "bwr" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/heater{ - dir = 1; - on = 1 +/obj/machinery/atmospherics/components/unary/thermomachine/heater/on{ + dir = 1 }, /turf/open/floor/plasteel/arrival{ dir = 10 @@ -33295,10 +32525,9 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bwt" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; name = "Air to Distro"; - on = 1; target_pressure = 101 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -33326,8 +32555,7 @@ "bww" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 4; - name = "Distro to Waste"; - on = 0 + name = "Distro to Waste" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/caution, @@ -47648,8 +46876,6 @@ /obj/item/gun/energy/ionrifle, /obj/item/clothing/suit/armor/laserproof, /obj/item/gun/energy/temperature/security, -/obj/item/gun/energy/pumpaction/blaster, -/obj/item/gun/energy/pumpaction/blaster, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -50495,6 +49721,17 @@ "cdC" = ( /turf/open/floor/plating/airless, /area/engine/engineering) +"cdD" = ( +/obj/structure/cable/white, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/power/emitter{ + anchored = 1; + state = 2 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "cdE" = ( /obj/structure/cable/white{ icon_state = "1-4" @@ -51554,6 +50791,15 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating/airless, /area/engine/engineering) +"cfB" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Containment - Fore Starboard"; + dir = 8; + network = list("singularity") + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless, +/area/engine/engineering) "cfC" = ( /obj/structure/sign/warning/vacuum, /turf/closed/wall/r_wall, @@ -52525,6 +51771,10 @@ }, /turf/open/space, /area/space/nearstation) +"chu" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/engine/engineering) "chv" = ( /obj/machinery/door/poddoor/shutters/preopen{ id = "engpa"; @@ -53265,11 +52515,48 @@ network = list("singularity") }, /turf/open/space, -/area/space/nearstation) +/area/engine/engineering) +"ciZ" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/space, +/area/space) +"cja" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/space, +/area/space) +"cjb" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/space, +/area/space) +"cjc" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/space, +/area/space) "cjd" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/engine/engineering) +"cje" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) "cjg" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -53813,6 +53100,54 @@ dir = 8 }, /area/ai_monitored/turret_protected/ai_upload) +"cku" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/space, +/area/space) +"ckv" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space) +"ckw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/space) +"ckx" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless, +/area/space) +"ckz" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless, +/area/space) +"ckA" = ( +/obj/effect/decal/cleanable/oil, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engpa"; + name = "Engineering Chamber Shutters" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) "ckD" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral, @@ -54376,6 +53711,28 @@ dir = 8 }, /area/ai_monitored/turret_protected/ai_upload) +"clR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/space) +"clS" = ( +/obj/machinery/field/generator{ + anchored = 1; + state = 2 + }, +/turf/open/floor/plating/airless, +/area/space) +"clU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space) "clW" = ( /obj/structure/rack, /obj/item/crowbar, @@ -54384,6 +53741,10 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engine/engineering) +"clX" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/engineering) "clY" = ( /obj/structure/rack, /obj/machinery/button/door{ @@ -55213,6 +54574,25 @@ dir = 5 }, /area/aisat) +"cnA" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/space, +/area/space) +"cnB" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/space) "cnC" = ( /obj/structure/sign/warning/radiation, /turf/closed/wall/r_wall, @@ -55221,6 +54601,19 @@ /obj/machinery/status_display, /turf/closed/wall/r_wall, /area/engine/engineering) +"cnE" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engpa"; + name = "Engineering Chamber Shutters" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "cnF" = ( /obj/machinery/requests_console{ department = "Chapel Office"; @@ -55423,11 +54816,8 @@ /turf/closed/wall, /area/tcommsat/server) "cof" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1; - min_temperature = 80; - on = 1; - target_temperature = 80 +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + dir = 1 }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -55464,11 +54854,8 @@ /turf/open/floor/plasteel, /area/tcommsat/server) "coj" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1; - min_temperature = 80; - on = 1; - target_temperature = 80 +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + dir = 1 }, /obj/machinery/camera{ c_tag = "Telecomms - Cooling Room"; @@ -55892,6 +55279,15 @@ }, /turf/open/floor/plating, /area/engine/engineering) +"cpc" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/engine/engineering) "cpd" = ( /obj/machinery/button/door{ id = "engpa"; @@ -56423,6 +55819,18 @@ /obj/structure/lattice, /turf/open/space, /area/space/nearstation) +"cqo" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating/airless, +/area/space) +"cqp" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating/airless, +/area/space) "cqq" = ( /obj/structure/cable{ icon_state = "1-2" @@ -56432,10 +55840,22 @@ }, /turf/open/floor/plating, /area/engine/engineering) +"cqr" = ( +/obj/structure/particle_accelerator/particle_emitter/left{ + icon_state = "emitter_left"; + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) "cqs" = ( /obj/item/stack/cable_coil/red, /turf/open/floor/plating, /area/engine/engineering) +"cqt" = ( +/obj/structure/cable, +/obj/machinery/particle_accelerator/control_box, +/turf/open/floor/plating, +/area/engine/engineering) "cqu" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -56981,6 +56401,38 @@ dir = 5 }, /area/aisat) +"crI" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless, +/area/space) +"crJ" = ( +/obj/machinery/the_singularitygen/tesla, +/turf/open/floor/plating/airless, +/area/space) +"crK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space) +"crL" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space) "crM" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -57000,6 +56452,13 @@ }, /turf/open/floor/plating, /area/engine/engineering) +"crO" = ( +/obj/structure/particle_accelerator/fuel_chamber{ + icon_state = "fuel_chamber"; + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) "crP" = ( /obj/machinery/light{ dir = 4 @@ -57757,6 +57216,31 @@ dir = 5 }, /area/aisat) +"ctm" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating/airless, +/area/space) +"ctn" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plating/airless, +/area/space) +"cto" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating/airless, +/area/space) +"ctp" = ( +/obj/structure/particle_accelerator/particle_emitter/right{ + icon_state = "emitter_right"; + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) "ctq" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -58412,6 +57896,17 @@ }, /turf/open/floor/plasteel/neutral, /area/crew_quarters/locker) +"cuB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/computer/cryopod{ + pixel_x = 28 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/crew_quarters/locker) "cuC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -58552,6 +58047,13 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/engine/engineering) +"cuT" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/engine/engineering) "cuU" = ( /obj/machinery/button/door{ id = "engpa"; @@ -59649,6 +59151,15 @@ }, /turf/open/floor/plasteel/neutral/corner, /area/crew_quarters/locker) +"cxr" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/cryopod, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/crew_quarters/locker) "cxs" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -60416,6 +59927,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/neutral/corner, /area/crew_quarters/locker) +"cyW" = ( +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/machinery/cryopod, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/crew_quarters/locker) "cyX" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 @@ -60553,6 +60073,28 @@ dir = 4 }, /area/crew_quarters/fitness/recreation) +"czo" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/space) +"czp" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless, +/area/space) +"czr" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless, +/area/space) "czu" = ( /obj/structure/cable/white{ icon_state = "0-2" @@ -61141,7 +60683,41 @@ network = list("singularity") }, /turf/open/space, -/area/space/nearstation) +/area/engine/engineering) +"cAH" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/space, +/area/space) +"cAI" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/space, +/area/space) +"cAJ" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/space, +/area/space) +"cAK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) "cAL" = ( /obj/machinery/rnd/production/protolathe/department/engineering, /obj/effect/turf_decal/stripes/line{ @@ -62714,6 +62290,15 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) +"cDV" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Containment - Aft Starboard"; + dir = 8; + network = list("singularity") + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless, +/area/engine/engineering) "cDW" = ( /obj/machinery/light{ dir = 8 @@ -63590,6 +63175,19 @@ name = "Holodeck Projector Floor" }, /area/holodeck/rec_center) +"cFH" = ( +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/power/emitter{ + anchored = 1; + dir = 1; + icon_state = "emitter"; + state = 2 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "cFI" = ( /obj/structure/cable/white{ icon_state = "2-4" @@ -70411,11 +70009,8 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "cTR" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1; - min_temperature = 80; - on = 1; - target_temperature = 80 +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + dir = 1 }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -83723,9 +83318,8 @@ }, /area/science/mixing) "dwk" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/heater{ - dir = 8; - on = 1 +/obj/machinery/atmospherics/components/unary/thermomachine/heater/on{ + dir = 8 }, /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -87324,7 +86918,6 @@ /area/science/mixing) "dDr" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - icon_state = "freezer"; dir = 8 }, /obj/effect/turf_decal/stripes/line{ @@ -87927,11 +87520,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - min_temperature = 80; - on = 1; - target_temperature = 80 - }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -97588,7 +97177,6 @@ height = 18; id = "emergency_home"; name = "DeltaStation emergency evac bay"; - turf_type = /turf/open/space; width = 30 }, /turf/open/space/basic, @@ -100555,6 +100143,13 @@ }, /turf/open/floor/plasteel/whitepurple/side, /area/science/misc_lab) +"eIf" = ( +/obj/structure/particle_accelerator/end_cap{ + icon_state = "end_cap"; + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) "eMD" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -100600,6 +100195,10 @@ }, /turf/open/floor/plating, /area/maintenance/port) +"gbW" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) "gmj" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, @@ -100633,6 +100232,14 @@ dir = 1 }, /area/science/circuit) +"hdH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor{ + dir = 9; + id = "cargoload" + }, +/turf/open/floor/plating, +/area/quartermaster/storage) "hic" = ( /obj/structure/table/reinforced, /obj/item/device/integrated_electronics/analyzer, @@ -100702,6 +100309,15 @@ dir = 9 }, /area/science/circuit) +"hWz" = ( +/turf/open/space, +/area/space) +"iji" = ( +/obj/machinery/vending/kink, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/crew_quarters/locker) "iQh" = ( /obj/structure/bodycontainer/morgue{ dir = 1 @@ -100760,6 +100376,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral, /area/medical/morgue) +"kam" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor{ + dir = 5; + id = "cargoload" + }, +/turf/open/floor/plating, +/area/quartermaster/storage) +"knk" = ( +/turf/open/floor/plating/airless, +/area/space) "kwx" = ( /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel/whitepurple/corner, @@ -100832,6 +100459,20 @@ dir = 6 }, /area/science/circuit) +"lTo" = ( +/obj/docking_port/stationary{ + area_type = /area/construction/mining/aux_base; + dheight = 4; + dir = 4; + dwidth = 4; + height = 9; + id = "aux_base_zone"; + name = "aux base zone"; + roundstart_template = /datum/map_template/shuttle/aux_base/default; + width = 9 + }, +/turf/open/floor/plating, +/area/construction/mining/aux_base) "lXM" = ( /obj/structure/target_stake, /turf/open/floor/plasteel/white/side{ @@ -100849,6 +100490,17 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/circuit/green, /area/science/research/abandoned) +"ntr" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/plating/airless, +/area/engine/engineering) "nSh" = ( /obj/machinery/atmospherics/pipe/simple/general/hidden, /turf/closed/wall/r_wall, @@ -100875,6 +100527,10 @@ dir = 1 }, /area/science/circuit) +"pqi" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space) "psi" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/bodycontainer/morgue{ @@ -100907,11 +100563,22 @@ dir = 9 }, /area/science/circuit) +"qlj" = ( +/obj/structure/lattice, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/space, +/area/engine/engineering) "qpq" = ( /turf/open/floor/plasteel/white/side{ dir = 5 }, /area/science/circuit) +"qLI" = ( +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/space) "rhO" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 @@ -100934,6 +100601,10 @@ "saw" = ( /turf/closed/wall, /area/science/circuit) +"sDj" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/space) "tmi" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -100948,6 +100619,17 @@ dir = 10 }, /area/science/misc_lab) +"ugB" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "upk" = ( /obj/machinery/door/airlock/public/glass{ name = "Holodeck Access" @@ -100973,7 +100655,7 @@ /turf/open/floor/plasteel/whitepurple/side, /area/science/misc_lab) "uYS" = ( -/obj/machinery/door/airlock/atmos/glass{ +/obj/machinery/door/airlock/atmos/glass/critical{ heat_proof = 1; name = "Supermatter Chamber"; req_one_access_txt = "24;10" @@ -100992,6 +100674,13 @@ dir = 5 }, /area/medical/morgue) +"vRm" = ( +/obj/structure/particle_accelerator/particle_emitter/center{ + icon_state = "emitter_center"; + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) "wei" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, @@ -101068,6 +100757,13 @@ }, /turf/open/floor/plasteel/white/side, /area/science/circuit) +"ybu" = ( +/obj/structure/particle_accelerator/power_box{ + icon_state = "power_box"; + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) "yjc" = ( /obj/machinery/power/apc{ areastring = "/area/science/research/abandoned"; @@ -120744,17 +120440,17 @@ aaa car car car -aad +pqi aaa ciY aaa aaa aaa -aad +qlj aaa aaa aaa -aad +qlj aaa aaa aaa @@ -121003,19 +120699,19 @@ cbN cdC cdC aaa -aaz -aaM -aaM -abM -aaM -aaM -abM -aaM -aaM -abM -aaM -aaM -acn +ciZ +cku +cku +cnA +cku +cku +cnA +cku +cku +cnA +cku +cku +cAH aaa cdC cdC @@ -121259,21 +120955,21 @@ car cbN cdC cfA -aad -aaH -aba -abJ -abN -abJ -abJ -abV -abJ -abJ -abN -abJ -acj -aaH -aad +pqi +cja +ckv +clR +cnB +clR +clR +crI +clR +clR +cnB +clR +czo +cja +pqi cDT cdC cHb @@ -121514,25 +121210,25 @@ bVZ aad car cbO -aav +cdD cfA aaa -aaH -abl -abK -aaT -aaT -abK -aaU +cja +ckw +clS +hWz +hWz +clS +gbW aaa -aaT -aaT -abK -ack -aaH +hWz +hWz +clS +sDj +cja aaa cDT -abI +cFH cHc car ceb @@ -121773,21 +121469,21 @@ car cbP cdC cfA -aad -aaJ -aby -aaT -aaT -aaT -aaU -aad +pqi +cjb +ckx +hWz +hWz +hWz +gbW +pqi aaa -aaT -aaT -aaT -acl -acw -aad +hWz +hWz +hWz +czp +cAI +pqi cDT cdC cFJ @@ -122031,19 +121727,19 @@ cbQ cdE cfA aaa -aaH -abl -aaT -aaT +cja +ckw +hWz +hWz aaa -aaL -aad -aaL aaa -aaT -aaT -ack -aaH +pqi +aaa +aaa +hWz +hWz +sDj +cja aaa cDT cFI @@ -122287,21 +121983,21 @@ car car cbP cfA -abj -aaJ -aby +qLI +cjb +ckx aaa aaa -aaL -abO -abJ -acg -aaL -aaU -abK -acl -acw -abj +aaa +cqo +clR +ctm +aaa +gbW +clS +czp +cAI +qLI cDT cFJ car @@ -122542,25 +122238,25 @@ bWd bYp car car -cbP +ugB cdC -aad -aaH -abl -aaU -aad -aad -abl -abW -ach -aad -aad -aaU -ack -aaH -aad +pqi +cja +ckw +gbW +pqi +pqi +ckw +crJ +ctn +pqi +pqi +gbW +sDj +cja +pqi cdC -cFJ +ntr car car cJL @@ -122801,21 +122497,21 @@ car car cbP cfA -abj -aaJ -aby -abK -aaU -aaL -abU -abX -aci -aaL +qLI +cjb +ckx +clS +gbW +aaa +cqp +crK +cto aaa aaa -acl -acw -abj +aaa +czp +cAI +qLI cDT cFJ car @@ -123059,19 +122755,19 @@ cbR cdF cfA aaa -aaH -abl -aaT -aaT +cja +ckw +hWz +hWz aaa -aaL -aad -aaL aaa -aaT -aaT -ack -aaH +pqi +aaa +aaa +hWz +hWz +sDj +cja aaa cDT cFK @@ -123315,21 +123011,21 @@ car cbP cdC cfA -aad -aaJ -aby -aaT -aaT +pqi +cjb +ckx +hWz +hWz aaa aaa -aad -aaU +pqi +gbW aaa -aaT -aaT -acl -acw -aad +hWz +hWz +czp +cAI +pqi cDU cdC cFJ @@ -123570,25 +123266,25 @@ bWg bYs car cbS -aav +cdD cfA aaa -aaH -abl -abK -aaT +cja +ckw +clS +hWz aaa aaa -aaU -abK -aaT -aaT -abK -ack -aaH +gbW +clS +hWz +hWz +clS +sDj +cja aaa cDT -abI +cFH cHf car cJO @@ -123829,21 +123525,21 @@ car cbP cdC cfA -aad -aaK -abz -abL -abL -abL -abL -abY -abL -abL -abL -abL -acm -acx -aad +pqi +cjc +ckz +clU +clU +clU +clU +crL +clU +clU +clU +clU +czr +cAJ +pqi cDT cdC cFJ @@ -124085,11 +123781,11 @@ bYu car cbT cdG -aaw -aax -aaF +cfB +knk +knk aaa -aad +pqi cjd cjd cjd @@ -124097,11 +123793,11 @@ crM cjd cjd cjd -aad +pqi aaa -aaF -aax -abB +knk +knk +cDV cFL cHg car @@ -124600,20 +124296,20 @@ car cbU cdI cfC -aay -aaG -aaG -aaG +chu +cje +cje +cje cjd cpa -aaX -abb -abm +cqr +vRm +ctp cuQ cjd -aaG -aaG -abA +cje +cje +cAK cCr cfC cFN @@ -124859,12 +124555,12 @@ cdJ car chv chv -aaI +ckA chv cnC cpa cqs -abc +ybu ctq cuR cnC @@ -125120,8 +124816,8 @@ chw clW cnD cpb -aaY -abd +cqt +crO ctr cuS cnD @@ -125374,15 +125070,15 @@ cfE chx cjh cjn -aaN -aaV -aaW +clX +cnE +cpc cqu -abk +eIf cts -abo -aaV -aaN +cuT +cnE +clX cjn cAL cCs @@ -137354,10 +137050,10 @@ aaa aaa aaa aaa -aaA -aaA -aaA -abr +aaa +aaa +aaa +aaa abE aaO aca @@ -137611,9 +137307,9 @@ aaa aaa aaa aas -aaB -aaQ -abg +aaa +aaa +aaa abs abF abP @@ -137868,10 +137564,10 @@ aaa aaa aaa aaa -aaA -aaA -aaA -abr +aaa +aaa +aaa +aaa abG aaO acc @@ -141980,10 +141676,10 @@ aaa aaa aaa aaa -aaC -aaC -aaC -abt +aaa +aaa +aaa +aaa abE aaO aca @@ -142237,10 +141933,10 @@ aaa aaa aaa aat -aaD -aaR -abh -abu +aaa +aaa +aaa +abs abF abQ acb @@ -142494,10 +142190,10 @@ aaa aaa aaa aaa -aaC -aaC -aaC -abt +aaa +aaa +aaa +aaa abG aaO acc @@ -144050,14 +143746,14 @@ ace aad abi aeF -afg -afg -afg -agq -afg -afg -afg -ahG +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF abi ail aiG @@ -144306,15 +144002,15 @@ adi ace aaa abi -aeG -afh -afi -afj -afj -afj -afj -ahw -ahH +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF abi aim aiH @@ -144563,15 +144259,15 @@ adj ace aad abi -aeG -afi -afj -afj -afj -afj -afj -afj -ahH +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF abi ain aiI @@ -144820,15 +144516,15 @@ acf acf aad abi -aeG -afj -afj -afj -agr -afj -afi -afj -ahH +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF abi aio aiI @@ -145077,15 +144773,15 @@ acf aad aad abi -aeG -afj -afj -afZ -ags -afj -afj -afj -ahH +aeF +aeF +aeF +aeF +lTo +aeF +aeF +aeF +aeF abi aip aiH @@ -145334,15 +145030,15 @@ acf aad aad abi -aeG -afj -afi -afj -agt -afj -afj -afj -ahH +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF abi aiq aiI @@ -145591,15 +145287,15 @@ aad aad aaa abi -aeG -afi -afj -afj -afj -afi -afj -afj -ahH +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF abi air aiI @@ -145848,15 +145544,15 @@ aad aac aad abi -aeG -aeH -afj -afi -afj -afj -afj -ahx -ahH +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF abi ais aiI @@ -146105,15 +145801,15 @@ aaa aac aad abi -aeH -afk -afk -afk -afk -afk -afk -afk -ahx +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF abi aig aiJ @@ -146651,11 +146347,11 @@ axm ayD ayD ayD -ayD +hdH azD aEg azD -aGC +kam aHV aHV aHV @@ -149535,7 +149231,7 @@ clt cnc coE cqd -aaZ +iji csT cuy cvU @@ -150822,7 +150518,7 @@ coI cqd crv csY -abn +cuB cvZ cxq cyV @@ -151081,8 +150777,8 @@ cqd csZ cuC cwa -abw -abx +cxr +cyW cqd cCb cDB @@ -154625,7 +154321,7 @@ aFn aGK aIg aJB -aaq +aKY aMj aNF aPn @@ -154883,7 +154579,7 @@ aGL aIh aJC aKV -aar +aMk aNG aPo aRf @@ -159260,9 +158956,9 @@ aaa ajr aad aKV -aZN +aaa bbv -aZN +aaa aKV aad aad @@ -159517,9 +159213,9 @@ aaa aaa aad aKV -aZO -bbw -aZO +aaa +aaa +aaa aKV aaa aaa @@ -159774,9 +159470,9 @@ aaa aaa aaa aXU -aZO -bbx -aZO +aaa +aaa +aaa aXU aaa aaa @@ -160031,9 +159727,9 @@ aaa aaa aaa aaa -aZO -bby -aZO +aaa +aaa +aaa aaa aaa aaa diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index f9de891e3d..fd874256f7 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -2,35 +2,10 @@ "aaa" = ( /turf/open/space/basic, /area/space) -"aab" = ( -/obj/machinery/newscaster{ - pixel_y = 32 - }, -/obj/machinery/vending/sustenance{ - desc = "A vending machine normally reserved for work camps."; - name = "\improper sustenance vendor"; - product_slogans = "Enjoy your meal.;Enough calories to support any worker." - }, -/turf/open/floor/plasteel, -/area/security/prison) "aac" = ( /obj/effect/landmark/carpspawn, /turf/open/space, /area/space) -"aad" = ( -/obj/machinery/computer/cryopod{ - pixel_x = 28; - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) -"aae" = ( -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/obj/machinery/cryopod, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) "aaf" = ( /obj/structure/lattice, /turf/open/space, @@ -277,10 +252,6 @@ }, /turf/open/floor/plating, /area/security/prison) -"aaM" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_2) "aaN" = ( /obj/structure/cable{ icon_state = "0-2" @@ -323,45 +294,6 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) -"aaU" = ( -/obj/machinery/door/window/southright{ - dir = 4; - name = "Engineering Deliveries"; - req_access_txt = "10"; - req_one_access_txt = "0" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/yellow/side{ - dir = 9 - }, -/area/engine/engineering) -"aaV" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_2) -"aaW" = ( -/obj/structure/sign/warning/securearea{ - pixel_y = 32 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 - }, -/area/engine/engineering) -"aaX" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 - }, -/area/engine/engineering) "aaY" = ( /obj/structure/cable{ icon_state = "1-2" @@ -396,24 +328,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/security/prison) -"abd" = ( -/obj/machinery/light_switch{ - pixel_x = 23 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/machinery/shower{ - dir = 8; - name = "emergency shower" - }, -/obj/structure/sign/warning/securearea{ - pixel_y = 32 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 5 - }, -/area/engine/engineering) "abe" = ( /turf/closed/wall, /area/security/prison) @@ -496,11 +410,11 @@ /turf/open/floor/plasteel/floorgrime, /area/security/prison) "abn" = ( -/obj/machinery/light/small{ - dir = 1 +/obj/machinery/newscaster{ + pixel_y = 32 }, -/turf/open/floor/plating, -/area/engine/engineering) +/turf/open/floor/plasteel, +/area/security/prison) "abo" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -544,21 +458,16 @@ dir = 8 }, /area/security/prison) -"abt" = ( -/obj/structure/shuttle/engine/propulsion/burst, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_2) "abu" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" +/obj/docking_port/stationary{ + dir = 1; + dwidth = 1; + height = 4; + roundstart_template = /datum/map_template/shuttle/escape_pod/default; + width = 3 }, -/obj/docking_port/mobile/pod{ - id = "pod2"; - name = "escape pod 2"; - port_direction = 2 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_2) +/turf/open/space/basic, +/area/space) "abv" = ( /obj/structure/cable{ icon_state = "0-2" @@ -828,22 +737,14 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/security/prison) -"acd" = ( -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable/white{ - icon_state = "2-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "ace" = ( -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable/white{ - icon_state = "4-8" +/obj/machinery/vending/sustenance{ + desc = "A vending machine normally reserved for work camps."; + name = "\improper sustenance vendor"; + product_slogans = "Enjoy your meal.;Enough calories to support any worker." }, -/turf/open/floor/plating/airless, -/area/engine/engineering) +/turf/open/floor/plasteel/floorgrime, +/area/security/prison) "acf" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, @@ -997,16 +898,17 @@ /turf/open/floor/plasteel/floorgrime, /area/security/prison) "acx" = ( -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable/white{ - icon_state = "2-8" +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 }, -/obj/structure/cable/white{ - icon_state = "4-8" +/obj/machinery/cryopod{ + tag = "icon-cryopod-open (WEST)"; + icon_state = "cryopod-open"; + dir = 8 }, -/turf/open/floor/plating/airless, -/area/engine/engineering) +/turf/open/floor/plasteel/floorgrime, +/area/security/prison) "acy" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod Two" @@ -1159,6 +1061,9 @@ pixel_y = 7 }, /obj/item/pen, +/obj/machinery/computer/cryopod{ + pixel_x = 28 + }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) "acN" = ( @@ -1451,15 +1356,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/fitness/recreation) -"adk" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_3) -"adl" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_3) "adm" = ( /obj/structure/table, /obj/item/device/flashlight/lamp, @@ -1623,18 +1519,15 @@ /turf/open/floor/plating, /area/crew_quarters/fitness/recreation) "adF" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ +/obj/docking_port/stationary{ dir = 4; - id = "pod3"; - name = "escape pod 3"; - port_direction = 2; - preferred_direction = 4 + dwidth = 1; + height = 4; + roundstart_template = /datum/map_template/shuttle/escape_pod/default; + width = 3 }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_3) +/turf/open/space/basic, +/area/space) "adG" = ( /obj/docking_port/stationary/random{ id = "pod_lavaland2"; @@ -1642,24 +1535,6 @@ }, /turf/open/space, /area/space/nearstation) -"adH" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/status_display{ - pixel_x = 32 - }, -/obj/machinery/computer/shuttle/pod{ - pixel_x = -32; - possible_destinations = "pod_lavaland2"; - shuttleId = "pod2" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_2) -"adI" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_3) "adJ" = ( /obj/item/device/radio/intercom{ freerange = 0; @@ -2083,14 +1958,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/fitness/recreation) -"aeD" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/engine/engineering) "aeE" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -2816,16 +2683,6 @@ dir = 1 }, /area/security/prison) -"afQ" = ( -/obj/structure/cable/white{ - icon_state = "2-8" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) "afR" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -3320,8 +3177,6 @@ /obj/item/storage/fancy/donut_box, /obj/item/gun/energy/e_gun/dragnet, /obj/item/gun/energy/e_gun/dragnet, -/obj/item/gun/energy/pumpaction/blaster, -/obj/item/gun/energy/pumpaction/blaster, /turf/open/floor/plasteel/vault{ dir = 1 }, @@ -3791,14 +3646,6 @@ icon_state = "platingdmg1" }, /area/maintenance/fore) -"ahT" = ( -/obj/structure/cable/white{ - icon_state = "2-4" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/plating/airless, -/area/engine/engineering) "ahU" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/structure/table, @@ -3929,7 +3776,7 @@ /area/maintenance/disposal) "aih" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = -1; + dir = 8; id = "garbage"; name = "disposal conveyor" }, @@ -4319,9 +4166,8 @@ /area/engine/gravity_generator) "ajc" = ( /obj/machinery/conveyor{ - dir = 2; - id = "garbage"; - layer = 2.7 + dir = 1; + id = "garbage" }, /obj/machinery/door/poddoor/preopen{ id = "Disposal Exit"; @@ -4393,14 +4239,6 @@ /obj/item/restraints/handcuffs/cable/pink, /turf/open/floor/plating, /area/maintenance/port/fore) -"ajk" = ( -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable/white{ - icon_state = "2-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "ajl" = ( /obj/item/soap/deluxe, /obj/item/storage/secure/safe{ @@ -4489,9 +4327,6 @@ dir = 4 }, /area/security/warden) -"aju" = ( -/turf/open/space/basic, -/area/space/nearstation) "ajv" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -4764,7 +4599,7 @@ /area/maintenance/solars/starboard/fore) "akf" = ( /obj/machinery/conveyor{ - dir = 2; + dir = 1; id = "garbage" }, /turf/open/floor/plating, @@ -5422,20 +5257,6 @@ "alq" = ( /turf/closed/wall, /area/maintenance/starboard) -"alr" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/effect/turf_decal/delivery, -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 2 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/engineering) "als" = ( /obj/machinery/light{ dir = 8 @@ -5471,7 +5292,7 @@ /area/maintenance/solars/starboard/fore) "alx" = ( /obj/machinery/conveyor{ - dir = 2; + dir = 1; id = "garbage" }, /obj/structure/sign/warning/vacuum{ @@ -5506,7 +5327,7 @@ /area/maintenance/disposal) "alz" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "garbage" }, /obj/machinery/door/window/eastright{ @@ -6173,23 +5994,18 @@ }, /obj/machinery/conveyor{ dir = 9; - id = "garbage"; - verted = -1 + id = "garbage" }, /turf/open/floor/plating, /area/maintenance/disposal) "amP" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "garbage" }, /turf/open/floor/plating, /area/maintenance/disposal) "amQ" = ( -/obj/machinery/conveyor{ - dir = 6; - id = "garbage" - }, /obj/machinery/door/window/eastright{ base_state = "left"; dir = 4; @@ -6197,6 +6013,10 @@ name = "Danger: Conveyor Access"; req_access_txt = "12" }, +/obj/machinery/conveyor/inverted{ + dir = 6; + id = "garbage" + }, /turf/open/floor/plating, /area/maintenance/disposal) "amR" = ( @@ -6233,13 +6053,6 @@ icon_state = "platingdmg2" }, /area/maintenance/port) -"amV" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/engine/engineering) "amW" = ( /obj/structure/table/reinforced, /obj/item/folder, @@ -6483,19 +6296,6 @@ /obj/item/paper, /turf/open/floor/plasteel, /area/security/main) -"anz" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/sorting/mail{ - sortType = 4 - }, -/obj/effect/landmark/start/station_engineer, -/obj/structure/cable/white{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "anA" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment, @@ -6639,10 +6439,6 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/machinery/conveyor{ - dir = 8; - id = "garbage" - }, /obj/structure/disposaloutlet{ dir = 4 }, @@ -6653,7 +6449,7 @@ /area/maintenance/disposal) "anV" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/structure/disposalpipe/segment{ @@ -6663,7 +6459,7 @@ /area/maintenance/disposal) "anW" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/machinery/atmospherics/components/unary/vent_pump/on, @@ -6671,7 +6467,7 @@ /area/maintenance/disposal) "anX" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/machinery/recycler, @@ -6683,7 +6479,7 @@ name = "Danger: Conveyor Access"; req_access_txt = "12" }, -/obj/machinery/conveyor{ +/obj/machinery/conveyor/inverted{ dir = 10; id = "garbage" }, @@ -6928,15 +6724,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/security/warden) -"aov" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "aow" = ( /obj/machinery/door/firedoor, /obj/structure/cable/yellow{ @@ -7392,16 +7179,16 @@ /obj/structure/plasticflaps{ opacity = 0 }, -/obj/machinery/conveyor{ - dir = 2; - id = "garbage" - }, /obj/machinery/door/window/northright{ dir = 2; name = "delivery door"; req_access_txt = "31" }, /obj/structure/disposalpipe/segment, +/obj/machinery/conveyor{ + dir = 1; + id = "garbage" + }, /turf/open/floor/plating, /area/maintenance/disposal) "aps" = ( @@ -7620,15 +7407,6 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) -"apP" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "apQ" = ( /obj/structure/reagent_dispensers/peppertank{ pixel_x = 32 @@ -7681,26 +7459,6 @@ /obj/item/device/assembly/flash/handheld, /turf/open/floor/plasteel, /area/security/main) -"apX" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/door/airlock/external{ - name = "External Containment Access"; - req_access_txt = "10; 13" - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) "apY" = ( /obj/structure/table, /obj/item/folder/red, @@ -7744,14 +7502,6 @@ /obj/item/clothing/head/soft/red, /turf/open/floor/plasteel/vault, /area/crew_quarters/fitness/recreation) -"aqe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plating, -/area/engine/engineering) "aqf" = ( /obj/structure/closet/lasertag/blue, /turf/open/floor/plasteel/vault, @@ -8210,25 +7960,6 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) -"arh" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/external{ - name = "External Containment Access"; - req_access_txt = "10; 13" - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) "ari" = ( /obj/machinery/holopad, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -8417,12 +8148,6 @@ dir = 4 }, /area/crew_quarters/dorms) -"arF" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "arG" = ( /obj/structure/closet, /obj/item/storage/box/lights/mixed, @@ -9474,12 +9199,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"atC" = ( -/obj/structure/cable/white{ - icon_state = "1-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "atD" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -9502,9 +9221,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"atF" = ( -/turf/open/floor/plating/airless, -/area/engine/engineering) "atG" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -9548,17 +9264,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"atJ" = ( -/obj/structure/cable/white, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/power/emitter{ - anchored = 1; - state = 2 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "atK" = ( /obj/machinery/computer/gulag_teleporter_computer{ dir = 1 @@ -10024,44 +9729,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"auQ" = ( -/obj/structure/cable/white{ - icon_state = "1-4" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"auR" = ( -/obj/structure/cable/white{ - icon_state = "1-8" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"auS" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/yellow/side{ - dir = 9 - }, -/area/engine/engineering) -"auT" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/item/clothing/suit/hooded/wintercoat/engineering, -/obj/effect/turf_decal/delivery, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 - }, -/area/engine/engineering) "auU" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -10634,38 +10301,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"avU" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 - }, -/area/engine/engineering) -"avV" = ( -/obj/item/device/radio/intercom{ - freerange = 0; - frequency = 1459; - name = "Station Intercom (General)"; - pixel_y = 21 - }, -/obj/machinery/camera{ - c_tag = "Engineering - Fore"; - dir = 2 - }, -/obj/structure/closet/secure_closet/engineering_personal, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 - }, -/area/engine/engineering) -"avW" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/engine/engineering) -"avX" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "avY" = ( /obj/machinery/door/airlock/external{ name = "Labor Camp Shuttle Airlock"; @@ -11067,23 +10702,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/fore) -"awN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"awO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "awP" = ( /obj/item/clothing/gloves/color/rainbow, /obj/item/clothing/shoes/sneakers/rainbow, @@ -11140,22 +10758,6 @@ "awW" = ( /turf/closed/wall/r_wall, /area/security/nuke_storage) -"awX" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"awY" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -22 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/engineering) "awZ" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 @@ -11489,12 +11091,6 @@ dir = 1 }, /area/crew_quarters/dorms) -"axH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "axI" = ( /obj/machinery/door/airlock{ id_tag = "Cabin5"; @@ -11633,75 +11229,69 @@ /turf/open/floor/plasteel, /area/engine/engineering) "axU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/machinery/door/window/southright{ + dir = 4; + name = "Engineering Deliveries"; + req_access_txt = "10"; + req_one_access_txt = "0" }, -/obj/structure/cable/yellow{ - icon_state = "2-4" +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/yellow/side{ + dir = 9 }, -/turf/open/floor/plasteel, /area/engine/engineering) "axV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/structure/sign/warning/securearea{ + pixel_y = 32 }, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 }, -/turf/open/floor/plasteel, /area/engine/engineering) "axW" = ( -/obj/machinery/light{ - dir = 4 +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 }, -/turf/open/floor/plasteel, /area/engine/engineering) "axX" = ( -/obj/structure/lattice, -/turf/open/space, -/area/space) +/obj/machinery/light_switch{ + pixel_x = 23 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/shower{ + dir = 8; + name = "emergency shower" + }, +/obj/structure/sign/warning/securearea{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 5 + }, +/area/engine/engineering) "axY" = ( /turf/closed/wall/r_wall, /area/engine/engineering) -"axZ" = ( -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/space) -"aya" = ( -/turf/open/floor/plating/airless, -/area/space) -"ayb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/engineering) "ayc" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable/white{ + icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"ayd" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aye" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, +/turf/open/floor/plating/airless, /area/engine/engineering) "ayf" = ( /obj/structure/closet/crate, @@ -11711,15 +11301,6 @@ /obj/item/stack/rods, /turf/open/floor/plating/airless, /area/space/nearstation) -"ayg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"ayh" = ( -/turf/open/floor/plasteel, -/area/engine/engineering) "ayi" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -11807,28 +11388,6 @@ dir = 8 }, /area/security/nuke_storage) -"ayt" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24; - pixel_y = -26 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"ayu" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, -/area/space) -"ayv" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/space, -/area/space) "ayw" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/yellow{ @@ -12063,83 +11622,69 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "ayS" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/space, -/area/space) -"ayT" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/space, -/area/space) -"ayU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/effect/turf_decal/delivery, +/obj/structure/window/reinforced{ + dir = 1; + pixel_y = 2 }, +/turf/open/floor/plasteel/yellow/side{ + dir = 8 + }, +/area/engine/engineering) +"ayT" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/yellow/side{ dir = 8 }, /area/engine/engineering) "ayV" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 + dir = 8 }, -/obj/structure/cable/yellow{ - icon_state = "2-8" +/obj/structure/cable/white{ + icon_state = "4-8" }, /turf/open/floor/plasteel, /area/engine/engineering) "ayW" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Fore Port"; - dir = 4; - network = list("singularity") +/obj/structure/cable/white{ + icon_state = "4-8" }, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, /area/engine/engineering) "ayX" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/space, -/area/space) -"ayY" = ( -/obj/effect/turf_decal/stripes/corner{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/turf/open/floor/plating/airless, -/area/space) -"ayZ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/machinery/door/airlock/external{ + name = "External Containment Access"; + req_access_txt = "10; 13" }, -/turf/open/floor/plating/airless, -/area/space) +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) "aza" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/structure/cable/white{ + icon_state = "1-8" }, -/obj/machinery/power/tesla_coil, /turf/open/floor/plating/airless, -/area/space) +/area/engine/engineering) "azb" = ( /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, /obj/structure/cable/yellow{ @@ -12149,21 +11694,18 @@ dir = 4 }, /area/security/brig) -"azc" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Fore Starboard"; - dir = 8; - network = list("singularity") +"azd" = ( +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/white{ + icon_state = "1-8" + }, +/obj/structure/cable/white{ + icon_state = "4-8" }, /turf/open/floor/plating/airless, -/area/space) -"azd" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, /area/engine/engineering) "aze" = ( /obj/item/twohanded/required/kirbyplants{ @@ -12172,31 +11714,10 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/wood, /area/library) -"azf" = ( -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) "azg" = ( /obj/item/stack/cable_coil, /turf/open/floor/plating/airless, /area/space/nearstation) -"azh" = ( -/obj/structure/rack, -/obj/machinery/button/door{ - id = "engpa"; - name = "Engineering Chamber Shutters Control"; - pixel_y = -26; - req_access_txt = "11" - }, -/obj/item/clothing/gloves/color/black, -/obj/item/wrench, -/obj/item/clothing/glasses/meson/engine, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"azi" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) "azj" = ( /obj/item/stack/ore/iron, /obj/effect/turf_decal/stripes/line{ @@ -12392,16 +11913,6 @@ dir = 1 }, /area/security/nuke_storage) -"azA" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"azB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/space) "azC" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -12819,103 +12330,68 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "aAo" = ( -/obj/machinery/field/generator{ - anchored = 1; - state = 2 - }, -/turf/open/floor/plating/airless, -/area/space) -"aAp" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -27 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/engineering) -"aAq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aAr" = ( -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/suit/hazardvest, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/emergency_oxygen/engi, +/obj/structure/closet/secure_closet/engineering_personal, /obj/effect/turf_decal/delivery, -/obj/structure/table, /turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/engine/engineering) -"aAs" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engpa"; - name = "Engineering Chamber Shutters" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aAt" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"aAu" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating/airless, -/area/space) -"aAv" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/engineering) -"aAw" = ( -/obj/structure/table, -/obj/effect/turf_decal/delivery, -/obj/item/clothing/glasses/meson/engine, -/obj/item/clothing/glasses/meson/engine, -/obj/item/clothing/glasses/meson/engine, -/obj/machinery/light{ - dir = 4 - }, -/obj/item/pipe_dispenser, -/obj/item/pipe_dispenser, -/obj/item/pipe_dispenser, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/engine/engineering) -"aAx" = ( -/obj/machinery/button/door{ - id = "engpa"; - name = "Engineering Chamber Shutters Control"; - pixel_y = 26; - req_access_txt = "11" - }, -/obj/effect/turf_decal/stripes/line{ dir = 9 }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plating, /area/engine/engineering) -"aAy" = ( -/obj/effect/turf_decal/stripes/line{ +"aAp" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/obj/effect/turf_decal/delivery, +/obj/machinery/light{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/engine/engineering) +"aAr" = ( +/obj/item/device/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/machinery/camera{ + c_tag = "Engineering - Fore"; + dir = 2 + }, +/obj/structure/closet/secure_closet/engineering_personal, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/engine/engineering) +"aAt" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aAu" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/sorting/mail{ + sortType = 4 + }, +/obj/effect/landmark/start/station_engineer, +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aAv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aAx" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, /area/engine/engineering) "aAz" = ( /obj/structure/table/wood, @@ -13132,14 +12608,6 @@ dir = 1 }, /area/security/nuke_storage) -"aAU" = ( -/obj/structure/table, -/obj/item/airlock_painter, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/yellow/side{ - dir = 9 - }, -/area/engine/engineering) "aAV" = ( /obj/docking_port/stationary{ dir = 8; @@ -13532,19 +13000,19 @@ /turf/closed/wall, /area/engine/engineering) "aBJ" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, /turf/open/floor/plasteel/yellow/side{ - dir = 4 + dir = 8 }, /area/engine/engineering) "aBK" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engpa"; - name = "Engineering Chamber Shutters" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plasteel, @@ -13587,30 +13055,11 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aBO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"aBP" = ( -/obj/structure/particle_accelerator/particle_emitter/right{ - icon_state = "emitter_right"; +/obj/machinery/light{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) -"aBQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating/airless, -/area/space) -"aBR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating/airless, -/area/space) "aBS" = ( /obj/item/stack/ore/silver, /obj/item/stack/ore/silver, @@ -13759,11 +13208,6 @@ dir = 1 }, /area/security/nuke_storage) -"aCi" = ( -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/engineering) "aCj" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security/glass{ @@ -14055,22 +13499,6 @@ /obj/item/clothing/under/suit_jacket/navy, /turf/open/floor/carpet, /area/crew_quarters/dorms) -"aCL" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the Engine."; - dir = 8; - layer = 4; - name = "Engine Monitor"; - network = list("singularity"); - pixel_x = 30 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/engine/engineering) "aCM" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -14133,55 +13561,51 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aCU" = ( -/obj/structure/particle_accelerator/end_cap{ - icon_state = "end_cap"; +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, /area/engine/engineering) "aCV" = ( -/obj/structure/particle_accelerator/fuel_chamber{ - icon_state = "fuel_chamber"; +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) "aCW" = ( -/obj/structure/particle_accelerator/power_box{ - icon_state = "power_box"; - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) "aCX" = ( -/obj/structure/particle_accelerator/particle_emitter/center{ - icon_state = "emitter_center"; - dir = 4 - }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) "aCY" = ( -/obj/structure/cable{ - icon_state = "2-4" +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24; + pixel_y = -26 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) "aCZ" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, +/obj/machinery/power/tesla_coil, /turf/open/floor/plating/airless, /area/space) "aDa" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/structure/ore_box, /turf/open/floor/plating, -/area/shuttle/auxillary_base) +/area/construction/mining/aux_base) "aDb" = ( /turf/closed/wall, /area/construction/mining/aux_base) @@ -14191,30 +13615,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/fore) -"aDd" = ( -/obj/machinery/the_singularitygen/tesla, -/turf/open/floor/plating/airless, -/area/space) -"aDe" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space) -"aDf" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aDg" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/engine/engineering) "aDh" = ( /obj/machinery/firealarm{ dir = 8; @@ -14320,22 +13720,6 @@ /obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/security/nuke_storage) -"aDt" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engpa"; - name = "Engineering Chamber Shutters" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "aDu" = ( /turf/closed/wall, /area/hallway/primary/fore) @@ -14805,13 +14189,16 @@ }, /area/engine/engineering) "aEn" = ( -/obj/structure/cable{ - icon_state = "2-8" +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/obj/effect/turf_decal/stripes/line{ +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/yellow/side{ dir = 8 }, -/turf/open/floor/plating, /area/engine/engineering) "aEo" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -14824,29 +14211,26 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aEp" = ( -/obj/machinery/particle_accelerator/control_box, -/obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"aEq" = ( -/obj/item/wrench, -/turf/open/floor/plating, -/area/engine/engineering) -"aEr" = ( -/obj/structure/particle_accelerator/particle_emitter/left{ - icon_state = "emitter_left"; - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"aEs" = ( -/obj/structure/cable{ +/obj/structure/cable/yellow{ icon_state = "1-2" }, -/turf/open/floor/plating, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aEr" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Containment - Fore Port"; + dir = 4; + network = list("singularity") + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless, /area/engine/engineering) "aEt" = ( /obj/structure/table, @@ -14862,12 +14246,6 @@ }, /turf/open/floor/plasteel/floorgrime, /area/quartermaster/warehouse) -"aEu" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating/airless, -/area/space) "aEv" = ( /obj/machinery/computer/security/mining{ dir = 4; @@ -14932,12 +14310,6 @@ }, /turf/open/floor/plasteel/floorgrime, /area/quartermaster/warehouse) -"aEC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plating/airless, -/area/space) "aED" = ( /obj/structure/closet/crate/internals, /obj/structure/cable/yellow{ @@ -15389,11 +14761,13 @@ /turf/open/floor/plating, /area/engine/engineering) "aFv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 2 }, -/turf/open/floor/plating/airless, -/area/space) +/turf/open/floor/plasteel/yellow/side{ + dir = 8 + }, +/area/engine/engineering) "aFw" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 @@ -15410,73 +14784,26 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"aFy" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high{ - charge = 100; - maxcharge = 15000 - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/yellow/side{ - dir = 10 - }, -/area/engine/engineering) -"aFz" = ( -/obj/structure/closet/firecloset, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/engine/engineering) "aFA" = ( +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"aFB" = ( +/obj/structure/rack, /obj/machinery/button/door{ id = "engpa"; name = "Engineering Chamber Shutters Control"; pixel_y = -26; req_access_txt = "11" }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"aFB" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, +/obj/item/clothing/gloves/color/black, +/obj/item/wrench, +/obj/item/clothing/glasses/meson/engine, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/yellow/side, /area/engine/engineering) "aFC" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Particle Accelerator"; - dir = 1; - network = list("singularity") - }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"aFD" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plasteel/yellow/side, /area/engine/engineering) "aFE" = ( /obj/structure/table/wood, @@ -16217,14 +15544,8 @@ }, /area/engine/engineering) "aGV" = ( -/obj/machinery/power/apc/highcap/ten_k{ - dir = 8; - name = "Engine Room APC"; - areastring = "/area/engine/engineering"; - pixel_x = -26 - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 }, /turf/open/floor/plasteel/yellow/side{ dir = 8 @@ -16236,56 +15557,18 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aGX" = ( -/obj/structure/table, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/obj/item/storage/belt/utility, -/obj/item/storage/belt/utility, -/obj/item/storage/toolbox/electrical{ - pixel_x = 1; - pixel_y = 10 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/engine/engineering) -"aGY" = ( -/obj/machinery/vending/tool, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 }, +/turf/open/floor/plasteel, /area/engine/engineering) "aGZ" = ( -/turf/open/floor/plasteel/yellow/side{ - dir = 1 - }, -/area/engine/engineering) -"aHa" = ( -/obj/structure/rack, -/obj/machinery/button/door{ +/obj/machinery/door/poddoor/shutters/preopen{ id = "engpa"; - name = "Engineering Chamber Shutters Control"; - pixel_y = 26; - req_access_txt = "11" - }, -/obj/item/storage/belt/utility, -/obj/item/weldingtool, -/obj/item/clothing/head/welding, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 + name = "Engineering Chamber Shutters" }, +/turf/open/floor/plasteel, /area/engine/engineering) -"aHb" = ( -/obj/machinery/camera{ - c_tag = "Auxillary Mining Base"; - dir = 1 - }, -/obj/structure/mining_shuttle_beacon, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "aHc" = ( /obj/effect/spawner/structure/window, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -16620,12 +15903,6 @@ dir = 2 }, /area/crew_quarters/dorms) -"aHP" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 - }, -/area/engine/engineering) "aHQ" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -16695,60 +15972,24 @@ }, /area/maintenance/starboard/fore) "aHX" = ( -/obj/structure/closet/secure_closet/engineering_electrical, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, /turf/open/floor/plasteel/yellow/side{ - dir = 1 + dir = 8 }, /area/engine/engineering) "aHY" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/engine/engineering) -"aHZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, +"aIe" = ( +/obj/structure/lattice/catwalk, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aIa" = ( -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aIb" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Aft Port"; - dir = 4; - network = list("singularity") - }, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aIc" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/space) -"aId" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/space) -"aIe" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/power/tesla_coil, -/turf/open/floor/plating/airless, +/turf/open/space, /area/space) "aIf" = ( /obj/machinery/camera{ @@ -16779,9 +16020,8 @@ supply_display = 1 }, /obj/machinery/conveyor{ - dir = 1; - id = "QMLoad2"; - movedir = 2 + dir = 5; + id = "QMLoad2" }, /turf/open/floor/plating, /area/quartermaster/storage) @@ -17418,138 +16658,14 @@ /turf/open/floor/plating, /area/engine/engineering) "aJn" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Aft Starboard"; - dir = 8; - network = list("singularity") - }, -/turf/open/floor/plating/airless, -/area/space) -"aJo" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/obj/structure/table, +/obj/item/airlock_painter, +/obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/engineering) -"aJp" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aJq" = ( -/obj/item/pen, -/obj/item/storage/belt/utility, -/obj/item/clothing/glasses/meson, -/obj/item/paper_bin{ - layer = 2.9 - }, -/obj/structure/table/glass, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aJr" = ( -/obj/item/book/manual/wiki/engineering_hacking{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/book/manual/wiki/engineering_construction, -/obj/item/clothing/gloves/color/yellow, -/obj/structure/table/glass, -/obj/item/device/flashlight, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aJs" = ( -/obj/item/book/manual/engineering_singularity_safety{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/book/manual/wiki/engineering_guide, -/obj/item/book/manual/engineering_particle_accelerator{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/clothing/gloves/color/yellow, -/obj/structure/table/glass, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aJt" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, -/area/space) "aJu" = ( /turf/open/floor/plating, /area/engine/engineering) -"aJv" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/space, -/area/space) -"aJw" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/space, -/area/space) -"aJx" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aJy" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/light, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"aJz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aJA" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/structure/cable/white{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "aJB" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/warning/vacuum/external, @@ -17561,14 +16677,12 @@ }, /obj/machinery/conveyor{ dir = 1; - id = "QMLoad2"; - movedir = 2 + id = "QMLoad2" }, /turf/open/floor/plating, /area/quartermaster/storage) "aJD" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = 1; id = "QMLoad2"; pixel_x = 6 }, @@ -17982,12 +17096,6 @@ /obj/machinery/portable_atmospherics/canister/toxins, /turf/open/floor/plating, /area/engine/engineering) -"aKy" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "aKz" = ( /obj/machinery/door/poddoor{ id = "Secure Storage"; @@ -17995,13 +17103,6 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"aKA" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/light, -/turf/open/floor/plasteel, -/area/engine/engineering) "aKB" = ( /obj/machinery/holopad, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -18015,75 +17116,35 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/engine/engineering) -"aKD" = ( -/obj/structure/cable/white{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aKE" = ( -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (EAST)"; - icon_state = "cryopod-open"; - dir = 4 - }, -/turf/open/floor/plasteel/vault, -/area/crew_quarters/locker) "aKF" = ( -/obj/machinery/computer/cryopod{ - pixel_y = -24 - }, -/turf/open/floor/plasteel/vault, -/area/crew_quarters/locker) -"aKG" = ( -/obj/machinery/cryopod, -/turf/open/floor/plasteel/vault, -/area/crew_quarters/locker) -"aKH" = ( -/obj/machinery/light, -/obj/machinery/vending/kink, -/turf/open/floor/plasteel/neutral/corner{ - dir = 2 - }, -/area/crew_quarters/locker) -"aKI" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 6 - }, -/area/engine/engineering) -"aKJ" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/closet/secure_closet/engineering_electrical, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"aKK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/engine/engineering) -"aKL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"aKM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plasteel/yellow/side, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"aKG" = ( +/obj/structure/particle_accelerator/end_cap{ + icon_state = "end_cap"; + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"aKH" = ( +/obj/structure/particle_accelerator/fuel_chamber{ + icon_state = "fuel_chamber"; + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"aKI" = ( +/obj/structure/particle_accelerator/power_box{ + icon_state = "power_box"; + dir = 4 + }, +/turf/open/floor/plating, /area/engine/engineering) "aKN" = ( /obj/machinery/door/poddoor{ @@ -18093,8 +17154,7 @@ }, /obj/machinery/conveyor{ dir = 4; - id = "QMLoad2"; - movedir = 8 + id = "QMLoad2" }, /turf/open/floor/plating, /area/quartermaster/storage) @@ -18102,16 +17162,14 @@ /obj/structure/plasticflaps, /obj/machinery/conveyor{ dir = 4; - id = "QMLoad2"; - movedir = 8 + id = "QMLoad2" }, /turf/open/floor/plating, /area/quartermaster/storage) "aKP" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "QMLoad2"; - movedir = 2 +/obj/machinery/conveyor/inverted{ + dir = 10; + id = "QMLoad2" }, /turf/open/floor/plating, /area/quartermaster/storage) @@ -18487,16 +17545,6 @@ }, /turf/open/floor/plasteel/vault, /area/crew_quarters/locker) -"aLI" = ( -/obj/structure/cable/white{ - icon_state = "1-4" - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) "aLJ" = ( /obj/structure/rack, /obj/item/stock_parts/matter_bin, @@ -18514,26 +17562,6 @@ dir = 4 }, /area/crew_quarters/locker) -"aLM" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/external{ - name = "External Containment Access"; - req_access_txt = "10; 13" - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) "aLN" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/machinery/portable_atmospherics/pump, @@ -18662,12 +17690,6 @@ /obj/effect/landmark/blobstart, /turf/open/floor/plating, /area/engine/engineering) -"aMc" = ( -/obj/structure/cable/white{ - icon_state = "2-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "aMd" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ @@ -18687,93 +17709,53 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/engine/engineering) -"aMf" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "aMg" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 4 }, -/turf/open/floor/plating/airless, /area/engine/engineering) "aMh" = ( -/obj/machinery/light/small, -/turf/open/floor/plating, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engpa"; + name = "Engineering Chamber Shutters" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, /area/engine/engineering) "aMi" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aMj" = ( -/obj/structure/cable/white{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/power/emitter{ - anchored = 1; - dir = 1; - icon_state = "emitter"; - state = 2 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aMk" = ( -/obj/structure/cable/white{ - icon_state = "2-4" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aMl" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aMm" = ( -/obj/structure/cable/white{ +/obj/structure/cable{ icon_state = "2-8" }, -/obj/structure/grille, /obj/effect/turf_decal/stripes/line{ - dir = 5 + dir = 8 }, -/turf/open/floor/plating/airless, +/turf/open/floor/plating, /area/engine/engineering) -"aMn" = ( -/obj/structure/lattice, -/turf/open/space, +"aMk" = ( +/obj/machinery/particle_accelerator/control_box, +/obj/structure/cable{ + icon_state = "0-2"; + pixel_y = 1 + }, +/turf/open/floor/plating, /area/engine/engineering) "aMo" = ( -/obj/structure/grille, -/obj/structure/cable/white{ - icon_state = "1-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aMp" = ( -/obj/structure/grille, /obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable/white{ - icon_state = "4-8" + dir = 2 }, /turf/open/floor/plating/airless, -/area/engine/engineering) +/area/space) "aMq" = ( /obj/structure/window/reinforced, /turf/open/space, @@ -19212,28 +18194,15 @@ /obj/item/device/gps, /turf/open/floor/plating, /area/engine/engineering) -"aNp" = ( -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable/white{ - icon_state = "1-8" - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "aNq" = ( -/obj/structure/cable/white{ - icon_state = "1-8" +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/plating/airless, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, /area/engine/engineering) "aNr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -19242,37 +18211,28 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"aNs" = ( -/obj/structure/cable/white{ - icon_state = "1-4" +"aNu" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 +/obj/machinery/camera/emp_proof{ + c_tag = "Containment - Particle Accelerator"; + dir = 1; + network = list("singularity") }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aNt" = ( -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable/white{ +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable{ icon_state = "1-8" }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aNu" = ( -/turf/closed/wall/r_wall, -/area/space) -"aNv" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/spawner/lootdrop/maintenance, -/obj/structure/window/reinforced{ - dir = 4 - }, /turf/open/floor/plating, -/area/maintenance/starboard) +/area/engine/engineering) +"aNv" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/engine/engineering) "aNw" = ( /obj/structure/window/reinforced{ dir = 4 @@ -19330,10 +18290,6 @@ /obj/structure/lattice, /turf/open/space, /area/space/nearstation) -"aND" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_1) "aNE" = ( /obj/machinery/button/door{ id = "QMLoaddoor"; @@ -19926,8 +18882,19 @@ }, /area/hydroponics/garden) "aOO" = ( -/turf/open/space, -/area/space/nearstation) +/obj/machinery/power/apc/highcap/ten_k{ + dir = 8; + name = "Engine Room APC"; + areastring = "/area/engine/engineering"; + pixel_x = -26 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 8 + }, +/area/engine/engineering) "aOP" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ @@ -19949,13 +18916,12 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"aOR" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/purple/visible{ +"aOS" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/space, -/area/space/nearstation) +/turf/open/floor/plating/airless, +/area/space) "aOT" = ( /obj/structure/window/reinforced{ dir = 4 @@ -20003,31 +18969,6 @@ }, /turf/open/space, /area/space/nearstation) -"aOZ" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_1) -"aPa" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/item/device/radio/intercom{ - pixel_x = 25 - }, -/obj/item/storage/pod{ - pixel_x = -26 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_2) -"aPb" = ( -/obj/structure/closet/secure_closet/miner/unlocked, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "aPd" = ( /obj/machinery/light/small{ dir = 1 @@ -20501,20 +19442,27 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/engineering) -"aQf" = ( -/obj/structure/chair{ - dir = 4 +"aPZ" = ( +/obj/machinery/vending/tool, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aQd" = ( +/obj/structure/rack, +/obj/machinery/button/door{ + id = "engpa"; + name = "Engineering Chamber Shutters Control"; + pixel_y = 26; + req_access_txt = "11" }, -/obj/machinery/status_display{ - pixel_y = 32 +/obj/item/storage/belt/utility, +/obj/item/weldingtool, +/obj/item/clothing/head/welding, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 }, -/obj/machinery/computer/shuttle/pod{ - pixel_y = -32; - possible_destinations = "pod_lavaland3"; - shuttleId = "pod3" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_3) +/area/engine/engineering) "aQg" = ( /obj/machinery/door/poddoor{ density = 1; @@ -20536,8 +19484,8 @@ /turf/open/floor/plating, /area/quartermaster/storage) "aQi" = ( -/obj/machinery/conveyor{ - dir = 8; +/obj/machinery/conveyor/inverted{ + dir = 6; id = "QMLoad" }, /turf/open/floor/plating, @@ -21106,6 +20054,27 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"aRo" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aRp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "aRq" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -21140,21 +20109,6 @@ "aRA" = ( /turf/closed/wall, /area/hallway/secondary/entry) -"aRB" = ( -/obj/structure/shuttle/engine/propulsion/burst, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_1) -"aRC" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ - id = "pod1"; - name = "escape pod 1"; - port_direction = 2 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) "aRD" = ( /obj/machinery/light{ dir = 8 @@ -21188,8 +20142,7 @@ "aRH" = ( /obj/machinery/conveyor{ dir = 1; - id = "QMLoad"; - movedir = 2 + id = "QMLoad" }, /turf/open/floor/plating, /area/quartermaster/storage) @@ -21572,6 +20525,56 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"aSw" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aSx" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aSz" = ( +/obj/item/pen, +/obj/item/storage/belt/utility, +/obj/item/clothing/glasses/meson, +/obj/item/paper_bin{ + layer = 2.9 + }, +/obj/structure/table/glass, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aSA" = ( +/obj/item/book/manual/wiki/engineering_hacking{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/book/manual/wiki/engineering_construction, +/obj/item/clothing/gloves/color/yellow, +/obj/structure/table/glass, +/obj/item/device/flashlight, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aSB" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "aSD" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -21670,7 +20673,7 @@ /area/maintenance/port/fore) "aSQ" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = 1; + dir = 8; id = "QMLoad"; pixel_x = 6 }, @@ -22057,6 +21060,55 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"aTG" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aTH" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/light, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"aTI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aTJ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aTK" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "aTQ" = ( /obj/structure/window/reinforced{ dir = 4 @@ -22194,8 +21246,7 @@ }, /obj/machinery/conveyor{ dir = 1; - id = "QMLoad"; - movedir = 2 + id = "QMLoad" }, /turf/open/floor/plating, /area/quartermaster/storage) @@ -22576,6 +21627,28 @@ "aUM" = ( /turf/closed/wall, /area/crew_quarters/locker) +"aUN" = ( +/obj/machinery/cryopod{ + tag = "icon-cryopod-open (EAST)"; + icon_state = "cryopod-open"; + dir = 4 + }, +/turf/open/floor/plasteel/vault, +/area/crew_quarters/locker) +"aUO" = ( +/obj/machinery/computer/cryopod{ + pixel_y = -26 + }, +/turf/open/floor/plasteel/vault, +/area/crew_quarters/locker) +"aUP" = ( +/obj/machinery/cryopod{ + tag = "icon-cryopod-open (WEST)"; + icon_state = "cryopod-open"; + dir = 8 + }, +/turf/open/floor/plasteel/vault, +/area/crew_quarters/locker) "aUQ" = ( /turf/open/floor/plasteel/vault, /area/crew_quarters/locker) @@ -22641,6 +21714,19 @@ /obj/structure/closet/wardrobe/engineering_yellow, /turf/open/floor/plasteel, /area/engine/engineering) +"aUZ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/engine/engineering) "aVa" = ( /obj/machinery/requests_console{ announcementConsole = 0; @@ -22669,6 +21755,26 @@ dir = 1 }, /area/engine/engineering) +"aVd" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/closet/secure_closet/engineering_electrical, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"aVe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/engine/engineering) +"aVh" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "aVk" = ( /obj/structure/window/reinforced{ dir = 1; @@ -23295,6 +22401,16 @@ dir = 1 }, /area/engine/engineering) +"aWK" = ( +/obj/structure/cable/white{ + icon_state = "2-4" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "aWL" = ( /obj/machinery/ai_status_display{ pixel_x = -32 @@ -24189,6 +23305,16 @@ "aYu" = ( /turf/closed/wall, /area/security/checkpoint/engineering) +"aYx" = ( +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "aYy" = ( /obj/machinery/camera{ c_tag = "AI Chamber - Port"; @@ -27835,15 +26961,6 @@ }, /turf/open/floor/plating, /area/engine/break_room) -"bga" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_4) -"bgb" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_4) "bgc" = ( /obj/machinery/door/airlock/hatch{ name = "MiniSat Space Access Airlock"; @@ -28898,33 +28015,6 @@ "bif" = ( /turf/open/floor/plating, /area/engine/break_room) -"big" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ - dir = 4; - id = "pod4"; - name = "escape pod 4"; - port_direction = 2; - preferred_direction = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_4) -"bih" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - pixel_y = 25 - }, -/obj/item/storage/pod{ - pixel_x = 6; - pixel_y = -32 - }, -/obj/machinery/light/small, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_3) "bii" = ( /obj/docking_port/stationary/random{ dir = 4; @@ -28933,10 +28023,6 @@ }, /turf/open/space, /area/space/nearstation) -"bij" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_4) "bik" = ( /obj/machinery/light/small, /obj/machinery/camera{ @@ -29107,7 +28193,7 @@ /area/quartermaster/sorting) "biE" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = -1; + dir = 8; id = "packageExternal"; pixel_y = 18 }, @@ -37255,8 +36341,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Distro to Waste"; - on = 0 + name = "Distro to Waste" }, /turf/open/floor/plasteel/caution{ dir = 1 @@ -38748,10 +37833,9 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bCr" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 0; - name = "Waste to Filter"; - on = 1 + name = "Waste to Filter" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -38799,6 +37883,13 @@ }, /turf/open/floor/plating, /area/engine/atmos) +"bCz" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) "bCA" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/simple/yellow/visible{ @@ -39407,10 +38498,9 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bDX" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Mix to Filter"; - on = 1 + name = "Mix to Filter" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -41696,10 +40786,9 @@ }, /area/engine/atmos) "bIO" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Air to External Air Ports"; - on = 1 + name = "Air to External Air Ports" }, /turf/open/floor/plasteel/caution{ dir = 8 @@ -42430,10 +41519,9 @@ /turf/closed/wall/r_wall, /area/engine/atmos) "bKv" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "External Waste Ports to Filter"; - on = 1 + name = "External Waste Ports to Filter" }, /obj/machinery/airalarm{ dir = 4; @@ -42474,16 +41562,14 @@ "bKA" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 0; - name = "Air to Ports"; - on = 0 + name = "Air to Ports" }, /turf/open/floor/plasteel, /area/engine/atmos) "bKB" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 0; - name = "Mix to Ports"; - on = 0 + name = "Mix to Ports" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -44050,8 +43136,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 0; - name = "Port Mix to West Ports"; - on = 0 + name = "Port Mix to West Ports" }, /obj/machinery/light/small{ dir = 8 @@ -45343,10 +44428,7 @@ /turf/closed/wall, /area/engine/atmos) "bQU" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - filter_type = -1; - on = 1 - }, +/obj/machinery/atmospherics/components/trinary/filter/atmos, /turf/open/floor/plasteel, /area/engine/atmos) "bQV" = ( @@ -46500,8 +45582,7 @@ "bTk" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 0; - name = "Port to Filter"; - on = 0 + name = "Port to Filter" }, /obj/machinery/light/small{ dir = 8 @@ -46542,6 +45623,9 @@ /obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/maintenance/solars/port/aft) +"bTq" = ( +/turf/open/floor/plating/airless, +/area/engine/engineering) "bTr" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/airlock/maintenance/abandoned{ @@ -47114,6 +46198,14 @@ icon_state = "panelscorched" }, /area/maintenance/starboard) +"bUw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plating, +/area/engine/engineering) "bUx" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 @@ -47168,8 +46260,7 @@ "bUD" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Port to Filter"; - on = 0 + name = "Port to Filter" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -48426,8 +47517,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Fuel Pipe to Filter"; - on = 0 + name = "Fuel Pipe to Filter" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -48962,20 +48052,15 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bYy" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "N2 to Airmix"; - on = 1 + name = "N2 to Airmix" }, /turf/open/floor/plasteel, /area/engine/atmos) "bYz" = ( -/obj/machinery/atmospherics/components/trinary/mixer{ - dir = 4; - node1_concentration = 0.8; - node2_concentration = 0.2; - on = 1; - target_pressure = 4500 +/obj/machinery/atmospherics/components/trinary/mixer/airmix{ + dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -50255,10 +49340,8 @@ /turf/open/floor/plasteel/dark, /area/engine/atmos) "cbd" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 4; - filter_type = "n2"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2{ + dir = 4 }, /obj/structure/window/reinforced, /turf/open/floor/plasteel/red, @@ -50276,10 +49359,9 @@ /area/engine/atmos) "cbf" = ( /obj/structure/window/reinforced, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Nitrogen Outlet"; - on = 1 + name = "Nitrogen Outlet" }, /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 @@ -50306,10 +49388,8 @@ /area/engine/atmos) "cbh" = ( /obj/structure/window/reinforced, -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 4; - filter_type = "o2"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/o2{ + dir = 4 }, /turf/open/floor/plasteel/blue, /area/engine/atmos) @@ -50325,10 +49405,9 @@ /area/engine/atmos) "cbj" = ( /obj/structure/window/reinforced, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "O2 to Airmix"; - on = 1 + name = "O2 to Airmix" }, /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 @@ -50964,13 +50043,10 @@ /turf/open/floor/plasteel, /area/hydroponics) "ccz" = ( -/obj/item/wrench, -/obj/item/clothing/suit/apron, -/obj/item/clothing/accessory/armband/hydro, -/obj/structure/table/glass, /obj/effect/turf_decal/stripes/line{ - dir = 9 + dir = 1 }, +/obj/machinery/smartfridge/disks, /turf/open/floor/plasteel, /area/hydroponics) "ccA" = ( @@ -51731,8 +50807,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 2; - name = "Fuel Pipe to Incinerator"; - on = 0 + name = "Fuel Pipe to Incinerator" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -54079,6 +53154,18 @@ icon_state = "1-2" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/embedded_controller/radio/airlock_controller{ + airpump_tag = "incinerator_airlock_pump"; + exterior_door_tag = "incinerator_airlock_exterior"; + id_tag = "incinerator_airlock_control"; + interior_door_tag = "incinerator_airlock_interior"; + name = "Incinerator Access Console"; + pixel_x = 40; + pixel_y = 8; + req_access_txt = "12"; + sanitize_external = 1; + sensor_tag = "incinerator_airlock_sensor" + }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "cjb" = ( @@ -54782,9 +53869,8 @@ /obj/structure/sign/warning/fire{ pixel_x = -32 }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1 }, /obj/machinery/airlock_sensor{ id_tag = "incinerator_airlock_sensor"; @@ -54815,9 +53901,8 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 2; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 2 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -55920,10 +55005,7 @@ /area/maintenance/disposal/incinerator) "cne" = ( /obj/machinery/igniter{ - icon_state = "igniter0"; - id = "Incinerator"; - luminosity = 2; - on = 0 + id = "Incinerator" }, /obj/structure/cable{ icon_state = "1-2" @@ -57346,6 +56428,24 @@ icon_state = "wood-broken7" }, /area/maintenance/port/aft) +"cpR" = ( +/obj/machinery/button/door{ + id = "engpa"; + name = "Engineering Chamber Shutters Control"; + pixel_y = -26; + req_access_txt = "11" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) "cpS" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -64592,9 +63692,8 @@ pixel_y = 24 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4 }, /turf/open/floor/engine, /area/science/mixing) @@ -65469,9 +64568,8 @@ /obj/structure/sign/warning/fire{ pixel_y = -32 }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8 }, /turf/open/floor/engine, /area/science/mixing) @@ -66541,11 +65639,7 @@ /turf/open/floor/plasteel/dark, /area/science/server) "cIc" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - target_temperature = 80; - dir = 2; - on = 1 - }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plasteel/dark, /area/science/server) @@ -68245,18 +67339,6 @@ /turf/open/floor/plating, /area/maintenance/aft) "cLC" = ( -/obj/machinery/embedded_controller/radio/airlock_controller{ - name = "Incinerator Access Console"; - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_access_control"; - interior_door_tag = "incinerator_airlock_interior"; - pixel_x = 8; - pixel_y = -24; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor"; - req_access_txt = "12" - }, /obj/machinery/button/ignition{ id = "Incinerator"; pixel_x = 8; @@ -68297,11 +67379,9 @@ /turf/open/floor/plating, /area/maintenance/aft) "cLE" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ dir = 1; - name = "euthanization chamber freezer"; - on = 1; - target_temperature = 80 + name = "euthanization chamber freezer" }, /turf/open/floor/plating, /area/science/xenobiology) @@ -71619,20 +70699,6 @@ }, /turf/open/floor/plasteel, /area/science/xenobiology) -"cSU" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/status_display{ - pixel_x = 32 - }, -/obj/machinery/computer/shuttle/pod{ - pixel_x = -32; - possible_destinations = "pod_lavaland1"; - shuttleId = "pod1" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) "cSV" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable/yellow{ @@ -71726,21 +70792,6 @@ }, /turf/open/floor/engine, /area/science/xenobiology) -"cTd" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/item/device/radio/intercom{ - pixel_x = 25 - }, -/obj/item/storage/pod{ - pixel_x = -26 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) "cTe" = ( /obj/machinery/door/window/northleft{ base_state = "right"; @@ -71779,20 +70830,6 @@ }, /turf/open/floor/engine, /area/science/xenobiology) -"cTi" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/obj/machinery/computer/shuttle/pod{ - pixel_y = -32; - possible_destinations = "pod_lavaland4"; - shuttleId = "pod4" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_4) "cTj" = ( /obj/item/crowbar/red, /obj/item/wrench, @@ -71909,20 +70946,6 @@ }, /turf/open/floor/plasteel, /area/science/xenobiology) -"cTu" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - pixel_y = 25 - }, -/obj/item/storage/pod{ - pixel_x = 6; - pixel_y = -32 - }, -/obj/machinery/light/small, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_4) "cTw" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/item/storage/box/lights/mixed, @@ -72122,7 +71145,6 @@ height = 13; id = "ferry_home"; name = "port bay 2"; - turf_type = /turf/open/space; width = 5 }, /turf/open/space/basic, @@ -72148,18 +71170,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engine/atmos) -"cVE" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cVH" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "cVJ" = ( /obj/structure/window/reinforced, /obj/machinery/computer/atmos_control/tank/air_tank{ @@ -72172,60 +71182,10 @@ dir = 8 }, /area/engine/atmos) -"cVK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cVL" = ( -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cVM" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cVQ" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cWg" = ( -/obj/docking_port/mobile/auxillary_base{ - dheight = 4; - dir = 2; - dwidth = 4; - height = 9; - width = 9 - }, -/obj/machinery/bluespace_beacon, -/obj/machinery/computer/auxillary_base, -/turf/closed/wall, -/area/shuttle/auxillary_base) -"cWh" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "cWA" = ( /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/fore) -"cWF" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cWJ" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "cWK" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -72263,6 +71223,14 @@ dir = 1 }, /area/construction/mining/aux_base) +"cXZ" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "cYc" = ( /obj/structure/table/optable{ name = "Robotics Operating Table" @@ -72355,6 +71323,16 @@ }, /turf/open/floor/plasteel/white, /area/science/xenobiology) +"cYV" = ( +/obj/structure/cable/white{ + icon_state = "1-8" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "cZa" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -72586,6 +71564,21 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/circuit/killroom, /area/science/xenobiology) +"daW" = ( +/obj/machinery/button/door{ + id = "engpa"; + name = "Engineering Chamber Shutters Control"; + pixel_y = 26; + req_access_txt = "11" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) "daX" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -72594,6 +71587,20 @@ icon_state = "platingdmg2" }, /area/maintenance/port/fore) +"daZ" = ( +/obj/structure/particle_accelerator/particle_emitter/right{ + icon_state = "emitter_right"; + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"dbb" = ( +/obj/structure/particle_accelerator/particle_emitter/center{ + icon_state = "emitter_center"; + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) "dbd" = ( /obj/structure/sink/kitchen{ pixel_y = 28 @@ -72705,7 +71712,7 @@ "dbE" = ( /obj/machinery/plantgenes, /obj/effect/turf_decal/stripes/line{ - dir = 9 + dir = 1 }, /turf/open/floor/plasteel, /area/hydroponics) @@ -73791,11 +72798,19 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) -"ddG" = ( -/obj/effect/turf_decal/stripes/line, -/obj/docking_port/stationary/public_mining_dock, +"ddO" = ( +/obj/machinery/light/small{ + dir = 1 + }, /turf/open/floor/plating, -/area/shuttle/auxillary_base) +/area/engine/engineering) +"ddP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) "ddQ" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -73806,6 +72821,205 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"ddW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ddX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ddZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating/airless, +/area/space) +"deb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"def" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/space, +/area/space) +"deh" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/engine/engineering) +"dem" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/space, +/area/space) +"den" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/space) +"der" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"deu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/space) +"dev" = ( +/obj/machinery/field/generator{ + anchored = 1; + state = 2 + }, +/turf/open/floor/plating/airless, +/area/space) +"dew" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/space, +/area/space) +"deB" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engpa"; + name = "Engineering Chamber Shutters" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"deD" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating/airless, +/area/space) +"deM" = ( +/obj/structure/table, +/obj/effect/turf_decal/delivery, +/obj/item/clothing/glasses/meson/engine, +/obj/item/clothing/glasses/meson/engine, +/obj/item/clothing/glasses/meson/engine, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/pipe_dispenser, +/obj/item/pipe_dispenser, +/obj/item/pipe_dispenser, +/turf/open/floor/plasteel/yellow/side{ + dir = 4 + }, +/area/engine/engineering) +"deV" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating/airless, +/area/space) +"deY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space) +"dfa" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"dfh" = ( +/obj/structure/table, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson, +/obj/item/storage/belt/utility, +/obj/item/storage/belt/utility, +/obj/item/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = 10 + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 4 + }, +/area/engine/engineering) +"dfp" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/engine/engineering) +"dfz" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/space) +"dfD" = ( +/obj/item/book/manual/engineering_singularity_safety{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/book/manual/wiki/engineering_guide, +/obj/item/book/manual/engineering_particle_accelerator{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/gloves/color/yellow, +/obj/structure/table/glass, +/turf/open/floor/plasteel, +/area/engine/engineering) +"dfI" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless, +/area/space) +"dfP" = ( +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "dfX" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable/yellow{ @@ -73821,12 +73035,96 @@ dir = 1 }, /area/engine/engineering) +"dfY" = ( +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"dga" = ( +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"dgd" = ( +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"dge" = ( +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/power/emitter{ + anchored = 1; + dir = 1; + icon_state = "emitter"; + state = 2 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"dgg" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"dgj" = ( +/obj/structure/grille, +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"dgk" = ( +/obj/structure/cable/white{ + icon_state = "1-8" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"dgm" = ( +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"dgr" = ( +/turf/closed/wall/r_wall, +/area/space) "dgz" = ( /obj/structure/closet/toolcloset, /obj/effect/turf_decal/delivery, /obj/item/clothing/glasses/meson/engine, /turf/open/floor/plasteel, /area/engine/engineering) +"dgN" = ( +/obj/structure/lattice, +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/space, +/area/space/nearstation) +"dgO" = ( +/turf/open/space, +/area/space/nearstation) "dhn" = ( /obj/structure/table, /obj/item/poster/random_contraband, @@ -74841,6 +74139,19 @@ /obj/structure/lattice/catwalk, /turf/open/space, /area/science/xenobiology) +"djt" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"djx" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Containment - Aft Port"; + dir = 4; + network = list("singularity") + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless, +/area/engine/engineering) "djz" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/external{ @@ -74899,6 +74210,12 @@ }, /turf/open/floor/plating, /area/chapel/main) +"dlI" = ( +/obj/structure/closet/secure_closet/engineering_electrical, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/engine/engineering) "dlV" = ( /turf/closed/wall/r_wall, /area/maintenance/department/science/xenobiology) @@ -75480,6 +74797,25 @@ "dBu" = ( /turf/closed/wall, /area/engine/gravity_generator) +"dBw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"dBy" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/engine/engineering) +"dBB" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/space) "dBC" = ( /obj/machinery/meter, /obj/structure/grille, @@ -76204,6 +75540,13 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/space) +"eCm" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/space, +/area/space) "eEe" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 @@ -76217,6 +75560,21 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/office) +"eMP" = ( +/turf/open/floor/plasteel/yellow/side{ + dir = 4 + }, +/area/engine/engineering) +"eTm" = ( +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/white{ + icon_state = "1-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "eXy" = ( /obj/machinery/airalarm{ pixel_y = 32 @@ -76236,6 +75594,17 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"fca" = ( +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "fdr" = ( /obj/structure/closet/firecloset, /turf/open/floor/plating, @@ -76262,12 +75631,33 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"giG" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Containment - Aft Starboard"; + dir = 8; + network = list("singularity") + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"glg" = ( +/obj/effect/decal/cleanable/oil, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "gnZ" = ( /obj/item/device/radio/intercom{ pixel_y = -30 }, /turf/open/floor/plasteel/white, /area/science/circuit) +"gBt" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating/airless, +/area/space) "gEk" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -76322,6 +75712,10 @@ /obj/machinery/autolathe, /turf/open/floor/plasteel/white, /area/science/circuit) +"hiq" = ( +/obj/machinery/the_singularitygen/tesla, +/turf/open/floor/plating/airless, +/area/space) "hyP" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod Two" @@ -76331,6 +75725,41 @@ }, /turf/open/floor/plating, /area/security/prison) +"hKs" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the Engine."; + dir = 8; + layer = 4; + name = "Engine Monitor"; + network = list("singularity"); + pixel_x = 30 + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 4 + }, +/area/engine/engineering) +"hTv" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"hYG" = ( +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"ili" = ( +/turf/open/floor/plating/airless, +/area/space) "ioI" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -76342,6 +75771,13 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel, /area/science/circuit) +"ixJ" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/space, +/area/space) "izu" = ( /obj/machinery/autolathe{ name = "public autolathe" @@ -76358,6 +75794,39 @@ }, /turf/open/floor/plasteel/whitepurple, /area/science/lab) +"iKX" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"iNQ" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"iQV" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"jeV" = ( +/obj/machinery/conveyor/inverted{ + dir = 10; + id = "QMLoad" + }, +/turf/open/floor/plating, +/area/quartermaster/storage) "jwW" = ( /turf/closed/wall/mineral/plastitanium, /area/crew_quarters/fitness/recreation) @@ -76387,6 +75856,30 @@ }, /turf/open/floor/plating, /area/maintenance/solars/port/aft) +"jzM" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "External Containment Access"; + req_access_txt = "10; 13" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"jGF" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/engine/engineering) "jKK" = ( /obj/machinery/door/airlock/external{ req_access_txt = "13" @@ -76403,6 +75896,14 @@ "krD" = ( /turf/closed/wall, /area/science/circuit) +"kwI" = ( +/obj/item/wrench, +/obj/item/clothing/suit/apron, +/obj/item/clothing/accessory/armband/hydro, +/obj/structure/table/glass, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/hydroponics) "kys" = ( /obj/structure/cable/yellow{ icon_state = "0-8" @@ -76461,12 +75962,42 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"kXU" = ( +/obj/structure/cable/white, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/power/emitter{ + anchored = 1; + state = 2 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "lal" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/plasteel, /area/science/circuit) +"lim" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "External Containment Access"; + req_access_txt = "10; 13" + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) "llb" = ( /obj/structure/table/reinforced, /obj/item/device/integrated_circuit_printer, @@ -76486,6 +76017,14 @@ /obj/item/device/multitool, /turf/open/floor/plasteel/white, /area/science/circuit) +"lwo" = ( +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "lzk" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -76558,6 +76097,19 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"mGY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating/airless, +/area/space) +"mJy" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless, +/area/space) "ngl" = ( /obj/machinery/bookbinder, /turf/open/floor/plasteel/white, @@ -76600,6 +76152,12 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) +"nDB" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/engine/engineering) "nIb" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/mining{ @@ -76616,6 +76174,20 @@ /obj/structure/target_stake, /turf/open/floor/plasteel/white, /area/science/circuit) +"obX" = ( +/obj/docking_port/stationary{ + area_type = /area/construction/mining/aux_base; + dheight = 4; + dir = 1; + dwidth = 4; + height = 9; + id = "aux_base_zone"; + name = "aux base zone"; + roundstart_template = /datum/map_template/shuttle/aux_base/default; + width = 9 + }, +/turf/open/floor/plating, +/area/construction/mining/aux_base) "ocT" = ( /obj/machinery/light{ dir = 1 @@ -76642,10 +76214,25 @@ /obj/structure/table/reinforced, /turf/open/floor/plasteel/white, /area/science/circuit) +"oru" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "oub" = ( /obj/structure/sign/poster/official/random, /turf/closed/wall, /area/hydroponics) +"ovJ" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/engine/engineering) "oLW" = ( /obj/structure/table/reinforced, /obj/structure/cable/yellow{ @@ -76682,6 +76269,19 @@ /obj/item/pen, /turf/open/floor/plasteel/white, /area/science/circuit) +"oXn" = ( +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/engine/engineering) +"pdI" = ( +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "pmc" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 @@ -76733,6 +76333,19 @@ }, /turf/open/floor/plating, /area/maintenance/aft) +"qcZ" = ( +/turf/open/space/basic, +/area/space/nearstation) +"qiO" = ( +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "qnJ" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -76753,6 +76366,24 @@ }, /turf/open/floor/plasteel, /area/science/misc_lab) +"qxk" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space) +"qyp" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless, +/area/space) +"qzA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/engine/engineering) "qBh" = ( /obj/structure/table, /obj/item/device/paicard, @@ -76769,6 +76400,20 @@ }, /turf/open/floor/plasteel, /area/science/circuit) +"qMg" = ( +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/effect/turf_decal/delivery, +/obj/structure/table, +/turf/open/floor/plasteel/yellow/side{ + dir = 4 + }, +/area/engine/engineering) "qRM" = ( /obj/machinery/camera{ c_tag = "Research Division Circuitry Lab"; @@ -76811,6 +76456,14 @@ }, /turf/open/floor/plasteel, /area/science/circuit) +"sef" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Containment - Fore Starboard"; + dir = 8; + network = list("singularity") + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "siF" = ( /obj/structure/grille, /turf/open/floor/plating/airless, @@ -76840,6 +76493,14 @@ "sJW" = ( /turf/closed/wall/mineral/plastitanium, /area/engine/break_room) +"sZD" = ( +/obj/machinery/newscaster{ + pixel_y = -32 + }, +/obj/machinery/light, +/obj/machinery/vending/kink, +/turf/open/floor/plasteel/vault, +/area/crew_quarters/locker) "tjH" = ( /obj/structure/table/reinforced, /obj/machinery/computer/libraryconsole/bookmanagement, @@ -76860,12 +76521,26 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"tDM" = ( +/obj/item/wrench, +/turf/open/floor/plating, +/area/engine/engineering) "tFJ" = ( /obj/structure/bodycontainer/morgue{ dir = 8 }, /turf/open/floor/plasteel/dark, /area/medical/morgue) +"tUB" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "tVY" = ( /obj/structure/closet/crate, /obj/item/target/alien, @@ -76882,6 +76557,12 @@ /obj/machinery/air_sensor/atmos/toxins_mixing_tank, /turf/open/floor/engine/vacuum, /area/science/mixing) +"tYJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating/airless, +/area/space) "upN" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -76948,6 +76629,25 @@ }, /turf/open/floor/plasteel, /area/science/misc_lab) +"vrp" = ( +/obj/structure/closet/firecloset, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 4 + }, +/area/engine/engineering) +"vuC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"vyf" = ( +/obj/structure/lattice, +/turf/open/space, +/area/engine/engineering) "vyx" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 @@ -76955,10 +76655,20 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) +"vJQ" = ( +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/space) "vLD" = ( /obj/structure/lattice, /turf/open/space/basic, /area/space) +"waK" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "wgw" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, @@ -76973,6 +76683,13 @@ }, /turf/open/floor/plating, /area/security/prison) +"wmn" = ( +/obj/structure/particle_accelerator/particle_emitter/left{ + icon_state = "emitter_left"; + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) "wxc" = ( /obj/machinery/door/airlock/external{ name = "Atmospherics External Airlock"; @@ -76983,6 +76700,22 @@ }, /turf/open/floor/plating, /area/engine/atmos) +"wBK" = ( +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"wEo" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "wFH" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -77013,6 +76746,12 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/science/misc_lab) +"xfJ" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/engine/engineering) "xkG" = ( /obj/item/device/integrated_electronics/wirer, /obj/structure/table/reinforced, @@ -77039,7 +76778,6 @@ height = 17; id = "syndicate_nw"; name = "northwest of station"; - turf_type = /turf/open/space; width = 23 }, /turf/open/space/basic, @@ -77067,6 +76805,14 @@ }, /turf/open/floor/plasteel, /area/science/circuit) +"yhr" = ( +/obj/structure/cable/white{ + icon_state = "2-4" + }, +/obj/structure/grille, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plating/airless, +/area/engine/engineering) "ykE" = ( /obj/machinery/light, /turf/open/floor/plasteel/white, @@ -86428,10 +86174,10 @@ aaa aaa aaa aaa -aOZ -aOZ -aOZ -aRB +aaa +aaa +aaa +aaa aSH aUb aVt @@ -86685,10 +86431,10 @@ aaa aaa aaa cSP -aND -cSU -cTd -aRC +aaa +aaa +aaa +abu bsk aUc aVu @@ -86942,10 +86688,10 @@ aaa aaa aaa aaa -aOZ -aOZ -aOZ -aRB +aaa +aaa +aaa +aaa aSI aRA aVv @@ -87964,14 +87710,14 @@ anS anS aDb aDa -cVK -cVK -cVK -cVK -cVK -cVK -cVK -cWF +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa cWK aRD aSJ @@ -88220,15 +87966,15 @@ anS aaf aai aDb -cVE -cVL -cVL -cVL -cVL -cVL -cVL -cVL -cWJ +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa cWK aRE aSK @@ -88477,15 +88223,15 @@ anS aaf aaa aDb -cVE -cVL -cVL -cVL -cVL -cVL -cVL -cVL -cWJ +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa cWK aRE aSK @@ -88734,15 +88480,15 @@ anS anS aaf aDb -cVE -cVL -cVL -cVL -cVQ -cVL -cVL -cVL -cWJ +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa cWK cXE aIf @@ -88991,15 +88737,15 @@ anS anS aaf aDb -cVE -cVL -cVL -aHb -cWg -cVL -cVL -cVL -ddG +aDa +aDa +aDa +aDa +obX +aDa +aDa +aDa +aDa cWM cXR cYG @@ -89248,15 +88994,15 @@ aaf aaf aaf aDb -cVE -cVL -cVL -cVL -cWh -cVL -cVL -cVL -cWJ +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa cWK cYE cYK @@ -89505,15 +89251,15 @@ aaa aaf aaa aDb -cVE -cVL -cVL -cVL -cVL -cVL -cVL -cVL -cWJ +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa cWK dDJ aSL @@ -89762,15 +89508,15 @@ aaf dne dne aDb -cVE -cVL -cVL -cVL -cVL -cVL -cVL -cVL -cWJ +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa cWK dDK aSM @@ -90019,15 +89765,15 @@ aip dne dnk aDb -cVH -cVM -cVM -cVM -cVM -cVM -cVM -cVM -aPb +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa cWK aRF aSN @@ -94145,7 +93891,7 @@ aRH aRH aUf aRH -aRH +jeV aYK bam dmH @@ -100011,7 +99757,7 @@ aaA aaG aaP aax -aab +abn abE abD acs @@ -101555,8 +101301,8 @@ aaa aay abs abK -aad -aae +ace +acx acM abe ady @@ -102064,10 +101810,10 @@ aaa aaa aaf aaa -aaV -aaV -aaV -abt +aaa +aaa +aaa +aaa abL acf acy @@ -102321,9 +102067,9 @@ aaa aaa aaa adG -aaM -adH -aPa +aaa +aaa +aaa abu abM acg @@ -102578,10 +102324,10 @@ aaa aaf aaf aaa -aaV -aaV -aaV -abt +aaa +aaa +aaa +aaa abN ach aax @@ -110591,7 +110337,7 @@ aPJ aQT aOu aTt -aKE +aUN aUM aYc aTC @@ -110848,7 +110594,7 @@ aOt aQU aSg aTt -aKF +aUO aUM boW aZt @@ -111105,7 +110851,7 @@ aOu aQV aOv aTt -aKG +aUP aUM dCD aZt @@ -112133,7 +111879,7 @@ aPK aQV aOv aTt -aKH +sZD aUM aYe dnh @@ -112164,7 +111910,7 @@ bOW bQH bRV bST -bUh +kwI bVx bWS bYi @@ -114665,9 +114411,9 @@ aaa aaf aaa acP -adk +aaa adF -adk +aaa acP afB agz @@ -114922,9 +114668,9 @@ aaa aaf aaa acP -adl -bih -adl +aaa +aaa +aaa aeB afC afC @@ -115179,9 +114925,9 @@ aaa aaf aaa jwW -adl -aQf -adl +aaa +aaa +aaa aeC afD afD @@ -115436,9 +115182,9 @@ aaa aai aaa aaa -adl -adI -adl +aaa +aaa +aaa aeC afD afD @@ -117264,16 +117010,16 @@ aEm aFu aBI aBI -aAU -aCi -aCi -aFy +aJn +aCO +aFq +aNq aBI -aGY -aDf +aPZ +aRo aSu -aJx -aKI +aTG +aUZ aWB aYr aZH @@ -117514,22 +117260,22 @@ dqu doh axO axY -auS -awY -ayb -ayU -azd -aAp -aAv -ayh -ayh -ayh -ayh +aAo +aBJ +ayT +aEn +aFv aGV -ayh -aHZ +aHX +aCX +aCX +aCX +aCX +aOO +aCX +aRp aSv -aJy +aTH aVa aWw aWw @@ -117771,8 +117517,8 @@ dnh dnh axO axY -auT -axH +aAp +aBK aCS aEo aFw @@ -117785,8 +117531,8 @@ aNr aOP dCw aRq -aJo -aJz +aSw +aTI aVb aWC aYs @@ -118028,10 +117774,10 @@ avt awJ axS axY -avU -axU +nDB +ddW aCT -ayV +aEp aKC aFx aKC @@ -118042,8 +117788,8 @@ aKC aOQ aKC aRr -aJp -aJA +aSx +aTJ dfX aWD aVc @@ -118285,23 +118031,23 @@ avu axY axT axY -avV -axV -ayc -ayg -ayh -aAq -ayh -ayh -ayh -aDf -ayh -ayh -ayh -aAq -axH -aKy -aKJ +aAr +ddX +aCU +aCW +aCX +aGX +aCX +aCX +aCX +aSB +aCX +aCX +aCX +aGX +aBK +aTK +aVd aBI aYt aZK @@ -118540,25 +118286,25 @@ dBu dBu avv axY -aaU -alr -avW -axV -ayd -ayh -ayh -aAr -aAw -aBJ -aCL -aDg -aFz -aGX -ayh -ayh -axH -aKA -aKK +axU +ayS +jGF +ddX +deb +aCX +aCX +qMg +deM +eMP +hKs +aMg +vrp +dfh +aCX +aCX +aBK +deh +aVe axY aYu aYu @@ -118797,25 +118543,25 @@ atf auu avw atf -aaW -amV -avX +axV +ddP +aAt aBL -ayd -ayh -azf +deb +aCX +aFA axY axY -aBK +deB axY -aDt +aMh axY axY -aGZ -ayh -aJq -aKy -aKL +oXn +aCX +aSz +aTK +vuC aJu aYu aZL @@ -119054,25 +118800,25 @@ atg auv avx awK -aaX -anz +axW +aAu ddQ aBM -aye -ayh -azh +aCV +aCX +aFB axY -aAx -aBO -aBO -aEn -aFA +daW +dBw +aKF +aMi +cpR axY -aHa -ayh -aJr -aKy -aKL +aQd +aCX +aSA +aTK +vuC aJu aYu aZM @@ -119311,25 +119057,25 @@ ajb auw avy ajb -abd -aov -awN +axX +ayV +aAv aBN -ayg -ayh -azf -aAs -aAy -aJu -aCU -aJu -aFB -aAs +aCW +aCX +aFA aGZ -ayh -aJs -aKy -aKM +qzA +aJu +aKG +aJu +dBy +aGZ +oXn +aCX +dfD +aTK +hTv aJu aYu aZN @@ -119569,24 +119315,24 @@ ajb avz axY axY -apP -awO -axW -ayh -ayh -azi -axY -aAy -aJu -aCV -aEp +ayW +tUB +aBO +aCX +aCX aFC axY -aHP -ayh -axW -aKD -aLI +qzA +aJu +aKH +aMk +aNu +axY +dfp +aCX +aBO +dfP +dfY axY aYu cXA @@ -119826,24 +119572,24 @@ ajb avA axY axY -apX +ayX axY axY -ayt -ayh -azA +aCY +aCX +der axY -aAy +qzA aJu -aCW -aEq -aFB +aKI +tDM +dBy axY -aHX -aIa +dlI +iQV axY axY -apX +ayX axY atm apc @@ -120082,30 +119828,30 @@ ati ajb avB axY -abn -aqe +ddO +bUw aJu axY axY axY axY -aAt -aAy -aBP -aCX -aEr -aFB -aAt +djt +qzA +daZ +dbb +wmn +dBy +djt axY axY axY aJu -aqe -aMh +bUw +ovJ axY atm jKK -aNv +cXZ atm bfZ bif @@ -120340,33 +120086,33 @@ ajb avC axY axY -arh +lim axY axY -atF -ayW -atF -aAt -aAy +bTq +aEr +bTq +djt +qzA aJu -aCY -aEs -aFD -aAt -atF -aIb +xfJ +dfa +aNv +djt +bTq +djx axY axY -aLM +jzM axY axY atm avG cYj atm -bga -big -bga +aaa +adF +aaa bhT bpv brL @@ -120597,33 +120343,33 @@ dpL avD axY axY -arF -atF -atF -atF -atF -atF -aAt -aAt -aAt +waK +bTq +bTq +bTq +bTq +bTq +djt +djt +djt aRm -aAt -aAt -aAt -atF -atF -atF -atF -aMc -aMi -aMo +djt +djt +djt +bTq +bTq +bTq +bTq +dga +dgd +dgj atm lNZ atm atm -bgb -cTu -bgb +aaa +aaa +aaa bhT brJ brN @@ -120853,34 +120599,34 @@ apm dnR avE axY -acd -atC -atF +ayc +aza +bTq +aaa +mJy +dem +dem +deD +deD +deD +deV +dem +dem +dem +dem +dem +dfI +aaa +bTq +bTq +aYx +dgr +qcZ +aaa aaa -ayu -ayX -ayX -aAu -aAu -aAu -aCZ -ayX -ayX -ayX -ayX -ayX -aJt aaa -atF -atF -aMp -aNu -aju aaa aaa -bgb -cTi -bgb sJW aNC brM @@ -121110,34 +120856,34 @@ apm dnS avB axY -ace -atF -awX -axX -ayv -ayY -azB -azB -azB -azB -azB -azB -azB -azB -azB -aIc -ayv -axX -aMf -atF -aMp -aNu -aju +lwo +bTq +aAx +qxk +aIe +aOS +deu +deu +deu +deu +deu +deu +deu +deu +deu +dBB +aIe +qxk +aVh +bTq +aYx +dgr +qcZ +aaa +aaa +aaa aaa aaa -bgb -bij -bgb aaa aaf bpw @@ -121367,29 +121113,29 @@ atk aux avF dqT -acx -atJ -awX +fca +kXU +aAx aaa -ayv -ayZ -aAo +aIe +den +dev aav aav -aAo -lMJ +dev +vLD aaa aav aav -aAo -aId -ayv +dev +dfz +aIe aaa -aMf -aMj -aNp -aNu -aju +aVh +dge +azd +dgr +qcZ aaa aaa aaa @@ -121624,29 +121370,29 @@ atl auy dnS dqT -aeD -atF -awX -axX -ayS -aza +iNQ +bTq +aAx +qxk +def +aCZ aav aav aav -lMJ -aaf +vLD +qxk aaa aav aav aav -aIe -aJv -axX -aMf -atF -aMl -aNu -aju +qyp +dew +qxk +aVh +bTq +dgg +dgr +qcZ aaa aaa anT @@ -121881,44 +121627,44 @@ apm dnh dnS dqT -afQ -auQ -awX +hYG +wBK +aAx aaa -ayv -ayZ +aIe +den aav aav aaa -aju -aaf -aju +aaa +qxk +aaa aaa aav aav -aId -ayv +dfz +aIe aaa -aMf -aMk -aNq -aNu -aju +aVh +aWK +dgk +dgr +qcZ aaa aaa -anT -aOO -aOO +dgN +dgO +dgO aaf aav bpw -aOO -aOO +dgO +dgO aaf aaf aaf aaf -aOR +bCz aaf bFY aaf @@ -122139,28 +121885,28 @@ auz dqp dqT axY -aeD -awX -axZ -ayS -aza +iNQ +aAx +vJQ +def +aCZ aaa aaa -aju -aBQ -azB -aEu -aju -lMJ -aAo -aIe -aJv -axZ -aMf -aMl +aaa +ddZ +deu +mGY +aaa +vLD +dev +qyp +dew +vJQ +aVh +dgg axY -aNu -aju +dgr +qcZ aaa aaa anT @@ -122169,7 +121915,7 @@ aaa aaf aaf bpx -aOO +dgO aaf aaf aaa @@ -122396,28 +122142,28 @@ auA dnS dqT axY -aeD -atF -axX -ayv -ayZ -lMJ -aaf -aaf -ayZ -aDd -aEC -aaf -aaf -lMJ -aId -ayv -axX -atF -aMl +oru +bTq +qxk +aIe +den +vLD +qxk +qxk +den +hiq +aMo +qxk +qxk +vLD +dfz +aIe +qxk +bTq +iKX axY -aNu -aju +dgr +qcZ aaa aaa anT @@ -122653,28 +122399,28 @@ auB avG dqT axY -aeD -awX -axZ -ayS -aza -aAo -lMJ -aju -aBR -aDe -aFv -aju +iNQ +aAx +vJQ +def +aCZ +dev +vLD +aaa +gBt +deY +tYJ aaa aaa -aIe -aJv -axZ -aMf -aMl +aaa +qyp +dew +vJQ +aVh +dgg axY -aNu -aju +dgr +qcZ aaa aaa anT @@ -122909,29 +122655,29 @@ dnh dnh jKK dqT -ahT -auR -awX +yhr +cYV +aAx aaa -ayv -ayZ +aIe +den aav aav aaa -aju -aaf -aju +aaa +qxk +aaa aaa aav aav -aId -ayv +dfz +aIe aaa -aMf -aMm -aNs -aNu -aju +aVh +qiO +dgm +dgr +qcZ aaa aaa anT @@ -123166,29 +122912,29 @@ atn bOY avG dqT -aeD -atF -awX -axX -ayT -aza +iNQ +bTq +aAx +qxk +eCm +aCZ aav aav aaa aaa -aaf -lMJ +qxk +vLD aaa aav aav -aIe -aJw -axX -aMg -atF -aMl -aNu -aju +qyp +ixJ +qxk +glg +bTq +dgg +dgr +qcZ aaa aaa anT @@ -123423,28 +123169,28 @@ dnh dnh lNZ dqT -ajk -atJ -awX +pdI +kXU +aAx aaa -axZ -ayZ -aAo +vJQ +den +dev aav aaa aaa -lMJ -aAo +vLD +dev aav aav -aAo -aId -axZ +dev +dfz +vJQ aaa -aMf -aMj -aNt -aNu +aVh +dge +eTm +dgr aaf aaa aaa @@ -123682,26 +123428,26 @@ ack dqT axY axY -atF -aya -aya -azc -aya -aya -aya -aya -aya -aya -aya -aya -aya -aJn -aya -aya -atF +bTq +ili +ili +sef +ili +ili +ili +ili +wEo +ili +ili +ili +ili +giG +ili +ili +bTq axY axY -aNu +dgr aaf aaa aaa @@ -124194,7 +123940,7 @@ aaa aaa aaa lMJ -aju +qcZ axY axY axY @@ -124212,8 +123958,8 @@ axY axY axY axY -aju -aMn +qcZ +vyf aaa aaf aaf diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index 0640a20910..18aa7d0f98 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -1109,10 +1109,9 @@ }, /area/mine/living_quarters) "dn" = ( -/obj/structure/table, -/obj/item/storage/firstaid/toxin{ - pixel_x = 3; - pixel_y = 3 +/obj/machinery/cryopod, +/obj/machinery/computer/cryopod{ + pixel_y = 26 }, /turf/open/floor/plasteel/whiteblue/side{ dir = 5 @@ -1245,6 +1244,10 @@ "dE" = ( /obj/structure/table, /obj/item/storage/firstaid/regular, +/obj/item/storage/firstaid/toxin{ + pixel_x = 3; + pixel_y = 3 + }, /turf/open/floor/plasteel/whiteblue/side{ dir = 4 }, @@ -2292,13 +2295,11 @@ "gY" = ( /obj/docking_port/stationary{ area_type = /area/lavaland/surface/outdoors; - baseturf_type = /turf/open/lava/smooth/lava_land_surface; dir = 8; dwidth = 2; height = 5; id = "laborcamp_away"; name = "labor camp"; - turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface; width = 9 }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, @@ -3246,13 +3247,11 @@ "Uq" = ( /obj/docking_port/stationary{ area_type = /area/lavaland/surface/outdoors; - baseturf_type = /turf/open/lava/smooth/lava_land_surface; dir = 2; dwidth = 11; height = 22; id = "whiteship_lavaland"; name = "lavaland wastes"; - turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface; width = 35 }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, @@ -3260,13 +3259,11 @@ "Wp" = ( /obj/docking_port/stationary{ area_type = /area/lavaland/surface/outdoors; - baseturf_type = /turf/open/lava/smooth/lava_land_surface; dir = 8; dwidth = 3; height = 5; id = "mining_away"; name = "lavaland mine"; - turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface; width = 7 }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 3566ad7c09..0a6961f445 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -517,7 +517,6 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/machinery/light, /turf/open/floor/plasteel/vault/side{ dir = 1 }, @@ -550,8 +549,8 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/vault/side{ - dir = 5 +/turf/open/floor/plasteel/vault{ + dir = 8 }, /area/bridge) "abd" = ( @@ -568,8 +567,9 @@ dir = 4 }, /obj/effect/landmark/event_spawn, +/obj/machinery/holopad, /turf/open/floor/plasteel/vault{ - dir = 5 + dir = 8 }, /area/bridge) "abe" = ( @@ -582,7 +582,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/light, /turf/open/floor/plasteel/vault/side{ dir = 1 }, @@ -680,18 +679,14 @@ /turf/open/floor/plasteel, /area/bridge) "abm" = ( -/obj/machinery/status_display, -/turf/closed/wall, -/area/bridge) -"abn" = ( /obj/structure/cable/white{ icon_state = "0-2" }, /obj/machinery/modular_computer/console/preset/command{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/darkpurple/side{ + dir = 8 }, /area/bridge) "abo" = ( @@ -703,6 +698,8 @@ /obj/structure/cable/white{ icon_state = "1-2" }, +/obj/structure/table/wood, +/obj/item/storage/lockbox/medal, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -794,39 +791,34 @@ /turf/closed/wall, /area/bridge) "abB" = ( -/obj/structure/table/wood, -/obj/item/folder/blue, -/obj/item/pen, +/obj/machinery/computer/robotics{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, /obj/machinery/firealarm{ dir = 8; pixel_x = -24 }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/vault/side{ - dir = 4 +/turf/open/floor/plasteel/darkpurple/side{ + dir = 8 }, /area/bridge) "abC" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/bridge) "abD" = ( /obj/structure/cable/white{ icon_state = "4-8" }, -/turf/open/floor/plasteel/vault/side{ - dir = 4 +/turf/open/floor/plasteel/vault{ + dir = 8 }, /area/bridge) "abE" = ( @@ -836,38 +828,34 @@ /obj/structure/cable/white{ icon_state = "1-4" }, -/obj/machinery/holopad, -/turf/open/floor/plasteel/vault, -/area/bridge) -"abF" = ( /obj/structure/table/wood, -/obj/item/lighter, -/obj/structure/cable/white{ - icon_state = "2-8" - }, -/obj/structure/cable/white{ - icon_state = "1-2" - }, +/obj/item/paper_bin, +/obj/item/pen, /turf/open/floor/plasteel/vault{ dir = 8 }, /area/bridge) -"abG" = ( -/obj/structure/table/wood, -/obj/item/storage/secure/briefcase{ - pixel_x = 5; - pixel_y = 5 +"abF" = ( +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, +/area/bridge) +"abG" = ( +/obj/machinery/computer/mecha{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 }, -/obj/item/storage/lockbox/medal, /obj/machinery/airalarm{ dir = 8; pixel_x = 24 }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/vault/side{ - dir = 8 +/turf/open/floor/plasteel/darkpurple/side{ + dir = 4 }, /area/bridge) "abH" = ( @@ -1126,11 +1114,10 @@ /turf/open/floor/carpet, /area/bridge) "acj" = ( -/obj/structure/table/wood, -/obj/item/storage/fancy/donut_box, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/item/device/beacon, /turf/open/floor/carpet, /area/bridge) "ack" = ( @@ -1141,6 +1128,9 @@ dir = 4 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/structure/cable/white{ + icon_state = "2-8" + }, /turf/open/floor/plasteel/grimy, /area/bridge) "acl" = ( @@ -1495,7 +1485,7 @@ dir = 4 }, /turf/open/floor/plasteel/vault/side{ - dir = 1 + dir = 5 }, /area/bridge) "acY" = ( @@ -1531,13 +1521,6 @@ /area/bridge) "ada" = ( /obj/structure/table/wood, -/obj/item/clothing/mask/cigarette/cigar/cohiba{ - pixel_x = 3 - }, -/obj/item/clothing/mask/cigarette/cigar/havana{ - pixel_x = -3 - }, -/obj/item/clothing/mask/cigarette/cigar, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -1545,6 +1528,14 @@ c_tag = "Bridge Center"; dir = 1 }, +/obj/item/storage/fancy/donut_box, +/obj/item/clothing/mask/cigarette/cigar/havana{ + pixel_x = -3 + }, +/obj/item/clothing/mask/cigarette/cigar/cohiba{ + pixel_x = 3 + }, +/obj/item/clothing/mask/cigarette/cigar, /turf/open/floor/carpet, /area/bridge) "adb" = ( @@ -1564,6 +1555,9 @@ /obj/structure/cable/white{ icon_state = "1-2" }, +/obj/structure/cable/white{ + icon_state = "2-8" + }, /turf/open/floor/plasteel/grimy, /area/bridge) "add" = ( @@ -1966,10 +1960,6 @@ /turf/closed/wall, /area/crew_quarters/heads/hop) "adZ" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "cargounload" - }, /obj/item/device/radio/intercom{ name = "Station Intercom"; pixel_x = -28 @@ -1980,6 +1970,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 2 }, +/obj/machinery/conveyor/inverted{ + dir = 5; + id = "cargounload" + }, /turf/open/floor/plasteel, /area/quartermaster/storage) "aea" = ( @@ -2258,6 +2252,9 @@ uses = 10 }, /obj/effect/turf_decal/bot, +/obj/structure/cable/white{ + icon_state = "2-8" + }, /turf/open/floor/plasteel/vault, /area/ai_monitored/nuke_storage) "aeF" = ( @@ -2801,8 +2798,9 @@ /turf/open/floor/plasteel/neutral, /area/quartermaster/storage) "afH" = ( -/obj/machinery/conveyor_switch{ - id = "cargounload" +/obj/machinery/conveyor_switch/oneway{ + id = "cargounload"; + dir = 8 }, /turf/open/floor/plasteel/brown{ dir = 4 @@ -3637,15 +3635,15 @@ /turf/open/floor/plasteel, /area/quartermaster/storage) "ahn" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "cargoload" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line{ dir = 9 }, /obj/effect/turf_decal/stripes/corner, +/obj/machinery/conveyor{ + dir = 5; + id = "cargoload" + }, /turf/open/floor/plating, /area/quartermaster/storage) "aho" = ( @@ -3972,6 +3970,19 @@ /area/ai_monitored/nuke_storage) "ahT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/flasher{ + id = "AI"; + pixel_x = 9; + pixel_y = -24 + }, +/obj/item/device/radio/intercom{ + broadcasting = 1; + frequency = 1447; + listening = 0; + name = "AI Intercom"; + pixel_x = -4; + pixel_y = -28 + }, /turf/open/floor/circuit/green, /area/ai_monitored/nuke_storage) "ahU" = ( @@ -4284,18 +4295,6 @@ name = "AI Vault Chamber"; req_access_txt = "16" }, -/obj/machinery/flasher{ - id = "AI"; - pixel_x = 26; - pixel_y = -10 - }, -/obj/item/device/radio/intercom{ - broadcasting = 1; - frequency = 1447; - listening = 0; - name = "AI Intercom"; - pixel_x = 28 - }, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -4397,12 +4396,12 @@ }, /area/quartermaster/storage) "aiL" = ( -/obj/machinery/conveyor_switch{ - id = "cargoload" - }, /obj/machinery/light{ dir = 1 }, +/obj/machinery/conveyor_switch/oneway{ + id = "cargoload" + }, /turf/open/floor/plasteel/brown{ dir = 5 }, @@ -7141,6 +7140,7 @@ "anN" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, +/obj/item/device/beacon, /turf/open/floor/plasteel, /area/teleporter) "anP" = ( @@ -7243,6 +7243,7 @@ "anW" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, +/obj/item/device/beacon, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "anX" = ( @@ -8994,10 +8995,8 @@ }, /area/quartermaster/miningdock) "arr" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped{ - dir = 8; - filter_type = "n2o"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2o{ + dir = 8 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ @@ -10894,10 +10893,8 @@ }, /area/engine/atmos) "avy" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped{ - dir = 4; - filter_type = "o2"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/o2{ + dir = 4 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ @@ -12400,10 +12397,8 @@ /turf/open/floor/plating, /area/hallway/secondary/exit) "azl" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped{ - dir = 4; - filter_type = "n2"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2{ + dir = 4 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ @@ -13251,16 +13246,15 @@ icon_state = "1-2" }, /obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 5 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 8 }, /turf/open/floor/plasteel, /area/engine/atmos) "aBB" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "External Waste Ports to Filter"; - on = 1 + name = "External Waste Ports to Filter" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ @@ -13729,15 +13723,15 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /turf/open/floor/plasteel/vault/side{ dir = 1 }, /area/engine/atmos) "aCF" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Air to External Air Ports"; - on = 1 + name = "Air to External Air Ports" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/camera{ @@ -14054,7 +14048,6 @@ height = 18; id = "emergency_home"; name = "OmegaStation emergency evac bay"; - turf_type = /turf/open/space; width = 30 }, /turf/open/space/basic, @@ -14095,6 +14088,7 @@ dir = 1 }, /obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /turf/open/floor/plasteel, /area/engine/atmos) "aDu" = ( @@ -14541,10 +14535,8 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, /obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel, /area/engine/engineering) "aEz" = ( @@ -14556,6 +14548,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, /turf/open/floor/plasteel, /area/engine/engineering) "aEA" = ( @@ -14996,6 +14991,7 @@ /obj/effect/turf_decal/bot, /obj/item/areaeditor/blueprints, /obj/item/tank/jetpack/suit, +/obj/item/clothing/shoes/magboots/advance, /turf/open/floor/plasteel/vault/side{ dir = 8 }, @@ -15067,16 +15063,19 @@ dir = 10 }, /obj/item/clothing/glasses/meson/engine, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/engineering) "aFA" = ( /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/engineering) "aFB" = ( @@ -15323,6 +15322,7 @@ /area/hallway/primary/starboard) "aGa" = ( /obj/effect/landmark/event_spawn, +/obj/item/device/beacon, /turf/open/floor/plasteel/neutral, /area/hallway/secondary/exit) "aGb" = ( @@ -16442,10 +16442,9 @@ /turf/open/floor/engine, /area/engine/engineering) "aIl" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Gas to Filter"; - on = 1 + name = "Gas to Filter" }, /obj/structure/cable{ icon_state = "4-8" @@ -16989,13 +16988,13 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "aJo" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/white{ icon_state = "0-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, +/obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating, /area/engine/gravity_generator) "aJp" = ( @@ -17075,13 +17074,13 @@ /turf/open/floor/engine, /area/engine/engineering) "aJA" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/white{ icon_state = "0-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating, /area/engine/engineering) "aJB" = ( @@ -18069,11 +18068,11 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "aLL" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/white, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, +/obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating, /area/engine/gravity_generator) "aLM" = ( @@ -18122,7 +18121,8 @@ /turf/closed/wall/r_wall/rust, /area/engine/supermatter) "aLR" = ( -/obj/machinery/door/airlock/atmos/glass{ +/obj/machinery/door/airlock/atmos/glass/critical{ + heat_proof = 1; name = "Supermatter Chamber"; req_access_txt = "24" }, @@ -18170,8 +18170,8 @@ /turf/open/floor/engine, /area/engine/engineering) "aLX" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/white, +/obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating, /area/engine/engineering) "aLY" = ( @@ -18404,9 +18404,7 @@ /area/tcommsat/server) "aMK" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/tcommsat/server) "aML" = ( @@ -18982,7 +18980,10 @@ /turf/open/floor/engine, /area/engine/engineering) "aOa" = ( -/obj/machinery/power/supermatter_shard/crystal/engine, +/obj/machinery/power/supermatter_crystal/shard/engine{ + anchored = 1; + moveable = 0 + }, /turf/open/floor/engine, /area/engine/supermatter) "aOb" = ( @@ -20664,12 +20665,7 @@ /turf/open/floor/plasteel/vault/side, /area/tcommsat/server) "aRE" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 2; - min_temperature = 80; - on = 1; - target_temperature = 80 - }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel/vault/side, /area/tcommsat/server) @@ -20696,10 +20692,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 2; - name = "Gas to Cooling Loop"; - on = 1 + name = "Gas to Cooling Loop" }, /turf/open/floor/engine, /area/engine/engineering) @@ -20781,10 +20776,9 @@ /turf/open/floor/engine, /area/engine/engineering) "aRQ" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Gas to Cooling Loop"; - on = 1 + name = "Gas to Cooling Loop" }, /turf/open/floor/engine, /area/engine/engineering) @@ -21240,9 +21234,8 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/thermomachine/heater{ - dir = 1; - on = 1 +/obj/machinery/atmospherics/components/unary/thermomachine/heater/on{ + dir = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -21263,11 +21256,8 @@ /turf/open/floor/plasteel/dark, /area/engine/engineering) "aSW" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1; - min_temperature = 80; - on = 1; - target_temperature = 80 +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + dir = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -21848,6 +21838,10 @@ c_tag = "Genetics Cloning"; dir = 4 }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, /turf/open/floor/plasteel/whiteblue/corner{ dir = 1 }, @@ -23575,12 +23569,7 @@ /turf/open/floor/plasteel, /area/medical/medbay/zone3) "aXV" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 2; - min_temperature = 80; - on = 1; - target_temperature = 80 - }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -23776,11 +23765,8 @@ /turf/open/floor/plasteel/whitepurple/corner, /area/science/research) "aYq" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1; - min_temperature = 80; - on = 1; - target_temperature = 80 +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + dir = 1 }, /obj/machinery/firealarm{ dir = 8; @@ -24861,6 +24847,9 @@ /area/medical/medbay/zone3) "bay" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/defibrillator_mount/loaded{ + pixel_y = -32 + }, /turf/open/floor/plasteel/whiteblue/corner{ dir = 8 }, @@ -25797,6 +25786,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, +/obj/structure/closet/crate/bin, /turf/open/floor/plasteel, /area/science/robotics/lab) "bcz" = ( @@ -25818,11 +25808,11 @@ /turf/open/floor/plasteel, /area/science/robotics/lab) "bcC" = ( -/obj/structure/closet/crate/bin, /obj/structure/extinguisher_cabinet{ pixel_x = 24 }, /obj/effect/turf_decal/bot, +/obj/machinery/aug_manipulator, /turf/open/floor/plasteel/vault/side{ dir = 8 }, @@ -29283,11 +29273,8 @@ }, /area/science/xenobiology) "bjH" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1; - min_temperature = 80; - on = 1; - target_temperature = 80 +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + dir = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -30343,18 +30330,6 @@ /obj/structure/grille, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"btj" = ( -/obj/docking_port/stationary{ - dir = 2; - dwidth = 4; - height = 17; - id = "arrivals_stationary"; - name = "omega arrivals"; - roundstart_template = /datum/map_template/shuttle/arrival/delta; - width = 9 - }, -/turf/open/space/basic, -/area/space) "btk" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -30510,17 +30485,6 @@ dir = 5 }, /area/tcommsat/server) -"buV" = ( -/obj/structure/cable/white{ - icon_state = "0-2" - }, -/obj/machinery/modular_computer/console/preset/research{ - dir = 8 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/bridge) "buW" = ( /turf/closed/wall/r_wall, /area/engine/supermatter) @@ -30563,7 +30527,6 @@ height = 13; id = "ferry_home"; name = "port bay 2"; - turf_type = /turf/open/space; width = 5 }, /turf/open/space/basic, @@ -30628,14 +30591,8 @@ /turf/closed/mineral/random/labormineral, /area/asteroid/nearstation) "bxj" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/closed/wall/r_wall, -/area/tcommsat/server) -"bxk" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 + dir = 10 }, /turf/closed/wall/r_wall, /area/tcommsat/server) @@ -30994,6 +30951,10 @@ dir = 1 }, /area/engine/atmos) +"bVI" = ( +/obj/machinery/cryopod, +/turf/open/floor/plasteel/purple, +/area/crew_quarters/cryopod) "bYE" = ( /obj/structure/sign/warning/fire, /obj/machinery/atmospherics/pipe/simple/general/visible{ @@ -31116,6 +31077,17 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) +"cKy" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/structure/cable/white, +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/ai_monitored/nuke_storage) "cRz" = ( /obj/machinery/button/door{ id = "supplybridge"; @@ -31210,9 +31182,6 @@ "diG" = ( /turf/open/floor/plasteel, /area/engine/atmos) -"dnS" = ( -/turf/open/floor/plasteel/purple, -/area/crew_quarters/cryopod) "doD" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/firedoor, @@ -31227,6 +31196,11 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"dsZ" = ( +/obj/structure/cable/white, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/primary/central) "dEa" = ( /obj/machinery/computer/arcade, /turf/open/floor/plasteel/vault{ @@ -31264,6 +31238,18 @@ dir = 1 }, /area/hallway/primary/fore) +"dYZ" = ( +/obj/structure/cable/white{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + areastring = "/area/crew_quarters/cryopod"; + dir = 2; + name = "Cryogenics APC"; + pixel_y = -24 + }, +/turf/open/floor/plasteel/purple, +/area/crew_quarters/cryopod) "eaf" = ( /obj/machinery/atmospherics/pipe/simple/yellow/visible, /obj/structure/cable{ @@ -31327,6 +31313,13 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) +"ezi" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/flora/ausbushes/ppflowers, +/turf/open/floor/grass, +/area/hallway/secondary/entry) "ezP" = ( /obj/machinery/atmospherics/pipe/simple/general/visible, /obj/effect/spawner/structure/window/plasma/reinforced, @@ -31380,18 +31373,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/aft) -"eUE" = ( -/obj/structure/cable/white{ - icon_state = "0-8" - }, -/obj/machinery/power/apc{ - areastring = "/area/crew_quarters/cryopod"; - dir = 2; - name = "Cryogenics APC"; - pixel_y = -24 - }, -/turf/open/floor/plasteel/purple, -/area/crew_quarters/cryopod) "eYe" = ( /obj/effect/mapping_helpers/airlock/locked, /obj/machinery/door/airlock/public/glass{ @@ -31466,6 +31447,18 @@ /obj/item/wrench, /turf/open/space, /area/space/nearstation) +"fsl" = ( +/obj/docking_port/stationary{ + dir = 2; + dwidth = 2; + height = 16; + id = "arrivals_stationary"; + name = "omega arrivals"; + roundstart_template = /datum/map_template/shuttle/arrival/omega; + width = 5 + }, +/turf/open/space/basic, +/area/space) "fsJ" = ( /obj/structure/cable{ icon_state = "4-8" @@ -31538,9 +31531,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) -"fSE" = ( -/turf/closed/wall/r_wall, -/area/space) "fWz" = ( /obj/machinery/door/airlock/external{ name = "External Docking Port"; @@ -31579,6 +31569,11 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/neutral/corner, /area/hallway/primary/port) +"ggq" = ( +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/bridge) "gii" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -31645,10 +31640,8 @@ }, /area/engine/atmos) "gVX" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped{ - dir = 8; - filter_type = "co2"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2{ + dir = 8 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ @@ -31726,6 +31719,10 @@ }, /turf/open/floor/engine/co2, /area/engine/atmos) +"hQq" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/cryopod) "hUG" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -31780,10 +31777,6 @@ heat_capacity = 1e+006 }, /area/hallway/primary/aft) -"ikx" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/cryopod) "iqC" = ( /obj/machinery/air_sensor/atmos/carbon_tank, /turf/open/floor/engine/co2, @@ -31802,14 +31795,18 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "iIj" = ( -/obj/machinery/atmospherics/components/trinary/mixer/flipped{ - dir = 4; - node1_concentration = 0.8; - node2_concentration = 0.2; - on = 1 +/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped{ + dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmos) +"iJz" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/grass, +/area/hallway/secondary/entry) "iJY" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/structure/cable{ @@ -32031,11 +32028,6 @@ dir = 5 }, /area/engine/atmos) -"kBv" = ( -/obj/structure/cable/white, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/hallway/primary/central) "kCU" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 4 @@ -32082,10 +32074,9 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) -"loO" = ( -/obj/machinery/cryopod, -/turf/open/floor/plasteel/purple, -/area/crew_quarters/cryopod) +"lnn" = ( +/turf/closed/wall, +/area/hallway/primary/central) "lqz" = ( /obj/machinery/atmospherics/pipe/manifold/yellow/visible, /obj/effect/decal/cleanable/dirt, @@ -32101,6 +32092,21 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) +"luP" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/flora/ausbushes/ywflowers, +/turf/open/floor/grass, +/area/hallway/secondary/entry) +"lvt" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/vacuum, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating, +/area/quartermaster/storage) "lvw" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible, /obj/effect/decal/cleanable/dirt, @@ -32169,9 +32175,6 @@ "lIM" = ( /turf/closed/wall/rust, /area/crew_quarters/lounge) -"lMV" = ( -/turf/closed/wall, -/area/hallway/primary/central) "lQs" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -32185,6 +32188,13 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"lTY" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/flora/ausbushes/ywflowers, +/turf/open/floor/grass, +/area/hallway/secondary/entry) "lUu" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/machinery/light/small, @@ -32288,6 +32298,12 @@ /obj/item/paper/guides/jobs/hydroponics, /turf/open/floor/plasteel/neutral, /area/hydroponics) +"mKg" = ( +/obj/machinery/computer/cryopod{ + pixel_x = 28 + }, +/turf/open/floor/plasteel/purple, +/area/crew_quarters/cryopod) "mQi" = ( /turf/closed/wall/rust, /area/maintenance/starboard/central) @@ -32417,6 +32433,9 @@ dir = 5 }, /area/engine/atmos) +"ouS" = ( +/turf/closed/wall, +/area/crew_quarters/cryopod) "oxn" = ( /obj/machinery/power/compressor{ dir = 4; @@ -32435,9 +32454,6 @@ "oyD" = ( /turf/closed/wall, /area/crew_quarters/toilet/restrooms) -"oyR" = ( -/turf/closed/wall, -/area/crew_quarters/cryopod) "oCy" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/structure/cable{ @@ -32465,6 +32481,17 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel, /area/engine/atmos) +"oKz" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 9 + }, +/area/bridge) "oOk" = ( /turf/open/floor/engine/plasma, /area/engine/atmos) @@ -32578,6 +32605,13 @@ heat_capacity = 1e+006 }, /area/hallway/primary/starboard/fore) +"pEA" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/flora/ausbushes/grassybush, +/turf/open/floor/grass, +/area/hallway/secondary/entry) "pEH" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, @@ -32605,6 +32639,13 @@ /obj/structure/grille, /turf/open/space/basic, /area/space/nearstation) +"qcg" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/flora/ausbushes/grassybush, +/turf/open/floor/grass, +/area/hallway/secondary/entry) "qdt" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -32832,6 +32873,10 @@ dir = 4 }, /area/hallway/primary/starboard) +"spw" = ( +/obj/machinery/computer/bank_machine, +/turf/open/floor/circuit/green, +/area/ai_monitored/nuke_storage) "sqz" = ( /turf/closed/wall, /area/hallway/primary/starboard) @@ -32861,7 +32906,6 @@ height = 17; id = "syndicate_sw"; name = "southwest of station"; - turf_type = /turf/open/space; width = 23 }, /turf/open/space, @@ -32869,20 +32913,6 @@ "swv" = ( /turf/closed/wall/r_wall/rust, /area/bridge) -"swx" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/structure/cable/white{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/vault/side{ - dir = 9 - }, -/area/bridge) "swy" = ( /turf/open/floor/plasteel/vault/side{ dir = 8 @@ -32897,14 +32927,6 @@ "swC" = ( /turf/closed/wall/r_wall/rust, /area/crew_quarters/heads/captain/private) -"swD" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/vault/side{ - dir = 8 - }, -/area/bridge) "swF" = ( /obj/structure/sign/warning/securearea, /turf/closed/wall/rust, @@ -33041,6 +33063,12 @@ /obj/structure/sign/warning/vacuum, /turf/closed/wall/rust, /area/maintenance/starboard) +"sCb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/medical/medbay/zone3) "sCr" = ( /obj/structure/cable/white{ icon_state = "1-2" @@ -34635,6 +34663,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/item/device/beacon, /turf/open/floor/plasteel/vault/side{ dir = 5 }, @@ -34673,10 +34702,9 @@ /area/ai_monitored/turret_protected/aisat_interior) "sNf" = ( /obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Waste Out"; - on = 1 + name = "Waste Out" }, /obj/structure/cable/yellow{ icon_state = "1-8" @@ -34872,6 +34900,10 @@ }, /turf/open/floor/plasteel/vault, /area/ai_monitored/turret_protected/aisat_interior) +"sNz" = ( +/obj/item/device/beacon, +/turf/open/floor/carpet, +/area/crew_quarters/lounge) "sNA" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -35308,6 +35340,13 @@ "sPY" = ( /turf/open/floor/plating, /area/maintenance/starboard/aft) +"sSy" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/flora/ausbushes/ppflowers, +/turf/open/floor/grass, +/area/hallway/secondary/entry) "tac" = ( /obj/structure/grille, /obj/machinery/meter, @@ -35535,6 +35574,9 @@ dir = 1 }, /area/engine/gravity_generator) +"uGl" = ( +/turf/open/floor/plasteel/purple, +/area/crew_quarters/cryopod) "uGq" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/red/corner{ @@ -35551,12 +35593,6 @@ dir = 5 }, /area/engine/atmos) -"uSF" = ( -/obj/machinery/computer/cryopod{ - pixel_x = 28 - }, -/turf/open/floor/plasteel/purple, -/area/crew_quarters/cryopod) "uVJ" = ( /obj/effect/decal/cleanable/oil, /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -35776,6 +35812,17 @@ /obj/structure/lattice/catwalk, /turf/open/floor/plating/airless, /area/space/nearstation) +"wkO" = ( +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/machinery/modular_computer/console/preset/research{ + dir = 8 + }, +/turf/open/floor/plasteel/darkpurple/side{ + dir = 4 + }, +/area/bridge) "wqL" = ( /obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 4 @@ -35783,7 +35830,8 @@ /turf/open/floor/plasteel, /area/engine/atmos) "wUF" = ( -/obj/machinery/door/airlock/atmos/glass{ +/obj/machinery/door/airlock/atmos/glass/critical{ + heat_proof = 1; name = "Supermatter Chamber"; req_access_txt = "24" }, @@ -35802,6 +35850,13 @@ }, /turf/open/floor/plasteel, /area/science/xenobiology) +"wWj" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/grass, +/area/hallway/secondary/entry) "wWz" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ dir = 4 @@ -35848,18 +35903,6 @@ /turf/open/floor/plasteel, /area/engine/atmos) "xtL" = ( -/obj/machinery/embedded_controller/radio/airlock_controller{ - name = "Incinerator Access Console"; - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_access_control"; - interior_door_tag = "incinerator_airlock_interior"; - pixel_x = 8; - pixel_y = -24; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor"; - req_access_txt = "12" - }, /obj/machinery/button/ignition{ id = "Incinerator"; pixel_x = 8; @@ -35928,10 +35971,8 @@ /turf/open/floor/plasteel/neutral/corner, /area/hallway/primary/port) "xEQ" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped{ - dir = 8; - filter_type = "plasma"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/plasma{ + dir = 8 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ @@ -35970,6 +36011,18 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, +/obj/machinery/embedded_controller/radio/airlock_controller{ + airpump_tag = "incinerator_airlock_pump"; + exterior_door_tag = "incinerator_airlock_exterior"; + id_tag = "incinerator_airlock_control"; + interior_door_tag = "incinerator_airlock_interior"; + name = "Incinerator Access Console"; + pixel_x = -8; + pixel_y = 35; + req_access_txt = "12"; + sanitize_external = 1; + sensor_tag = "incinerator_airlock_sensor" + }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "yba" = ( @@ -64422,7 +64475,7 @@ sIu aJj aKs aLG -bxk +aMJ aNT aOv buC @@ -69027,7 +69080,7 @@ swZ agF agF agF -fSE +agF swZ agF auE @@ -73938,9 +73991,9 @@ aQf nxA aSh aSh -aUn +aSh aVf -aWb +sCb aSh aSh aXR @@ -74461,7 +74514,7 @@ bxT aYL aZH bay -aSi +aSh aUn aWb bdT @@ -74738,10 +74791,10 @@ aaa bgU bkj bgU -aae -aaa -aaa -aae +bgU +bgU +bgU +bgU bgU bkj bgU @@ -74995,10 +75048,10 @@ aae bgU bki bgU -bgU -bgU -bgU -bgU +sSy +lTY +wWj +qcg bgU bki bgU @@ -76280,10 +76333,10 @@ aae bgU bki bgU -bgU -bgU -bgU -bgU +iJz +pEA +ezi +luP bgU bki bgU @@ -76537,10 +76590,10 @@ aaa bgU btl bgU -aae -aaa -aaa -aae +bgU +bgU +bgU +bgU bgU btl bgU @@ -77231,7 +77284,7 @@ aar aaD aaQ acX -abn +abo abC ach acY @@ -77303,7 +77356,7 @@ bgU aaa aaa aaa -aaa +fsl aaa aaa aaa @@ -77488,7 +77541,7 @@ aas aaE aaR abc -abo +ggq abD aci acZ @@ -77752,7 +77805,7 @@ ada adR aeC sOA -agi +spw aha ahS aiA @@ -77795,7 +77848,7 @@ sEG aTA aUy aVq -aUy +sNz aWR tWh aYd @@ -77816,7 +77869,7 @@ blv bgU aaa aaa -btj +aaa aaa aaa aaa @@ -78001,9 +78054,9 @@ aal aau aaG aaR -swx -swy -swD +abc +ggq +abD aci adb sOx @@ -78258,12 +78311,12 @@ aak aav aaH aaQ -acX -buV +oKz +swy abF ack adc -adP +cKy aeE afr afr @@ -78516,7 +78569,7 @@ aaw aaI aaS abe -abm +wkO abG acl swK @@ -78532,7 +78585,7 @@ akz als aml and -lMV +lnn aoS apY ara @@ -78788,8 +78841,8 @@ ajx akA alt amm -eUE -oyR +dYZ +ouS aoT apZ ara @@ -79043,10 +79096,10 @@ agl abq ajy akB -kBv -dnS -dnS -ikx +dsZ +uGl +uGl +hQq aoU aqa arg @@ -79300,10 +79353,10 @@ ahX aiC ajz akC -kBv -loO -uSF -ikx +dsZ +bVI +mKg +hQq aoV aqb arh @@ -84179,7 +84232,7 @@ aeX adp agC ahr -adq +lvt aae aae aae diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 33e7a62547..27dc4f85e5 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -2,207 +2,6 @@ "aaa" = ( /turf/open/space/basic, /area/space) -"aab" = ( -/turf/closed/wall, -/area/crew_quarters/cryopod) -"aac" = ( -/obj/machinery/power/apc{ - areastring = "/area/crew_quarters/cryopod"; - dir = 1; - name = "Crew Cryogenics APC"; - pixel_y = 24 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) -"aad" = ( -/obj/machinery/computer/cryopod{ - pixel_y = 24 - }, -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) -"aae" = ( -/obj/machinery/cryopod, -/obj/machinery/light/small/built{ - dir = 4 - }, -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) -"aaf" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) -"aag" = ( -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) -"aah" = ( -/obj/machinery/cryopod, -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) -"aai" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/stairs, -/area/crew_quarters/cryopod) -"aaj" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) -"aak" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"aal" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"aam" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"aan" = ( -/obj/machinery/field/generator{ - anchored = 1; - state = 2 - }, -/turf/open/floor/plating/airless, -/area/space) -"aao" = ( -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/power/tesla_coil, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aap" = ( -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/machinery/power/tesla_coil, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"aaq" = ( -/turf/open/space/basic, -/area/space/nearstation) -"aar" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating/airless, -/area/space) -"aas" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/space) -"aat" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating/airless, -/area/space) -"aau" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/space) -"aav" = ( -/obj/machinery/the_singularitygen/tesla, -/turf/open/floor/plating/airless, -/area/space) -"aaw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space) -"aax" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating/airless, -/area/space) -"aay" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plating/airless, -/area/space) -"aaz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating/airless, -/area/space) -"aaA" = ( -/obj/machinery/computer/libraryconsole/bookmanagement, -/obj/structure/table, -/turf/open/floor/plasteel/dark, -/area/security/prison) -"aaB" = ( -/obj/machinery/computer/cryopod{ - pixel_x = -28 - }, -/turf/open/floor/plasteel/dark, -/area/security/prison) -"aaC" = ( -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (EAST)"; - icon_state = "cryopod-open"; - dir = 4 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/security/prison) -"aaD" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/security/prison) -"aaE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/vending/kink, -/turf/open/floor/plasteel/arrival{ - dir = 1 - }, -/area/crew_quarters/fitness/recreation) "aby" = ( /obj/structure/lattice, /obj/structure/grille, @@ -910,10 +709,9 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/AIsatextAS) "adD" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Waste Out"; - on = 1 + name = "Waste Out" }, /obj/machinery/camera{ c_tag = "MiniSat Maintenance Starboard Fore"; @@ -1580,6 +1378,12 @@ }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/AIsatextAS) +"afn" = ( +/obj/machinery/computer/cryopod{ + pixel_x = -28 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) "afo" = ( /obj/structure/chair/stool, /turf/open/floor/plasteel/dark, @@ -1613,10 +1417,9 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/AIsatextAP) "afu" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Air Out"; - on = 1 + name = "Air Out" }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/AIsatextAP) @@ -1666,6 +1469,12 @@ /obj/item/stack/cable_coil, /turf/open/floor/plating, /area/ai_monitored/turret_protected/AIsatextAS) +"afC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) "afD" = ( /obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -3322,7 +3131,6 @@ height = 17; id = "syndicate_ne"; name = "northeast of station"; - turf_type = /turf/open/space; width = 23 }, /turf/open/space, @@ -3742,11 +3550,8 @@ /turf/open/floor/plating, /area/maintenance/department/security/brig) "aku" = ( -/obj/machinery/atmospherics/components/trinary/mixer/flipped{ - dir = 1; - node1_concentration = 0.2; - node2_concentration = 0.8; - on = 1 +/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped/inverse{ + dir = 1 }, /turf/open/floor/plating, /area/maintenance/department/security/brig) @@ -4958,9 +4763,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"ann" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_1) "anp" = ( /obj/structure/cable{ icon_state = "1-2" @@ -5288,13 +5090,6 @@ /obj/item/device/camera, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"aoc" = ( -/obj/machinery/computer/shuttle/monastery_shuttle, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) "aod" = ( /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, @@ -5517,27 +5312,6 @@ /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"aoE" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/status_display{ - pixel_x = -32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) -"aoF" = ( -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) -"aoG" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/status_display{ - pixel_x = 32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) "aoH" = ( /obj/structure/lattice, /obj/structure/grille, @@ -5894,18 +5668,6 @@ icon_state = "platingdmg1" }, /area/maintenance/department/crew_quarters/dorms) -"apx" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) -"apy" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) "apz" = ( /obj/structure/chair{ dir = 8 @@ -6077,24 +5839,6 @@ "apX" = ( /turf/closed/wall, /area/crew_quarters/dorms) -"apY" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/item/storage/pod{ - pixel_x = -24 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) -"apZ" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/item/device/radio/intercom{ - pixel_x = 30 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) "aqa" = ( /obj/structure/cable{ icon_state = "0-4" @@ -6449,33 +6193,17 @@ }, /turf/open/floor/plasteel/barber, /area/crew_quarters/dorms) -"aqX" = ( -/obj/structure/shuttle/engine/propulsion/burst, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_1) "aqY" = ( -/obj/machinery/door/airlock/titanium{ - name = "Shuttle Airlock" - }, /obj/docking_port/stationary{ + dir = 1; dwidth = 2; height = 6; - id = "monastery_shuttle_station"; - name = "station"; + name = "large escape pod loader"; + roundstart_template = /datum/map_template/shuttle/escape_pod/large; width = 5 }, -/obj/docking_port/mobile{ - dwidth = 2; - height = 6; - id = "pod1"; - launch_status = 0; - name = "monastery shuttle"; - port_direction = 2; - width = 5; - timid = 0 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) +/turf/open/space/basic, +/area/space) "aqZ" = ( /obj/machinery/space_heater, /turf/open/floor/plating, @@ -8720,6 +8448,15 @@ }, /turf/open/floor/plating, /area/crew_quarters/fitness/recreation) +"awx" = ( +/obj/structure/closet/athletic_mixed, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/arrival{ + dir = 1 + }, +/area/crew_quarters/fitness/recreation) "awy" = ( /obj/structure/closet/lasertag/blue, /obj/structure/disposalpipe/segment{ @@ -14222,11 +13959,16 @@ dir = 1; icon_state = "direction_sec"; pixel_x = 32; - pixel_y = -26 + pixel_y = -24 }, /obj/structure/sign/directions/medical{ pixel_x = 32; - pixel_y = -38 + pixel_y = -40 + }, +/obj/structure/sign/directions/evac{ + dir = 1; + pixel_x = 32; + pixel_y = -32 }, /turf/open/floor/plasteel, /area/hallway/primary/central) @@ -15337,7 +15079,6 @@ /area/maintenance/disposal) "aMF" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = 1; id = "garbagestacked"; name = "disposal conveyor" }, @@ -16376,14 +16117,14 @@ dir = 8 }, /obj/machinery/conveyor{ - dir = 2; + dir = 9; id = "garbage" }, /turf/open/floor/plating, /area/maintenance/disposal) "aPh" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "garbage" }, /turf/open/floor/plating, @@ -16760,10 +16501,6 @@ /turf/closed/wall, /area/maintenance/disposal) "aQl" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "garbage" - }, /obj/structure/disposaloutlet{ dir = 4 }, @@ -16777,7 +16514,7 @@ /area/maintenance/disposal) "aQm" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/structure/disposalpipe/segment{ @@ -16787,7 +16524,7 @@ /area/maintenance/disposal) "aQn" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/machinery/recycler, @@ -16795,7 +16532,7 @@ /area/maintenance/disposal) "aQo" = ( /obj/machinery/conveyor{ - dir = 2; + dir = 1; id = "garbage" }, /turf/open/floor/plating, @@ -17318,7 +17055,7 @@ /area/maintenance/disposal) "aRx" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = -1; + dir = 8; id = "garbage"; name = "disposal conveyor" }, @@ -17809,10 +17546,10 @@ /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "aSF" = ( -/obj/machinery/chem_master/condimaster, /obj/machinery/light/small{ dir = 1 }, +/obj/machinery/smartfridge/disks, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "aSG" = ( @@ -18070,7 +17807,7 @@ dir = 1 }, /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "QMLoad" }, /obj/machinery/airalarm{ @@ -18080,7 +17817,7 @@ /area/quartermaster/storage) "aTo" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "QMLoad" }, /obj/machinery/status_display{ @@ -18091,7 +17828,7 @@ /area/quartermaster/storage) "aTp" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "QMLoad" }, /obj/structure/sign/poster/official/random{ @@ -18101,7 +17838,7 @@ /area/quartermaster/storage) "aTq" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "QMLoad" }, /turf/open/floor/plating, @@ -18112,7 +17849,7 @@ name = "supply dock loading door" }, /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "QMLoad" }, /turf/open/floor/plating, @@ -18120,7 +17857,7 @@ "aTs" = ( /obj/structure/plasticflaps, /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "QMLoad" }, /turf/open/floor/plating, @@ -19095,7 +18832,6 @@ /area/quartermaster/storage) "aVB" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = -1; id = "QMLoad" }, /obj/machinery/button/door{ @@ -20286,7 +20022,7 @@ /area/quartermaster/storage) "aYB" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = 1; + dir = 8; id = "QMLoad2" }, /obj/effect/turf_decal/stripes/line{ @@ -26625,10 +26361,8 @@ /turf/open/floor/plasteel/dark, /area/science/robotics/lab) "bpa" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 4; - on = 1; - target_temperature = 80 +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + dir = 4 }, /obj/machinery/airalarm{ dir = 4; @@ -28780,7 +28514,6 @@ height = 13; id = "ferry_home"; name = "port bay 2"; - turf_type = /turf/open/space; width = 5 }, /turf/open/space/basic, @@ -33753,10 +33486,9 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "bEl" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Air Out"; - on = 1 + name = "Air Out" }, /turf/open/floor/plating, /area/maintenance/department/engine) @@ -36851,8 +36583,7 @@ "bKY" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Mix Outlet Pump"; - on = 0 + name = "Mix Outlet Pump" }, /turf/open/floor/plasteel/yellow/side{ dir = 5 @@ -37270,8 +37001,7 @@ "bMa" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Distro to Waste"; - on = 0 + name = "Distro to Waste" }, /obj/machinery/light{ dir = 1 @@ -37298,8 +37028,7 @@ "bMd" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Mix to Distro"; - on = 0 + name = "Mix to Distro" }, /turf/open/floor/plasteel/yellow/side{ dir = 1 @@ -37353,10 +37082,7 @@ /area/science/mixing) "bMm" = ( /obj/machinery/igniter{ - icon_state = "igniter0"; - id = "toxigniter"; - luminosity = 2; - on = 0 + id = "toxigniter" }, /turf/open/floor/engine/vacuum, /area/science/mixing) @@ -37625,10 +37351,9 @@ /turf/closed/wall/r_wall, /area/engine/atmos) "bMY" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "External to Filter"; - on = 1 + name = "External to Filter" }, /turf/open/floor/plasteel/yellow/side{ dir = 8 @@ -37686,10 +37411,9 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bNg" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Air to Distro"; - on = 1 + name = "Air to Distro" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -38049,10 +37773,9 @@ /turf/closed/wall/r_wall, /area/engine/atmos) "bOg" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Air to External"; - on = 1 + name = "Air to External" }, /turf/open/floor/plasteel/yellow/side{ dir = 8 @@ -38115,8 +37838,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 0; - name = "Mix to Port"; - on = 0 + name = "Mix to Port" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -38126,8 +37848,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Pure to Mix"; - on = 0 + name = "Pure to Mix" }, /obj/structure/cable{ icon_state = "1-2" @@ -38138,10 +37859,9 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Unfiltered to Mix"; - on = 1 + name = "Unfiltered to Mix" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -38435,8 +38155,7 @@ "bPe" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "N2O Outlet Pump"; - on = 0 + name = "N2O Outlet Pump" }, /turf/open/floor/plasteel/yellow/side{ dir = 4 @@ -38668,10 +38387,9 @@ /turf/closed/wall, /area/engine/atmos) "bPR" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 0; - name = "Waste In"; - on = 1 + name = "Waste In" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -38682,8 +38400,7 @@ "bPT" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 0; - name = "Air to Port"; - on = 0 + name = "Air to Port" }, /obj/machinery/light{ dir = 8 @@ -38696,8 +38413,7 @@ "bPU" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 0; - name = "Mix to Port"; - on = 0 + name = "Mix to Port" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -39066,10 +38782,8 @@ }, /area/engine/atmos) "bQN" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 1; - filter_type = "n2o"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o{ + dir = 1 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -39694,8 +39408,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Plasma Outlet Pump"; - on = 0 + name = "Plasma Outlet Pump" }, /turf/open/floor/plasteel/yellow/side{ dir = 4 @@ -39960,8 +39673,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 0; - name = "Port to Filter"; - on = 0 + name = "Port to Filter" }, /obj/structure/extinguisher_cabinet{ pixel_x = -27 @@ -40065,10 +39777,9 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Air Out"; - on = 1 + name = "Air Out" }, /turf/open/floor/plating, /area/maintenance/department/engine) @@ -40401,8 +40112,7 @@ "bTR" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Port to Filter"; - on = 0 + name = "Port to Filter" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -40418,10 +40128,8 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bTU" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 1; - filter_type = "plasma"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/plasma{ + dir = 1 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -40983,8 +40691,7 @@ "bVk" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "CO2 Outlet Pump"; - on = 0 + name = "CO2 Outlet Pump" }, /turf/open/floor/plasteel/yellow/side{ dir = 4 @@ -41029,7 +40736,7 @@ dir = 8 }, /turf/open/floor/plating, -/area/maintenance/department/engine) +/area/construction/mining/aux_base) "bVr" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating/airless, @@ -41332,8 +41039,7 @@ "bVV" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 0; - name = "Waste to Space"; - on = 0 + name = "Waste to Space" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -41355,8 +41061,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "O2 to Pure"; - on = 0 + name = "O2 to Pure" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -41369,8 +41074,7 @@ "bWa" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 4; - name = "N2 to Pure"; - on = 0 + name = "N2 to Pure" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -41697,10 +41401,8 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bWK" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 4; - filter_type = "o2"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/o2{ + dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -41730,16 +41432,13 @@ "bWP" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Air to Pure"; - on = 0 + name = "Air to Pure" }, /turf/open/floor/plasteel, /area/engine/atmos) "bWQ" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 1; - filter_type = "co2"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/co2{ + dir = 1 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -41964,11 +41663,7 @@ /turf/open/floor/plasteel/yellow/side, /area/engine/atmos) "bXA" = ( -/obj/machinery/atmospherics/components/trinary/mixer{ - node1_concentration = 0.8; - node2_concentration = 0.2; - on = 1 - }, +/obj/machinery/atmospherics/components/trinary/mixer/airmix, /turf/open/floor/plasteel/yellow/side, /area/engine/atmos) "bXB" = ( @@ -41979,10 +41674,9 @@ /area/engine/atmos) "bXC" = ( /obj/machinery/light, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Air Outlet Pump"; - on = 1 + name = "Air Outlet Pump" }, /turf/open/floor/plasteel/yellow/side, /area/engine/atmos) @@ -42304,7 +41998,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/maintenance/department/engine) +/area/construction/mining/aux_base) "bYG" = ( /obj/machinery/power/apc/highcap/five_k{ dir = 8; @@ -42751,32 +42445,14 @@ }, /area/maintenance/department/engine) "bZs" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, /turf/open/floor/plating, -/area/shuttle/auxillary_base) +/area/construction/mining/aux_base) "bZt" = ( /obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"bZu" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/docking_port/stationary/public_mining_dock{ dir = 2 }, /turf/open/floor/plating, -/area/shuttle/auxillary_base) -"bZv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) +/area/construction/mining/aux_base) "bZw" = ( /obj/item/bikehorn/rubberducky, /turf/open/floor/plating, @@ -42994,20 +42670,17 @@ }, /area/maintenance/department/engine) "cab" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cac" = ( -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cad" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, /turf/open/floor/plating, -/area/shuttle/auxillary_base) +/area/construction/mining/aux_base) +"cad" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/construction/mining/aux_base) "cae" = ( /obj/structure/plasticflaps{ opacity = 1 @@ -43263,6 +42936,17 @@ name = "Turbine Interior Airlock"; req_access_txt = "24" }, +/obj/machinery/embedded_controller/radio/airlock_controller{ + airpump_tag = "incinerator_airlock_pump"; + exterior_door_tag = "incinerator_airlock_exterior"; + id_tag = "incinerator_airlock_control"; + interior_door_tag = "incinerator_airlock_interior"; + name = "Incinerator Access Console"; + pixel_x = -6; + pixel_y = -26; + sanitize_external = 1; + sensor_tag = "incinerator_airlock_sensor" + }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "caM" = ( @@ -43296,10 +42980,7 @@ icon_state = "4-8" }, /obj/machinery/igniter{ - icon_state = "igniter0"; - id = "Incinerator"; - luminosity = 2; - on = 0 + id = "Incinerator" }, /obj/machinery/air_sensor/atmos/incinerator_tank{ pixel_x = 32; @@ -43573,24 +43254,12 @@ "cbB" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Incinerator to Output"; - on = 0 + name = "Incinerator to Output" }, /obj/machinery/atmospherics/pipe/simple/general/visible, /turf/open/floor/plasteel/dark, /area/maintenance/disposal/incinerator) "cbC" = ( -/obj/machinery/embedded_controller/radio/airlock_controller{ - name = "Incinerator Access Console"; - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_access_control"; - interior_door_tag = "incinerator_airlock_interior"; - pixel_x = 26; - pixel_y = 6; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor" - }, /obj/machinery/button/ignition{ id = "Incinerator"; pixel_x = 26; @@ -43934,15 +43603,6 @@ /obj/structure/table/optable, /turf/open/floor/plating, /area/maintenance/department/engine) -"ccP" = ( -/obj/machinery/light, -/obj/machinery/camera{ - c_tag = "Auxillary Mining Base"; - dir = 1; - network = list("ss13","auxbase") - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "ccQ" = ( /obj/machinery/field/generator, /turf/open/floor/plating, @@ -44162,28 +43822,6 @@ /obj/item/cigbutt, /turf/open/floor/plating, /area/maintenance/department/engine) -"cdF" = ( -/obj/structure/closet/secure_closet/miner/unlocked, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cdG" = ( -/obj/docking_port/mobile/auxillary_base{ - dheight = 5; - dir = 1; - dwidth = 5; - height = 11; - width = 11 - }, -/obj/machinery/bluespace_beacon, -/obj/machinery/computer/auxillary_base, -/turf/closed/wall, -/area/shuttle/auxillary_base) -"cdH" = ( -/obj/structure/mining_shuttle_beacon{ - dir = 4 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "cdI" = ( /obj/machinery/field/generator, /obj/machinery/camera{ @@ -44416,12 +44054,6 @@ }, /turf/open/floor/plating/asteroid, /area/chapel/asteroid/monastery) -"cep" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "ceq" = ( /obj/machinery/power/emitter, /turf/open/floor/plating, @@ -45034,22 +44666,12 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) -"cgo" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "cgp" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cgq" = ( /obj/effect/turf_decal/stripes/line{ - dir = 6 + dir = 1 }, /turf/open/floor/plating, -/area/shuttle/auxillary_base) +/area/construction/mining/aux_base) "cgr" = ( /obj/structure/window/reinforced/fulltile, /obj/structure/transit_tube, @@ -45207,6 +44829,13 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) +"cgV" = ( +/obj/machinery/field/generator{ + anchored = 1; + state = 2 + }, +/turf/open/floor/plating/airless, +/area/space) "cgY" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -45350,6 +44979,20 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) +"chx" = ( +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"chz" = ( +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless, +/area/engine/engineering) "chA" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -45544,6 +45187,24 @@ /obj/structure/grille, /turf/open/floor/plating/airless, /area/engine/engineering) +"cii" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating/airless, +/area/space) +"cij" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/space) +"cik" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating/airless, +/area/space) "cio" = ( /obj/structure/closet/cabinet, /obj/item/clothing/suit/holidaypriest, @@ -45582,6 +45243,22 @@ /obj/structure/grille, /turf/open/floor/plating/airless, /area/engine/engineering) +"cis" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/space) +"cit" = ( +/obj/machinery/the_singularitygen/tesla, +/turf/open/floor/plating/airless, +/area/space) +"ciu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space) "civ" = ( /obj/machinery/light{ dir = 4 @@ -45636,6 +45313,24 @@ }, /turf/open/floor/plasteel/grimy, /area/chapel/main/monastery) +"ciG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating/airless, +/area/space) +"ciH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plating/airless, +/area/space) +"ciI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating/airless, +/area/space) "ciJ" = ( /obj/structure/closet/emcloset, /obj/effect/decal/cleanable/cobweb, @@ -45824,7 +45519,6 @@ height = 22; id = "whiteship_home"; name = "monastery"; - turf_type = /turf/open/space; width = 35 }, /turf/open/space/basic, @@ -45905,7 +45599,7 @@ invuln = 1; luminosity = 3; name = "Hardened Bomb-Test Camera"; - network = list("ss13", "rd", "toxins"); + network = list("ss13","rd","toxins"); use_power = 0 }, /turf/open/floor/plating/asteroid/airless, @@ -45975,10 +45669,9 @@ /turf/open/floor/plating, /area/maintenance/department/chapel/monastery) "cki" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Air Out"; - on = 1 + name = "Air Out" }, /turf/open/floor/plating, /area/maintenance/department/chapel/monastery) @@ -46397,10 +46090,9 @@ /turf/closed/wall, /area/tcommsat/computer) "clM" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Waste Out"; - on = 1 + name = "Waste Out" }, /turf/open/floor/plating, /area/tcommsat/computer) @@ -46454,10 +46146,9 @@ /turf/open/floor/plating, /area/tcommsat/computer) "clV" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 0; - name = "Air Out"; - on = 1 + name = "Air Out" }, /obj/machinery/light/small{ dir = 4 @@ -46936,7 +46627,7 @@ invuln = 1; luminosity = 3; name = "Hardened Bomb-Test Camera"; - network = list("ss13", "rd", "toxins"); + network = list("ss13","rd","toxins"); use_power = 0 }, /turf/open/floor/plating/asteroid/airless, @@ -47086,11 +46777,6 @@ /obj/structure/punching_bag, /turf/open/floor/plasteel/showroomfloor, /area/security/main) -"cnW" = ( -/obj/structure/grille, -/obj/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_1) "cnX" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance, @@ -50262,20 +49948,55 @@ dir = 1 }, /area/science/circuit) +"eAP" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"eDm" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/stairs, +/area/crew_quarters/cryopod) +"eIh" = ( +/obj/machinery/chem_master/condimaster, +/turf/open/floor/plasteel/hydrofloor, +/area/hydroponics) "eQR" = ( /obj/effect/spawner/lootdrop/two_percent_xeno_egg_spawner, /turf/open/floor/engine, /area/science/xenobiology) +"fmr" = ( +/obj/docking_port/stationary{ + area_type = /area/construction/mining/aux_base; + dheight = 4; + dir = 2; + dwidth = 4; + height = 9; + id = "aux_base_zone"; + name = "aux base zone"; + roundstart_template = /datum/map_template/shuttle/aux_base/default; + width = 9 + }, +/turf/open/floor/plating, +/area/construction/mining/aux_base) "fon" = ( /obj/structure/lattice, /obj/structure/grille, /turf/open/space/basic, /area/space/nearstation) "fuR" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 4; - filter_type = "n2"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2{ + dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -50284,6 +50005,17 @@ dir = 6 }, /area/science/circuit) +"fwj" = ( +/obj/machinery/cryopod{ + tag = "icon-cryopod-open (EAST)"; + icon_state = "cryopod-open"; + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) "fwl" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -50319,10 +50051,20 @@ "fKj" = ( /turf/closed/wall, /area/science/circuit) +"fKW" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space) "fWv" = ( /obj/structure/bookcase/random/religion, /turf/open/floor/plasteel/dark, /area/library/lounge) +"fYp" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/darkpurple, +/area/crew_quarters/cryopod) "gkR" = ( /obj/item/twohanded/required/kirbyplants/random, /obj/structure/extinguisher_cabinet{ @@ -50394,6 +50136,10 @@ }, /turf/open/floor/carpet, /area/library) +"inD" = ( +/obj/machinery/cryopod, +/turf/open/floor/plasteel/darkpurple, +/area/crew_quarters/cryopod) "izB" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod" @@ -50413,6 +50159,10 @@ /obj/effect/turf_decal/box/red, /turf/open/floor/plasteel/white, /area/science/circuit) +"iEY" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) "iIy" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -50537,6 +50287,11 @@ "kwI" = ( /turf/open/floor/plasteel, /area/science/mixing) +"kAy" = ( +/obj/effect/spawner/structure/window, +/obj/structure/sign/departments/evac, +/turf/open/floor/plating, +/area/hallway/secondary/exit/departure_lounge) "kAz" = ( /obj/structure/cable{ icon_state = "1-2" @@ -50545,6 +50300,15 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/department/cargo) +"kEM" = ( +/obj/structure/sign/directions/evac{ + dir = 1; + pixel_x = -32 + }, +/turf/open/floor/plasteel/green/corner{ + dir = 1 + }, +/area/hallway/primary/central) "lju" = ( /obj/machinery/vending/snack/random, /turf/open/floor/plasteel/purple/corner{ @@ -50576,6 +50340,9 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/science/circuit) +"lKs" = ( +/turf/closed/wall, +/area/crew_quarters/cryopod) "lQn" = ( /turf/open/floor/plasteel/white, /area/science/circuit) @@ -50589,6 +50356,13 @@ dir = 8 }, /area/bridge) +"lZH" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/darkpurple, +/area/crew_quarters/cryopod) "mau" = ( /obj/structure/lattice, /obj/structure/grille/broken, @@ -50604,6 +50378,27 @@ /obj/item/stack/cable_coil, /turf/open/floor/plasteel/whitepurple/side, /area/science/lab) +"myu" = ( +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "bridge blast door" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/command/glass{ + name = "Bridge"; + req_access_txt = "19" + }, +/obj/effect/turf_decal/delivery, +/obj/structure/sign/directions/evac{ + dir = 1; + pixel_x = 32 + }, +/turf/open/floor/plasteel/vault, +/area/bridge) "mCe" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -50636,6 +50431,11 @@ /obj/item/screwdriver, /turf/open/floor/plasteel/white, /area/science/circuit) +"niB" = ( +/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/structure/table, +/turf/open/floor/plasteel/dark, +/area/security/prison) "not" = ( /obj/item/cigbutt, /turf/open/floor/plasteel/white, @@ -50652,6 +50452,9 @@ dir = 5 }, /area/science/circuit) +"oif" = ( +/turf/open/floor/plasteel/darkpurple, +/area/crew_quarters/cryopod) "onw" = ( /turf/open/floor/plasteel/purple/side{ dir = 4 @@ -50669,6 +50472,9 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/storage/primary) +"oEA" = ( +/turf/closed/wall, +/area/construction/mining/aux_base) "oEG" = ( /obj/machinery/bookbinder, /turf/open/floor/plasteel/purple/side{ @@ -50708,6 +50514,18 @@ /obj/item/device/integrated_electronics/analyzer, /turf/open/floor/plasteel/white, /area/science/circuit) +"pRP" = ( +/obj/machinery/power/apc{ + areastring = "/area/crew_quarters/cryopod"; + dir = 1; + name = "Crew Cryogenics APC"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/darkpurple, +/area/crew_quarters/cryopod) "pWF" = ( /obj/structure/table/reinforced, /obj/machinery/light{ @@ -50810,6 +50628,12 @@ }, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) +"rAU" = ( +/obj/machinery/computer/cryopod{ + pixel_y = 24 + }, +/turf/open/floor/plasteel/darkpurple, +/area/crew_quarters/cryopod) "rBh" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line{ @@ -50858,10 +50682,46 @@ }, /turf/open/floor/plating, /area/quartermaster/storage) +"sTR" = ( +/obj/machinery/cryopod, +/obj/machinery/light/small/built{ + dir = 4 + }, +/turf/open/floor/plasteel/darkpurple, +/area/crew_quarters/cryopod) +"sUS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "thA" = ( /obj/machinery/atmospherics/pipe/simple/general/hidden, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"tHk" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/sign/directions/evac{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"tSS" = ( +/obj/machinery/conveyor/inverted{ + dir = 10; + id = "garbage" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"tWt" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/departments/evac, +/turf/open/floor/plating, +/area/hallway/secondary/exit/departure_lounge) "tYg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -50880,6 +50740,10 @@ /obj/item/device/integrated_electronics/analyzer, /turf/open/floor/plasteel/white, /area/science/circuit) +"ukn" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/construction/mining/aux_base) "ulu" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -50919,6 +50783,18 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"uYl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "vpz" = ( /obj/structure/table/reinforced, /obj/machinery/computer/security/telescreen{ @@ -51023,6 +50899,13 @@ }, /turf/open/floor/plating, /area/crew_quarters/heads/cmo) +"wMV" = ( +/obj/machinery/conveyor/inverted{ + dir = 6; + id = "garbage" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) "wTO" = ( /obj/machinery/vending/assist, /turf/open/floor/plasteel/purple/corner{ @@ -69689,7 +69572,7 @@ aHA aHA aHA aKB -aHA +tWt aKB aHA aHA @@ -70669,8 +70552,8 @@ aem aem aem aeT -aaB -aaC +afn +fwj afZ agn agy @@ -70925,9 +70808,9 @@ abI aem aeo aeC -aaA +niB aeU -aaD +afC aeU aeU agy @@ -74114,19 +73997,19 @@ bva bva bDi bva -bva -bva -bva -bva -bva -bva -bva -bva -bva -cqy -cqy -bva -bva +oEA +oEA +oEA +oEA +oEA +oEA +oEA +oEA +oEA +ukn +ukn +oEA +oEA aaa aaa aaa @@ -74371,7 +74254,7 @@ bva bWj bWZ bXS -bva +oEA bZs cab cab @@ -74382,8 +74265,8 @@ cab cab cab cab -cgo -bva +bZs +oEA aaa aaa aaa @@ -74572,7 +74455,7 @@ aOs aPv aQz aRH -aRH +kAy aRH aUJ aVQ @@ -74628,19 +74511,19 @@ bVt bWk bXa bXT -cqy +ukn bZt -cac -cac -cac -cac -cac -cac -cac -cac -cac +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs cgp -cqy +ukn aaa aaa aaa @@ -74887,17 +74770,17 @@ bDi bSw bYF bZt -cac -cac -cac -cac -cac -cac -cac -cac -cac +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs cgp -cqy +ukn aaa aaa aaa @@ -75142,19 +75025,19 @@ bVu bNX bDi bDi -cqy +ukn bZt -cac -cac -cac -cac -cac -cac -cac -cac -cac +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs cgp -cqy +ukn aaa aaa aaa @@ -75332,7 +75215,7 @@ aDv aBh aBh aGd -aEY +tHk aHG aIM aJG @@ -75399,19 +75282,19 @@ bVv bSw bPC bXU -bva +oEA bZt -cac -cac -cac -cac -cdF -cac -cac -cac -cac +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs cgp -bva +oEA aaa aaa aaa @@ -75656,19 +75539,19 @@ bVw bDi bDi bXV -cqy -bZu -cac -cac -cac -ccP -cdG -cep -cac -cac -cac +ukn +bZt +bZs +bZs +bZs +bZs +fmr +bZs +bZs +bZs +bZs cgp -bva +oEA aaa aaa aaa @@ -75913,19 +75796,19 @@ bVx bPC bXb bDi -bva +oEA bZt -cac -cac -cac -cac -cdH -cac -cac -cac -cac +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs cgp -bva +oEA aaa aaa aaa @@ -76170,19 +76053,19 @@ bVy bDi bXc bDi -cqy +ukn bZt -cac -cac -cac -cac -cac -cac -cac -cac -cac +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs cgp -cqy +ukn aaa aaa aaa @@ -76429,17 +76312,17 @@ bSw bDi bVq bZt -cac -cac -cac -cac -cac -cac -cac -cac -cac +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs cgp -cqy +ukn aaa aaa aaa @@ -76684,19 +76567,19 @@ bVz bWm bSw bNX -cqy +ukn bZt -cac -cac -cac -cac -cac -cac -cac -cac -cac +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs +bZs cgp -cqy +ukn aaa aaa aaa @@ -76941,8 +76824,8 @@ bva bva bDi cBj -bva -bZv +oEA +bZs cad cad cad @@ -76952,8 +76835,8 @@ cad cad cad cad -cgq -bva +bZs +oEA aaa aaa aaa @@ -77198,19 +77081,19 @@ bDi bDi bNK bva -bva -bva -bva -bva -bva -bva -bva -bva -bva -cqy -cqy -bva -bva +oEA +oEA +oEA +oEA +oEA +oEA +oEA +oEA +oEA +ukn +ukn +oEA +oEA aaa aaa aaa @@ -77658,7 +77541,7 @@ aQJ aRL aSD aTT -aTV +eIh aRL aWR aXT @@ -78697,7 +78580,7 @@ bcb bdn bel bdn -bdn +kEM aJI aDZ bik @@ -80472,7 +80355,7 @@ aDJ aEC aDJ aAA -aHe +myu aHU aIV aJS @@ -81066,13 +80949,13 @@ cfV cfV cgv cfV -aao +chx cfV -aao +chx cfV -aao +chx cfV -aao +chx cfV cfV bTE @@ -81322,15 +81205,15 @@ cCI cfV cfU cgv -aan +cgV bBW bBW -aan -aht +cgV +iEY aaa bBW bBW -aan +cgV cfV bTE abI @@ -81582,8 +81465,8 @@ cgv bBW bBW bBW -aht -abI +iEY +fKW aaa bBW bBW @@ -81839,9 +81722,9 @@ cgv bBW bBW aaa -aaq -abI -aaq +aaa +fKW +aaa aaa bBW bBW @@ -82095,13 +81978,13 @@ cfa cgv aaa aaa -aaq -aar -aau -aax -aaq -aht -aan +aaa +cii +cis +ciG +aaa +iEY +cgV cfV bTE abI @@ -82350,15 +82233,15 @@ cfd cfw cfW cgw -aht -abI -abI -aas -aav -aay -abI -abI -aht +iEY +fKW +fKW +cij +cit +ciH +fKW +fKW +iEY cfV bTE abI @@ -82607,13 +82490,13 @@ cfe cfx cfa cgv -aan -aht -aaq -aat -aaw -aaz -aaq +cgV +iEY +aaa +cik +ciu +ciI +aaa aaa aaa cfV @@ -82867,9 +82750,9 @@ cgv bBW bBW aaa -aaq -abI -aaq +aaa +fKW +aaa aaa bBW bBW @@ -83125,8 +83008,8 @@ bBW bBW aaa aaa -abI -aht +fKW +iEY aaa bBW bBW @@ -83378,15 +83261,15 @@ cCI cfV cfU cgv -aan +cgV bBW aaa aaa -aht -aan +iEY +cgV bBW bBW -aan +cgV cfV bTE abI @@ -83636,13 +83519,13 @@ cfV cfV cgv cfV -aap +chz cfV -aap +chz cfV -aap +chz cfV -aap +chz cfV cfV bTE @@ -87665,12 +87548,12 @@ aaa aaa aaa aaa -aab -aac -aaf -aai -aak -aam +lKs +pRP +fYp +eDm +uYl +eAP aJI aLe aMe @@ -87922,11 +87805,11 @@ aaa aaa aaa aaa -aab -aad -aag -aaj -aal +lKs +rAU +oif +lZH +sUS aIU aJH aLe @@ -88179,10 +88062,10 @@ apX aBL aBL apX -aab -aae -aah -aab +lKs +sTR +inD +lKs aHN aIU aJI @@ -90218,11 +90101,11 @@ alf aaa aaa aaa -ann -ann -cnW -ann -aqX +aaa +aaa +aaa +aaa +aaa apX apX aul @@ -90474,12 +90357,12 @@ akn alg aaa aaa -ann -ann -aoE -apx -apY -aqX +aaa +aaa +aaa +aaa +aaa +aaa ash ash ash @@ -90731,11 +90614,11 @@ ako alg aaa aaa -cnW -aoc -aoF -aoF -aoF +aaa +aaa +aaa +aaa +aaa aqY asi atk @@ -90988,12 +90871,12 @@ akn alg aaa aaa -ann -ann -aoG -apy -apZ -aqX +aaa +aaa +aaa +aaa +aaa +aaa asj atl aum @@ -91246,11 +91129,11 @@ alh aaa aaa aaa -ann -ann -cnW -ann -aqX +aaa +aaa +aaa +aaa +aaa apX apX apX @@ -91769,7 +91652,7 @@ aiS atm aun atn -aaE +awx axw ayu azC @@ -97698,8 +97581,8 @@ aaa aLo aMG aNX -aPh -aQo +wMV +tSS aRy aSn aTA diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm index 79448b7dad..652bba382a 100644 --- a/_maps/map_files/debug/runtimestation.dmm +++ b/_maps/map_files/debug/runtimestation.dmm @@ -257,9 +257,8 @@ }, /area/engine/atmos) "aO" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -374,9 +373,8 @@ }, /area/engine/atmos) "bc" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8 }, /turf/open/floor/plasteel, /area/engine/atmos) diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 4c663f9219..4804bc4534 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -1918,7 +1918,7 @@ /turf/closed/indestructible/riveted, /area/space) "fy" = ( -/obj/machinery/igniter, +/obj/machinery/igniter/on, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/tdome/arena_source) @@ -2526,10 +2526,6 @@ /obj/machinery/capture_the_flag/red, /turf/open/floor/circuit/green/anim, /area/ctf) -"hH" = ( -/obj/effect/landmark/shuttle_import, -/turf/open/space, -/area/space) "hI" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -2994,19 +2990,17 @@ /turf/open/floor/plating, /area/centcom/supply) "jc" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "XCCQMLoad2"; - movedir = 2 - }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/conveyor{ + dir = 1; + id = "XCCQMLoad2" + }, /turf/open/floor/plasteel, /area/centcom/supply) "jd" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = 1; id = "XCCQMLoad2"; pixel_x = 6 }, @@ -3074,26 +3068,24 @@ id = "XCCQMLoaddoor2"; name = "Supply Dock Loading Door" }, -/obj/machinery/conveyor{ - dir = 4; - id = "XCCQMLoad2"; - movedir = 8 - }, /obj/effect/turf_decal/stripes/end{ dir = 8 }, +/obj/machinery/conveyor{ + dir = 4; + id = "XCCQMLoad2" + }, /turf/open/floor/plasteel, /area/centcom/supply) "jl" = ( /obj/structure/plasticflaps, -/obj/machinery/conveyor{ - dir = 4; - id = "XCCQMLoad2"; - movedir = 8 - }, /obj/effect/turf_decal/stripes/line{ dir = 2 }, +/obj/machinery/conveyor{ + dir = 4; + id = "XCCQMLoad2" + }, /turf/open/floor/plasteel, /area/centcom/supply) "jm" = ( @@ -3102,23 +3094,21 @@ id = "XCCQMLoaddoor2"; name = "Supply Dock Loading Door" }, -/obj/machinery/conveyor{ - dir = 4; - id = "XCCQMLoad2"; - movedir = 8 - }, /obj/effect/turf_decal/stripes/line{ dir = 2 }, +/obj/machinery/conveyor{ + dir = 4; + id = "XCCQMLoad2" + }, /turf/open/floor/plasteel, /area/centcom/supply) "jn" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "XCCQMLoad2"; - movedir = 2 - }, /obj/effect/turf_decal/stripes/end, +/obj/machinery/conveyor/inverted{ + dir = 10; + id = "XCCQMLoad2" + }, /turf/open/floor/plasteel, /area/centcom/supply) "jo" = ( @@ -3314,13 +3304,13 @@ /turf/open/floor/plasteel, /area/centcom/supply) "jL" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "XCCQMLoad" - }, /obj/effect/turf_decal/stripes/end{ dir = 1 }, +/obj/machinery/conveyor/inverted{ + dir = 6; + id = "XCCQMLoad2" + }, /turf/open/floor/plasteel, /area/centcom/supply) "jM" = ( @@ -3334,20 +3324,9 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/centcom/supply) -"jO" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "XCCQMLoad"; - movedir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/centcom/supply) "jP" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = 1; + dir = 8; id = "XCCQMLoad"; pixel_x = 6 }, @@ -3525,7 +3504,6 @@ height = 50; id = "emergency_syndicate"; name = "Syndicate Auxillary Shuttle Dock"; - turf_type = /turf/open/floor/plating/asteroid/snow; width = 50 }, /turf/open/floor/plating/asteroid/snow/airless, @@ -6967,21 +6945,6 @@ }, /turf/open/floor/plating/airless, /area/syndicate_mothership/control) -"tj" = ( -/obj/machinery/porta_turret/syndicate/pod, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/assault_pod) -"tk" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/assault_pod) -"tl" = ( -/obj/machinery/door/airlock/centcom{ - name = "Assault Pod"; - opacity = 1; - req_access_txt = "150" - }, -/turf/open/floor/plating, -/area/shuttle/assault_pod) "tn" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -7302,21 +7265,6 @@ }, /turf/open/floor/plating/airless, /area/syndicate_mothership/control) -"uf" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/assault_pod) -"ug" = ( -/turf/open/floor/mineral/plastitanium, -/area/shuttle/assault_pod) -"uh" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/assault_pod) "ui" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -7542,13 +7490,6 @@ }, /turf/open/floor/mineral/plastitanium, /area/syndicate_mothership/control) -"uN" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/light, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/assault_pod) "uO" = ( /obj/machinery/door/airlock/centcom{ name = "Shuttle Control Office"; @@ -7776,19 +7717,6 @@ /obj/item/toy/nuke, /turf/open/floor/wood, /area/syndicate_mothership/control) -"vy" = ( -/obj/machinery/door/airlock/centcom{ - aiControlDisabled = 1; - name = "Assault Pod"; - opacity = 1; - req_access_txt = "150" - }, -/turf/open/floor/plating, -/area/shuttle/assault_pod) -"vz" = ( -/obj/machinery/computer/shuttle/syndicate/drop_pod, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/assault_pod) "vA" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/directions/engineering{ @@ -8083,13 +8011,6 @@ dir = 2 }, /area/syndicate_mothership/control) -"wq" = ( -/obj/structure/chair, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/assault_pod) "wr" = ( /obj/structure/chair{ dir = 4 @@ -8532,20 +8453,17 @@ /turf/open/floor/plating/airless, /area/syndicate_mothership/control) "xN" = ( -/obj/machinery/door/airlock/centcom{ - aiControlDisabled = 1; - name = "Assault Pod"; - opacity = 1; - req_access_txt = "150" - }, -/obj/docking_port/mobile/assault_pod{ +/obj/docking_port/stationary{ + area_type = /area/syndicate_mothership/control; + dir = 1; dwidth = 3; - name = "steel rain"; - port_direction = 4; - preferred_direction = 4 + height = 7; + name = "escape pod loader"; + roundstart_template = /datum/map_template/shuttle/assault_pod/default; + width = 7 }, -/turf/open/floor/plating, -/area/shuttle/assault_pod) +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) "xO" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -12150,7 +12068,7 @@ }, /area/tdome/tdomeobserve) "Is" = ( -/obj/machinery/igniter, +/obj/machinery/igniter/on, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/tdome/arena) @@ -13452,7 +13370,6 @@ "My" = ( /obj/docking_port/stationary{ area_type = /area/syndicate_mothership; - baseturf_type = /turf/open/floor/plating/asteroid/snow; dheight = 1; dir = 8; dwidth = 12; @@ -13460,7 +13377,6 @@ id = "syndicate_away"; name = "syndicate recon outpost"; roundstart_template = /datum/map_template/shuttle/infiltrator/basic; - turf_type = /turf/open/floor/plating/asteroid/snow; width = 23 }, /turf/open/floor/plating/asteroid/snow/airless, @@ -13564,6 +13480,10 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"VX" = ( +/obj/effect/landmark/shuttle_import, +/turf/open/space/basic, +/area/space) "Wc" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; @@ -34918,11 +34838,11 @@ aa ku sl ti -tj -tk -vy -tk -tj +sk +sk +sk +sk +sk xM yk ku @@ -35174,13 +35094,13 @@ hh aa ku sm -tj -tk -uf -ug -uf -tk -tj +sk +sk +sk +sk +sk +sk +sk yl ku aa @@ -35431,13 +35351,13 @@ hh aa ku sn -tk -uf -ug -uh -ug -uf -tk +sk +sk +sk +sk +sk +sk +sk ym ku aa @@ -35688,12 +35608,12 @@ hh aa ku sm -tl -ug -uN -vz -wq -ug +sk +sk +sk +sk +sk +sk xN yl ku @@ -35945,13 +35865,13 @@ hh aa ku sm -tk -uh -ug -uf -ug -uh -tk +sk +sk +sk +sk +sk +sk +sk yl ku aa @@ -36079,7 +35999,7 @@ aa aa aa aa -aa +VX aa aa aa @@ -36202,13 +36122,13 @@ hh aa ku so -tj -tk -uh -ug -uh -tk -tj +sk +sk +sk +sk +sk +sk +sk yl ku aa @@ -36460,11 +36380,11 @@ aa ku sp tn -tj -tk -vy -tk -tj +sk +sk +sk +sk +sk xO xP ku @@ -44622,7 +44542,7 @@ aa aa aa aa -hH +ad aa aa aa @@ -53659,9 +53579,9 @@ iP jy jD jL -jO -jO -jO +jc +jc +jc iO iO iX diff --git a/_maps/shuttles/arrival_omega.dmm b/_maps/shuttles/arrival_omega.dmm new file mode 100644 index 0000000000..36808ab760 --- /dev/null +++ b/_maps/shuttles/arrival_omega.dmm @@ -0,0 +1,311 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/arrival) +"c" = ( +/obj/docking_port/mobile/arrivals{ + dir = 2; + dwidth = 2; + height = 16; + name = "omega arrivals shuttle"; + width = 5 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/arrival) +"d" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/arrival) +"e" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/obj/structure/window/reinforced, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/arrival) +"f" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/arrival) +"g" = ( +/obj/structure/closet/wardrobe/grey{ + anchored = 1 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/neutral/corner, +/area/shuttle/arrival) +"h" = ( +/obj/structure/closet/emcloset{ + anchored = 1 + }, +/obj/machinery/vending/wallmed{ + pixel_y = 32 + }, +/obj/item/storage/toolbox/emergency, +/obj/item/storage/toolbox/emergency, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/head/hardhat/orange, +/obj/item/clothing/head/hardhat/orange, +/obj/item/clothing/head/hardhat/orange, +/obj/item/clothing/head/hardhat/orange, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/neutral/side, +/area/shuttle/arrival) +"i" = ( +/obj/structure/closet/wardrobe/mixed{ + anchored = 1 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/neutral/corner{ + dir = 8 + }, +/area/shuttle/arrival) +"j" = ( +/obj/machinery/door/airlock/shuttle, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating, +/area/shuttle/arrival) +"k" = ( +/obj/effect/turf_decal/caution{ + dir = 4 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/shuttle/arrival) +"l" = ( +/turf/open/floor/plasteel/neutral, +/area/shuttle/arrival) +"m" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/sign/poster/official/enlist{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8 + }, +/area/shuttle/arrival) +"n" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -26 + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/shuttle/arrival) +"o" = ( +/obj/item/twohanded/required/kirbyplants/random, +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, +/area/shuttle/arrival) +"p" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/arrival) +"q" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/arrival) +"r" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/arrival) +"s" = ( +/obj/structure/table/reinforced, +/obj/item/device/radio/intercom{ + pixel_x = -30 + }, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/plasteel, +/area/shuttle/arrival) +"t" = ( +/obj/structure/table/reinforced, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/cell_charger, +/turf/open/floor/plasteel/neutral/side{ + dir = 8 + }, +/area/shuttle/arrival) +"u" = ( +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/shuttle/arrival) +"v" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/shuttle/arrival) +"w" = ( +/obj/structure/closet/crate/internals, +/obj/item/storage/firstaid/o2, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, +/area/shuttle/arrival) +"x" = ( +/obj/machinery/door/airlock/shuttle/glass, +/turf/open/floor/plasteel, +/area/shuttle/arrival) +"y" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/chair/office/light, +/turf/open/floor/plasteel, +/area/shuttle/arrival) +"z" = ( +/obj/machinery/computer{ + dir = 1; + name = "Shuttle computer" + }, +/turf/open/floor/plasteel, +/area/shuttle/arrival) +"C" = ( +/obj/structure/table/reinforced, +/obj/item/storage/pill_bottle/dice{ + pixel_x = -2; + pixel_y = 8 + }, +/obj/item/toy/cards/deck, +/obj/machinery/requests_console{ + department = "Arrival shuttle"; + name = "Arrival shuttle requests console"; + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/shuttle/arrival) +"F" = ( +/obj/structure/sign/nanotrasen, +/turf/closed/wall/mineral/titanium, +/area/shuttle/arrival) + +(1,1,1) = {" +a +d +f +j +f +p +p +d +p +p +j +F +f +a +a +a +"} +(2,1,1) = {" +b +e +g +k +n +q +q +s +q +q +k +u +f +f +p +p +"} +(3,1,1) = {" +c +d +h +l +l +l +l +l +l +l +l +v +x +y +z +p +"} +(4,1,1) = {" +b +e +i +m +o +r +r +C +r +r +t +w +f +f +p +p +"} +(5,1,1) = {" +a +d +f +f +f +p +p +d +p +p +f +F +f +a +a +a +"} diff --git a/_maps/shuttles/assault_pod_default.dmm b/_maps/shuttles/assault_pod_default.dmm new file mode 100644 index 0000000000..b9a49c7d6a --- /dev/null +++ b/_maps/shuttles/assault_pod_default.dmm @@ -0,0 +1,141 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"b" = ( +/obj/machinery/porta_turret/syndicate/pod, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/assault_pod) +"c" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/assault_pod) +"d" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/assault_pod) +"e" = ( +/obj/machinery/door/airlock/centcom{ + aiControlDisabled = 1; + name = "Assault Pod"; + opacity = 1; + req_access_txt = "150" + }, +/obj/docking_port/mobile/assault_pod{ + dwidth = 3; + name = "steel rain"; + port_direction = 4; + preferred_direction = 4; + timid = 1 + }, +/turf/open/floor/plating, +/area/shuttle/assault_pod) +"h" = ( +/obj/machinery/computer/shuttle/syndicate/drop_pod, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/assault_pod) +"p" = ( +/turf/open/floor/mineral/plastitanium, +/area/shuttle/assault_pod) +"t" = ( +/obj/machinery/door/airlock/centcom{ + aiControlDisabled = 1; + name = "Assault Pod"; + opacity = 1; + req_access_txt = "150" + }, +/turf/open/floor/plating, +/area/shuttle/assault_pod) +"D" = ( +/obj/structure/chair, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/assault_pod) +"H" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/assault_pod) +"L" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/assault_pod) +"R" = ( +/obj/machinery/door/airlock/centcom{ + name = "Assault Pod"; + opacity = 1; + req_access_txt = "150" + }, +/turf/open/floor/plating, +/area/shuttle/assault_pod) +"V" = ( +/turf/template_noop, +/area/template_noop) + +(1,1,1) = {" +V +b +d +t +d +b +V +"} +(2,1,1) = {" +b +d +c +p +c +d +b +"} +(3,1,1) = {" +d +c +p +H +p +c +d +"} +(4,1,1) = {" +R +p +L +h +D +p +e +"} +(5,1,1) = {" +d +H +p +c +p +H +d +"} +(6,1,1) = {" +b +d +H +p +H +d +b +"} +(7,1,1) = {" +V +b +d +t +d +b +V +"} diff --git a/_maps/shuttles/cargo_box.dmm b/_maps/shuttles/cargo_box.dmm index e4da4bf228..fb59a8082f 100644 --- a/_maps/shuttles/cargo_box.dmm +++ b/_maps/shuttles/cargo_box.dmm @@ -55,7 +55,7 @@ /area/shuttle/supply) "j" = ( /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "QMLoad" }, /obj/machinery/door/poddoor{ diff --git a/_maps/shuttles/emergency_arena.dmm b/_maps/shuttles/emergency_arena.dmm index b20ffddbc6..1314b8a732 100644 --- a/_maps/shuttles/emergency_arena.dmm +++ b/_maps/shuttles/emergency_arena.dmm @@ -65,6 +65,10 @@ /obj/structure/healingfountain, /turf/open/indestructible/necropolis/air, /area/shuttle/escape/arena) +"z" = ( +/obj/effect/landmark/shuttle_arena_safe, +/turf/open/indestructible/necropolis/air, +/area/shuttle/escape/arena) (1,1,1) = {" a @@ -309,16 +313,16 @@ h h j j +z j j -j -j +z j h +z j j -j -j +z j j j @@ -465,16 +469,16 @@ h h j j +z j j +z j j -j -j -j +z j h -j +z j j j diff --git a/_maps/shuttles/emergency_supermatter.dmm b/_maps/shuttles/emergency_supermatter.dmm index 796997b361..cea0df4757 100644 --- a/_maps/shuttles/emergency_supermatter.dmm +++ b/_maps/shuttles/emergency_supermatter.dmm @@ -112,7 +112,7 @@ /turf/open/floor/plating, /area/shuttle/escape) "aB" = ( -/obj/machinery/power/supermatter_shard/hugbox{ +/obj/machinery/power/supermatter_crystal/shard/hugbox{ anchored = 1; base_icon_state = "darkmatter"; explosion_power = 20; @@ -210,7 +210,7 @@ /turf/open/floor/plating/airless, /area/shuttle/escape) "aV" = ( -/obj/machinery/power/supermatter_shard/hugbox{ +/obj/machinery/power/supermatter_crystal/shard/hugbox{ anchored = 1; name = "anchored supermatter shard" }, diff --git a/_maps/shuttles/escape_pod_default.dmm b/_maps/shuttles/escape_pod_default.dmm new file mode 100644 index 0000000000..ec761e75cb --- /dev/null +++ b/_maps/shuttles/escape_pod_default.dmm @@ -0,0 +1,71 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"B" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/pod_1) +"G" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/machinery/computer/shuttle/pod{ + pixel_x = -32 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/pod_1) +"N" = ( +/obj/machinery/door/airlock/titanium{ + name = "Escape Pod Airlock" + }, +/obj/docking_port/mobile/pod{ + port_direction = 2; + timid = 1; + dwidth = 1; + width = 3; + height = 4 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/pod_1) +"Q" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/pod_1) +"U" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + pixel_x = 25 + }, +/obj/item/storage/pod{ + pixel_x = -26 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/pod_1) +"Z" = ( +/obj/structure/shuttle/engine/propulsion/burst, +/turf/closed/wall/mineral/titanium, +/area/shuttle/pod_1) + +(1,1,1) = {" +B +B +B +Z +"} +(2,1,1) = {" +Q +G +U +N +"} +(3,1,1) = {" +B +B +B +Z +"} diff --git a/_maps/shuttles/escape_pod_large.dmm b/_maps/shuttles/escape_pod_large.dmm new file mode 100644 index 0000000000..260f7ed0c6 --- /dev/null +++ b/_maps/shuttles/escape_pod_large.dmm @@ -0,0 +1,129 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"h" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/item/storage/pod{ + pixel_x = -24 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/pod_1) +"r" = ( +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/pod_1) +"u" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/pod_1) +"A" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + pixel_x = 30 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/pod_1) +"B" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/pod_1) +"C" = ( +/obj/machinery/computer/shuttle/monastery_shuttle, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/pod_1) +"H" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/pod_1) +"J" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/pod_1) +"L" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/pod_1) +"M" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/pod_1) +"O" = ( +/obj/machinery/door/airlock/titanium{ + name = "Shuttle Airlock" + }, +/obj/docking_port/mobile/pod{ + dwidth = 2; + height = 6; + launch_status = 0; + port_direction = 2; + timid = 1; + width = 5 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/pod_1) +"W" = ( +/turf/template_noop, +/area/template_noop) +"Z" = ( +/obj/structure/shuttle/engine/propulsion/burst, +/turf/closed/wall/mineral/titanium, +/area/shuttle/pod_1) + +(1,1,1) = {" +W +B +B +u +B +Z +"} +(2,1,1) = {" +B +B +J +L +h +Z +"} +(3,1,1) = {" +u +C +r +r +r +O +"} +(4,1,1) = {" +B +B +M +H +A +Z +"} +(5,1,1) = {" +W +B +B +u +B +Z +"} diff --git a/_maps/shuttles/ferry_lighthouse.dmm b/_maps/shuttles/ferry_lighthouse.dmm index b94e82c049..1f9520077d 100644 --- a/_maps/shuttles/ferry_lighthouse.dmm +++ b/_maps/shuttles/ferry_lighthouse.dmm @@ -263,10 +263,9 @@ /turf/open/floor/wood, /area/shuttle/transport) "bg" = ( -/obj/machinery/conveyor{ +/obj/machinery/conveyor/inverted{ dir = 10; - id = "garbage"; - verted = -1 + id = "garbage" }, /turf/open/floor/wood, /area/shuttle/transport) diff --git a/_maps/shuttles/pirate_default.dmm b/_maps/shuttles/pirate_default.dmm new file mode 100644 index 0000000000..a635cac326 --- /dev/null +++ b/_maps/shuttles/pirate_default.dmm @@ -0,0 +1,2323 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/template_noop, +/area/template_noop) +"ab" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "piratebridge" + }, +/obj/structure/grille, +/obj/structure/window/plastitanium, +/turf/open/floor/plating, +/area/shuttle/pirate) +"ac" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"ad" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/shuttle/pirate, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"ae" = ( +/obj/structure/table, +/obj/machinery/button/door{ + id = "piratebridge"; + name = "Bridge Shutters Control"; + pixel_y = -5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/device/radio/intercom{ + pixel_y = 5 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"af" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"ag" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"ah" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/monitor{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"ai" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/pirate) +"aj" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/pirate) +"ak" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/shuttle_scrambler, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"al" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -24; + req_access = null + }, +/obj/structure/chair{ + tag = "icon-chair (WEST)"; + icon_state = "chair"; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"am" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"an" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"ao" = ( +/obj/machinery/light/small, +/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/pirate{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"ap" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mob_spawn/human/pirate{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"aq" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = null + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"ar" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mob_spawn/human/pirate/gunner{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"as" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/command{ + name = "Bridge" + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"at" = ( +/obj/structure/closet/crate/freezer/blood, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white, +/area/shuttle/pirate) +"au" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = null + }, +/obj/machinery/sleeper, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/white, +/area/shuttle/pirate) +"av" = ( +/obj/machinery/iv_drip, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/white, +/area/shuttle/pirate) +"aw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mob_spawn/human/pirate/captain, +/turf/open/floor/wood, +/area/shuttle/pirate) +"ax" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock{ + name = "Crew Cabin" + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"ay" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/toolbox/emergency, +/obj/item/extinguisher, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"az" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"aA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"aB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = null + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"aC" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/paper_bin{ + pixel_x = -1; + pixel_y = 6 + }, +/obj/item/folder, +/obj/item/pen, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"aD" = ( +/obj/structure/sign/departments/medbay/alt, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/pirate) +"aE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/shuttle/pirate) +"aF" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/shuttle/pirate) +"aG" = ( +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/shuttle/pirate) +"aH" = ( +/obj/structure/closet/crate/freezer/surplus_limbs, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/shuttle/pirate) +"aI" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/latex, +/obj/item/surgical_drapes, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/shuttle/pirate) +"aJ" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24; + req_access = null + }, +/obj/structure/closet/secure_closet/personal, +/turf/open/floor/wood, +/area/shuttle/pirate) +"aK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/wood, +/area/shuttle/pirate) +"aL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock{ + name = "Captain's Quarters" + }, +/turf/open/floor/wood, +/area/shuttle/pirate) +"aM" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = null + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"aN" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"aO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"aP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/command{ + name = "Bridge" + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"aQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"aR" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"aS" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"aT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"aU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/command{ + name = "Bridge" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/shuttle/pirate) +"aV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 8 + }, +/area/shuttle/pirate) +"aW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"aX" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"aY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"aZ" = ( +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/shuttle/pirate) +"ba" = ( +/obj/structure/table, +/obj/item/circular_saw, +/obj/item/scalpel{ + pixel_y = 12 + }, +/obj/item/cautery{ + pixel_x = 4 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white, +/area/shuttle/pirate) +"bb" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/box/matches, +/obj/item/clothing/mask/cigarette/cigar, +/turf/open/floor/wood, +/area/shuttle/pirate) +"bc" = ( +/obj/machinery/button/door{ + id = "piratevault"; + name = "Vault Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -8; + pixel_y = -24; + specialfunctions = 4 + }, +/obj/machinery/turretid{ + icon_state = "control_kill"; + lethal = 1; + locked = 0; + pixel_x = 4; + pixel_y = -24; + req_access = null + }, +/obj/structure/chair{ + tag = "icon-chair (WEST)"; + icon_state = "chair"; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/shuttle/pirate) +"bd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"be" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/personal, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"bf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/personal, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"bg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/vault{ + id_tag = "piratevault"; + name = "Vault" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"bh" = ( +/obj/structure/table, +/obj/item/storage/firstaid/brute{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/fire, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 10 + }, +/area/shuttle/pirate) +"bi" = ( +/obj/machinery/light/small, +/obj/structure/table, +/obj/item/storage/box/syringes, +/obj/item/reagent_containers/glass/beaker{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/glass/beaker{ + pixel_x = 3 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side, +/area/shuttle/pirate) +"bj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white/side, +/area/shuttle/pirate) +"bk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side, +/area/shuttle/pirate) +"bl" = ( +/obj/structure/table/optable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 6 + }, +/area/shuttle/pirate) +"bm" = ( +/obj/structure/table, +/obj/item/retractor, +/obj/item/hemostat, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white, +/area/shuttle/pirate) +"bn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock{ + name = "Crew Quarters" + }, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"bo" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/pirate/vault) +"bp" = ( +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = null + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate/vault) +"bq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/pod/dark, +/area/shuttle/pirate/vault) +"br" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 28 + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate/vault) +"bs" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"bt" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_x = -32 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/suit_storage_unit/pirate, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shuttle/pirate) +"bu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"bv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"bw" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/storage/belt/utility, +/obj/item/device/radio/off, +/obj/item/device/radio/off, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"bx" = ( +/obj/structure/closet/crate, +/obj/item/grenade/smokebomb{ + pixel_x = -4 + }, +/obj/item/grenade/smokebomb{ + pixel_x = 2 + }, +/turf/open/floor/pod/light, +/area/shuttle/pirate/vault) +"by" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/shield/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/shield/riot, +/turf/open/floor/pod/light, +/area/shuttle/pirate/vault) +"bz" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/gun/energy/laser{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/laser, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/shuttle/pirate/vault) +"bA" = ( +/obj/structure/closet/crate, +/obj/item/storage/bag/money, +/turf/open/floor/pod/light, +/area/shuttle/pirate/vault) +"bB" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/storage/belt/utility, +/obj/item/device/radio/off, +/obj/item/device/radio/off, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"bC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"bD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"bE" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_x = 32 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/suit_storage_unit/pirate, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shuttle/pirate) +"bF" = ( +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/external{ + id_tag = "pirateportexternal" + }, +/obj/docking_port/mobile/pirate{ + callTime = 100; + dheight = 0; + dir = 4; + dwidth = 11; + height = 21; + id = "pirateship"; + launch_status = 0; + movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); + name = "Pirate Ship"; + port_direction = 8; + preferred_direction = 1; + timid = 0; + width = 23 + }, +/obj/docking_port/stationary{ + dir = 4; + dwidth = 11; + height = 21; + id = "pirateship_home"; + name = "Deep Space"; + width = 23 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/pirate) +"bG" = ( +/turf/open/floor/plating, +/area/shuttle/pirate) +"bH" = ( +/obj/machinery/door/airlock/external, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/pirate) +"bI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"bJ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"bK" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24; + req_access = null; + req_access_txt = "152" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/storage/toolbox/mechanical, +/obj/item/device/multitool, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"bL" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/structure/closet/crate, +/obj/item/storage/box/lethalshot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/shuttle/pirate/vault) +"bM" = ( +/turf/open/floor/pod/dark, +/area/shuttle/pirate/vault) +"bN" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/gun/ballistic/shotgun/automatic/combat, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/shuttle/pirate/vault) +"bO" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate/vault) +"bP" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/gun/energy/laser{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/laser, +/turf/open/floor/pod/light, +/area/shuttle/pirate/vault) +"bQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/item/stack/sheet/mineral/gold{ + amount = 3; + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/stack/sheet/mineral/silver{ + amount = 8; + pixel_x = 2; + pixel_y = -1 + }, +/turf/open/floor/pod/light, +/area/shuttle/pirate/vault) +"bR" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24; + req_access = null + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/weldingtool/largetank, +/obj/item/storage/toolbox/electrical, +/obj/item/clothing/head/welding{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"bS" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"bT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"bU" = ( +/obj/machinery/door/airlock/external, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/pirate) +"bV" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shuttle/pirate) +"bW" = ( +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/external{ + id_tag = "piratestarboardexternal" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/pirate) +"bX" = ( +/obj/structure/closet/emcloset/anchored, +/obj/machinery/button/door{ + id = "pirateportexternal"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -24; + specialfunctions = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shuttle/pirate) +"bY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"bZ" = ( +/obj/structure/closet/crate, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/shuttle/pirate/vault) +"ca" = ( +/obj/structure/closet/crate, +/obj/item/coin/gold, +/obj/item/coin/gold, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/gold, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/shuttle/pirate/vault) +"cb" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/bot, +/obj/item/mop, +/obj/item/reagent_containers/glass/bucket, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"cc" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"cd" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"ce" = ( +/obj/structure/closet/emcloset/anchored, +/obj/machinery/button/door{ + id = "piratestarboardexternal"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 24; + specialfunctions = 4 + }, +/turf/open/floor/plating, +/area/shuttle/pirate) +"cf" = ( +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks/beer{ + dir = 4 + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/bar, +/area/shuttle/pirate) +"cg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/public/glass{ + name = "Bar" + }, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"ch" = ( +/obj/structure/table, +/obj/machinery/door/window/southleft{ + base_state = "left"; + dir = 1; + icon_state = "left"; + name = "Explosive Ordinance" + }, +/obj/item/grenade/plastic/x4{ + pixel_x = -5 + }, +/obj/item/grenade/plastic/x4{ + pixel_x = 3 + }, +/obj/item/grenade/plastic/x4{ + pixel_x = 11 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/shuttle/pirate/vault) +"ci" = ( +/obj/structure/table, +/obj/item/melee/transforming/energy/sword/pirate, +/obj/item/melee/transforming/energy/sword/pirate{ + pixel_y = 12 + }, +/obj/item/melee/transforming/energy/sword/pirate{ + pixel_x = 12; + pixel_y = 7 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/shuttle/pirate/vault) +"cj" = ( +/obj/machinery/light/small, +/obj/effect/turf_decal/stripes/end{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/loot_locator, +/turf/open/floor/pod/light, +/area/shuttle/pirate/vault) +"ck" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/shuttle/pirate/vault) +"cl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/telecomms/relay, +/turf/open/floor/pod/light, +/area/shuttle/pirate/vault) +"cm" = ( +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"cn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/pirate) +"co" = ( +/obj/structure/toilet{ + pixel_y = 20 + }, +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor, +/area/shuttle/pirate) +"cp" = ( +/obj/machinery/door/airlock{ + name = "Unisex Restrooms" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor, +/area/shuttle/pirate) +"cq" = ( +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = null + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/bar, +/area/shuttle/pirate) +"cr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/bar, +/area/shuttle/pirate) +"cs" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/bar, +/area/shuttle/pirate) +"ct" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/bar, +/area/shuttle/pirate) +"cu" = ( +/obj/machinery/atmospherics/components/unary/tank/nitrogen{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"cv" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4; + name = "N2 Out"; + target_pressure = 4500 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"cw" = ( +/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"cx" = ( +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = null + }, +/obj/structure/table, +/obj/item/storage/box/lights/mixed{ + pixel_x = -4 + }, +/obj/item/storage/belt/utility{ + pixel_x = 4 + }, +/obj/item/device/analyzer{ + pixel_x = 3; + pixel_y = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"cy" = ( +/obj/machinery/portable_atmospherics/pump, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"cz" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"cA" = ( +/obj/structure/table/reinforced, +/obj/item/lighter, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/bar, +/area/shuttle/pirate) +"cB" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/bar, +/area/shuttle/pirate) +"cC" = ( +/turf/open/floor/plasteel/bar, +/area/shuttle/pirate) +"cD" = ( +/obj/structure/closet/crate, +/obj/item/storage/box/donkpockets{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets, +/obj/item/storage/fancy/donut_box, +/obj/item/reagent_containers/food/snacks/cookie, +/obj/item/reagent_containers/food/snacks/cookie{ + pixel_x = -6; + pixel_y = -6 + }, +/obj/item/reagent_containers/food/snacks/chocolatebar, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/bar, +/area/shuttle/pirate) +"cE" = ( +/obj/machinery/computer/turbine_computer{ + dir = 4; + id = "pirateturbine" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/yellow/side{ + dir = 9 + }, +/area/shuttle/pirate) +"cF" = ( +/obj/structure/chair/stool, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = null + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/shuttle/pirate) +"cG" = ( +/obj/machinery/power/smes{ + capacity = 9e+006; + charge = 10000 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/shuttle/pirate) +"cH" = ( +/obj/structure/chair/stool, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Pirate Ship APC"; + pixel_y = 26; + req_access = null + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/shuttle/pirate) +"cI" = ( +/obj/machinery/computer/monitor{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/yellow/side{ + dir = 5 + }, +/area/shuttle/pirate) +"cJ" = ( +/obj/machinery/atmospherics/components/unary/tank/oxygen{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"cK" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4; + name = "O2 Out"; + target_pressure = 4500 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"cL" = ( +/obj/machinery/atmospherics/pipe/manifold4w/general{ + level = 2 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"cM" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"cN" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Port Out"; + target_pressure = 4500 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"cO" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"cP" = ( +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/bar, +/area/shuttle/pirate) +"cQ" = ( +/obj/structure/table/reinforced, +/obj/item/book/manual/barman_recipes{ + pixel_x = -4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/bar, +/area/shuttle/pirate) +"cR" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/bar, +/area/shuttle/pirate) +"cS" = ( +/obj/structure/sign/departments/engineering{ + pixel_x = 32 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/bar, +/area/shuttle/pirate) +"cT" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/yellow, +/obj/item/wrench, +/obj/item/crowbar, +/obj/item/clothing/glasses/meson/engine, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/yellow/corner{ + dir = 1 + }, +/area/shuttle/pirate) +"cU" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"cV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"cW" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high, +/obj/item/stack/cable_coil/red{ + pixel_x = -1; + pixel_y = 3 + }, +/obj/item/stack/cable_coil/red{ + pixel_x = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/yellow/corner{ + dir = 4 + }, +/area/shuttle/pirate) +"cX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/pirate) +"cY" = ( +/obj/structure/sign/departments/engineering{ + pixel_x = -32 + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"cZ" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 2; + name = "O2 to Incinerator"; + target_pressure = 4500 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"da" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"db" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"dc" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 25 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/space_heater, +/turf/open/floor/plasteel/caution{ + dir = 4 + }, +/area/shuttle/pirate) +"dd" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/fancy/cigarettes/cigpack_uplift{ + pixel_x = 8; + pixel_y = -14 + }, +/obj/item/storage/fancy/cigarettes/cigpack_shadyjims{ + pixel_x = 1; + pixel_y = -14 + }, +/obj/item/storage/fancy/cigarettes/cigpack_robust{ + pixel_x = -6; + pixel_y = -14 + }, +/obj/item/storage/fancy/cigarettes/cigpack_midori{ + pixel_x = 8; + pixel_y = -8 + }, +/obj/item/storage/fancy/cigarettes/cigpack_carp{ + pixel_x = 1; + pixel_y = -8 + }, +/obj/item/storage/fancy/cigarettes, +/turf/open/floor/plasteel/bar, +/area/shuttle/pirate) +"df" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/bar, +/area/shuttle/pirate) +"dg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/bar, +/area/shuttle/pirate) +"dh" = ( +/obj/machinery/door/airlock/engineering{ + name = "Engineering" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"di" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/nosmoking{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"dj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"dk" = ( +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"dl" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"dm" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"dn" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"do" = ( +/obj/machinery/door/airlock/engineering{ + name = "Engineering" + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"dp" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"dq" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold4w/general{ + level = 2 + }, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"dr" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"ds" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Plasma to Incinerator"; + target_pressure = 4500 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"dt" = ( +/obj/machinery/atmospherics/components/unary/tank/toxins{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"du" = ( +/obj/machinery/vending/boozeomat{ + req_access_txt = "0" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/bar, +/area/shuttle/pirate) +"dv" = ( +/obj/machinery/door/window/southleft{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "Bar" + }, +/turf/open/floor/plasteel/bar, +/area/shuttle/pirate) +"dw" = ( +/obj/structure/closet/firecloset/full{ + anchored = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/yellow/side, +/area/shuttle/pirate) +"dx" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/light/small, +/turf/open/floor/plasteel/yellow/corner{ + tag = "icon-yellowcorner (WEST)"; + icon_state = "yellowcorner"; + dir = 8 + }, +/area/shuttle/pirate) +"dy" = ( +/obj/machinery/button/door{ + id = "pirateturbinevent"; + name = "Turbine Vent Control"; + pixel_x = -6; + pixel_y = -24 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/button/door{ + id = "pirateturbineauxvent"; + name = "Turbine Auxiliary Vent Control"; + pixel_x = 6; + pixel_y = -24 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"dz" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"dA" = ( +/obj/machinery/button/ignition{ + id = "pirateincinerator"; + pixel_x = -6; + pixel_y = -24 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 2; + target_pressure = 4500 + }, +/obj/machinery/button/door{ + id = "pirateturbinebolt"; + name = "Turbine Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 6; + pixel_y = -24; + specialfunctions = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/pirate) +"dB" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/storage/toolbox/mechanical, +/obj/item/clothing/head/welding{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/device/multitool, +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/yellow/corner, +/area/shuttle/pirate) +"dC" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal{ + pixel_x = -1 + }, +/obj/item/stack/sheet/glass{ + amount = 50; + pixel_y = 5 + }, +/obj/item/stack/sheet/mineral/plastitanium{ + amount = 30; + pixel_x = 3; + pixel_y = -2 + }, +/obj/item/stack/rods/fifty, +/turf/open/floor/plasteel/yellow/side, +/area/shuttle/pirate) +"dD" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/caution, +/area/shuttle/pirate) +"dE" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/caution, +/area/shuttle/pirate) +"dF" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/caution, +/area/shuttle/pirate) +"dG" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Port to Incinerator"; + target_pressure = 4500 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/caution, +/area/shuttle/pirate) +"dH" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plasteel, +/area/shuttle/pirate) +"dI" = ( +/obj/structure/shuttle/engine/heater, +/obj/structure/window/reinforced{ + dir = 1; + pixel_y = 1 + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate) +"dJ" = ( +/obj/structure/sign/warning/fire, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/pirate) +"dK" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/public/glass{ + heat_proof = 1; + id_tag = "pirateturbinebolt"; + name = "Turbine Access" + }, +/turf/open/floor/engine, +/area/shuttle/pirate) +"dL" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 2 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/pirate) +"dM" = ( +/obj/structure/shuttle/engine/propulsion/burst, +/turf/open/floor/plating/airless, +/area/shuttle/pirate) +"dN" = ( +/obj/machinery/igniter{ + id = "pirateincinerator" + }, +/turf/open/floor/engine/vacuum, +/area/shuttle/pirate) +"dO" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/engine/vacuum, +/area/shuttle/pirate) +"dP" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos{ + dir = 1; + id = "inc_in" + }, +/obj/structure/sign/warning/vacuum/external{ + pixel_y = -32 + }, +/turf/open/floor/engine/vacuum, +/area/shuttle/pirate) +"dQ" = ( +/obj/machinery/door/poddoor{ + id = "pirateturbineauxvent"; + name = "Turbine Auxiliary Vent" + }, +/turf/open/floor/engine/vacuum, +/area/shuttle/pirate) +"dR" = ( +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/compressor{ + comp_id = "pirateturbine"; + dir = 1; + luminosity = 2 + }, +/turf/open/floor/engine/vacuum, +/area/shuttle/pirate) +"dS" = ( +/obj/structure/cable, +/obj/machinery/power/turbine{ + luminosity = 2 + }, +/turf/open/floor/engine/vacuum, +/area/shuttle/pirate) +"dT" = ( +/obj/structure/sign/warning/fire, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/pirate) +"dU" = ( +/obj/machinery/door/poddoor{ + id = "pirateturbinevent"; + name = "Turbine Vent" + }, +/turf/open/floor/engine/vacuum, +/area/shuttle/pirate) +"dV" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 1; + faction = list("pirate") + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/pirate) + +(1,1,1) = {" +aa +aa +aa +aa +aa +aa +ai +aj +aj +aj +aj +bF +aj +dV +aj +aj +aj +aj +aj +ai +aa +aa +aa +aa +"} +(2,1,1) = {" +aa +aa +aa +aa +aa +ai +aj +aJ +bb +aj +bt +bG +bX +aj +co +aj +cf +cP +du +aj +ai +aa +aa +aa +"} +(3,1,1) = {" +aa +aa +aa +aa +aa +aj +aw +aK +bc +aj +aj +bH +aj +aj +cp +aj +cs +cC +cs +dI +dM +aa +aa +aa +"} +(4,1,1) = {" +aa +aa +aa +aa +ai +aj +aj +aL +aj +aj +bu +bI +bu +aj +cq +cA +cQ +dd +dv +dI +dM +aa +aa +aa +"} +(5,1,1) = {" +aa +aa +aa +aa +aj +ap +aj +aM +bd +bn +bv +bJ +bC +cg +cr +cB +cR +df +cC +dI +dM +aa +aa +aa +"} +(6,1,1) = {" +aa +aa +aa +aa +aj +aq +ax +aN +be +aj +bw +bK +bY +aj +cs +cC +cS +dg +cs +dI +dM +aa +aa +aa +"} +(7,1,1) = {" +aa +aa +aa +aa +aj +ar +aj +aO +bf +aj +aj +aj +aj +aj +ct +cD +aj +dh +aj +aj +ai +aa +aa +aa +"} +(8,1,1) = {" +aa +aa +ab +ab +aj +aj +aj +aP +aj +aj +bx +bL +bZ +aj +aj +aj +aj +di +dw +aj +aa +aa +aa +aa +"} +(9,1,1) = {" +aa +ab +ab +af +ak +aj +ay +aQ +aj +bo +bo +bM +bM +ch +aj +cE +cT +dj +dx +dJ +aj +ai +aa +aa +"} +(10,1,1) = {" +aa +ab +ac +af +al +aj +az +aR +aj +bp +by +bN +bo +ci +aj +cF +aW +dk +dy +aj +dN +aj +aj +dT +"} +(11,1,1) = {" +aa +ab +ad +ag +am +as +aA +aS +bg +bq +bq +bO +bM +cj +aj +cG +cU +dl +dz +dK +dO +dR +dS +dU +"} +(12,1,1) = {" +aa +ab +ae +af +an +aj +aB +aQ +aj +br +bz +bP +bo +ck +aj +cH +cV +dm +dA +dL +dP +aj +aj +dT +"} +(13,1,1) = {" +aa +ab +ab +ah +ao +aj +aC +aT +aj +bo +bo +bo +bM +cl +aj +cI +cW +dn +dB +dJ +dQ +ai +aa +aa +"} +(14,1,1) = {" +aa +aa +ab +ab +aj +aj +aD +aU +aj +aj +bA +bQ +ca +aj +aj +aj +cX +dn +dC +aj +aa +aa +aa +aa +"} +(15,1,1) = {" +aa +aa +aa +aa +aj +at +aE +aV +bh +aj +aj +aj +aj +aj +cu +cJ +cX +do +aj +aj +ai +aa +aa +aa +"} +(16,1,1) = {" +aa +aa +aa +aa +aj +au +aF +aW +bi +aD +bB +bR +cb +aj +cv +cK +cY +dp +dD +dI +dM +aa +aa +aa +"} +(17,1,1) = {" +aa +aa +aa +aa +aj +av +aG +aX +bj +bs +bC +bS +cc +cm +cw +cL +cZ +dq +dE +dI +dM +aa +aa +aa +"} +(18,1,1) = {" +aa +aa +aa +aa +ai +aj +aH +aY +bk +aj +bD +bT +cd +cn +cx +cM +da +dr +dF +dI +dM +aa +aa +aa +"} +(19,1,1) = {" +aa +aa +aa +aa +aa +aj +aI +aZ +bl +aj +aj +bU +aj +aj +cy +cN +db +ds +dG +dI +dM +aa +aa +aa +"} +(20,1,1) = {" +aa +aa +aa +aa +aa +ai +ai +ba +bm +aj +bE +bV +ce +aj +cz +cO +dc +dt +dH +aj +ai +aa +aa +aa +"} +(21,1,1) = {" +aa +aa +aa +aa +aa +aa +ai +aj +aj +aj +aj +bW +aj +dV +aj +aj +aj +aj +aj +ai +aa +aa +aa +aa +"} diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index bb07582dae..bb8d902fae 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -60,14 +60,14 @@ #define DNA_UNIQUE_ENZYMES_LEN 32 //Transformation proc stuff -#define TR_KEEPITEMS 1 -#define TR_KEEPVIRUS 2 -#define TR_KEEPDAMAGE 4 -#define TR_HASHNAME 8 // hashing names (e.g. monkey(e34f)) (only in monkeyize) -#define TR_KEEPIMPLANTS 16 -#define TR_KEEPSE 32 // changelings shouldn't edit the DNA's SE when turning into a monkey -#define TR_DEFAULTMSG 64 -#define TR_KEEPORGANS 256 +#define TR_KEEPITEMS (1<<0) +#define TR_KEEPVIRUS (1<<1) +#define TR_KEEPDAMAGE (1<<2) +#define TR_HASHNAME (1<<3) // hashing names (e.g. monkey(e34f)) (only in monkeyize) +#define TR_KEEPIMPLANTS (1<<4) +#define TR_KEEPSE (1<<5) // changelings shouldn't edit the DNA's SE when turning into a monkey +#define TR_DEFAULTMSG (1<<6) +#define TR_KEEPORGANS (1<<8) #define CLONER_FRESH_CLONE "fresh" @@ -89,11 +89,7 @@ #define NOSTOMACH 13 #define NO_DNA_COPY 14 #define DRINKSBLOOD 15 -#define SPECIES_ORGANIC 16 -#define SPECIES_INORGANIC 17 -#define SPECIES_UNDEAD 18 -#define SPECIES_ROBOTIC 19 -#define NOEYES 20 +#define NOEYES 16 #define ORGAN_SLOT_BRAIN "brain" #define ORGAN_SLOT_APPENDIX "appendix" diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index b5bbcd341e..94a247171c 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -1,12 +1,12 @@ //A set of constants used to determine which type of mute an admin wishes to apply: //Please read and understand the muting/automuting stuff before changing these. MUTE_IC_AUTO etc = (MUTE_IC << 1) //Therefore there needs to be a gap between the flags for the automute flags -#define MUTE_IC 1 -#define MUTE_OOC 2 -#define MUTE_PRAY 4 -#define MUTE_ADMINHELP 8 -#define MUTE_DEADCHAT 16 -#define MUTE_ALL 31 +#define MUTE_IC (1<<0) +#define MUTE_OOC (1<<1) +#define MUTE_PRAY (1<<2) +#define MUTE_ADMINHELP (1<<3) +#define MUTE_DEADCHAT (1<<4) +#define MUTE_ALL (~0) //Some constants for DB_Ban #define BANTYPE_PERMA 1 @@ -20,21 +20,21 @@ #define BANTYPE_ANY_JOB 9 //used to remove jobbans //Admin Permissions -#define R_BUILDMODE 0x1 -#define R_ADMIN 0x2 -#define R_BAN 0x4 -#define R_FUN 0x8 -#define R_SERVER 0x10 -#define R_DEBUG 0x20 -#define R_POSSESS 0x40 -#define R_PERMISSIONS 0x80 -#define R_STEALTH 0x100 -#define R_POLL 0x200 -#define R_VAREDIT 0x400 -#define R_SOUNDS 0x800 -#define R_SPAWN 0x1000 -#define R_AUTOLOGIN 0x2000 -#define R_DBRANKS 0x4000 +#define R_BUILDMODE (1<<0) +#define R_ADMIN (1<<1) +#define R_BAN (1<<2) +#define R_FUN (1<<3) +#define R_SERVER (1<<4) +#define R_DEBUG (1<<5) +#define R_POSSESS (1<<6) +#define R_PERMISSIONS (1<<7) +#define R_STEALTH (1<<8) +#define R_POLL (1<<9) +#define R_VAREDIT (1<<10) +#define R_SOUNDS (1<<11) +#define R_SPAWN (1<<12) +#define R_AUTOLOGIN (1<<13) +#define R_DBRANKS (1<<14) #define R_DEFAULT R_AUTOLOGIN diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index 7707eb9ab0..3c25547ce6 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -201,10 +201,10 @@ #define PIPING_LAYER_P_Y 5 #define PIPING_LAYER_LCHANGE 0.05 -#define PIPING_ALL_LAYER 1 //intended to connect with all layers, check for all instead of just one. -#define PIPING_ONE_PER_TURF 2 //can only be built if nothing else with this flag is on the tile already. -#define PIPING_DEFAULT_LAYER_ONLY 4 //can only exist at PIPING_LAYER_DEFAULT -#define PIPING_CARDINAL_AUTONORMALIZE 8 //north/south east/west doesn't matter, auto normalize on build. +#define PIPING_ALL_LAYER (1<<0) //intended to connect with all layers, check for all instead of just one. +#define PIPING_ONE_PER_TURF (1<<1) //can only be built if nothing else with this flag is on the tile already. +#define PIPING_DEFAULT_LAYER_ONLY (1<<2) //can only exist at PIPING_LAYER_DEFAULT +#define PIPING_CARDINAL_AUTONORMALIZE (1<<3) //north/south east/west doesn't matter, auto normalize on build. //HELPERS #define THERMAL_ENERGY(gas) (gas.temperature * gas.heat_capacity()) diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 5937e65ac5..41383b8512 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -12,12 +12,12 @@ #define BRAIN "brain" //bitflag damage defines used for suicide_act -#define BRUTELOSS 1 -#define FIRELOSS 2 -#define TOXLOSS 4 -#define OXYLOSS 8 -#define SHAME 16 -#define MANUAL_SUICIDE 32 //suicide_act will do the actual killing. +#define BRUTELOSS (1<<0) +#define FIRELOSS (1<<1) +#define TOXLOSS (1<<2) +#define OXYLOSS (1<<3) +#define SHAME (1<<4) +#define MANUAL_SUICIDE (1<<5) //suicide_act will do the actual killing. #define EFFECT_STUN "stun" #define EFFECT_KNOCKDOWN "knockdown" @@ -30,11 +30,11 @@ #define EFFECT_JITTER "jitter" //Bitflags defining which status effects could be or are inflicted on a mob -#define CANSTUN 1 -#define CANKNOCKDOWN 2 -#define CANUNCONSCIOUS 4 -#define CANPUSH 8 -#define GODMODE 16 +#define CANSTUN (1<<0) +#define CANKNOCKDOWN (1<<1) +#define CANUNCONSCIOUS (1<<2) +#define CANPUSH (1<<3) +#define GODMODE (1<<4) //Health Defines #define HEALTH_THRESHOLD_CRIT 0 diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 4ac0d013d1..f47309dd73 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -6,10 +6,10 @@ // How multiple components of the exact same type are handled in the same datum -#define COMPONENT_DUPE_HIGHLANDER 0 //old component is deleted (default) -#define COMPONENT_DUPE_ALLOWED 1 //duplicates allowed -#define COMPONENT_DUPE_UNIQUE 2 //new component is deleted -#define COMPONENT_DUPE_UNIQUE_PASSARGS 4 //old component is given the initialization args of the new +#define COMPONENT_DUPE_HIGHLANDER 0 //old component is deleted (default) +#define COMPONENT_DUPE_ALLOWED 1 //duplicates allowed +#define COMPONENT_DUPE_UNIQUE 2 //new component is deleted +#define COMPONENT_DUPE_UNIQUE_PASSARGS 4 //old component is given the initialization args of the new // All signals. Format: // When the signal is called: (signal arguments) @@ -47,10 +47,6 @@ #define COMSIG_ATOM_SET_LIGHT "atom_set_light" //from base of atom/set_light(): (l_range, l_power, l_color) #define COMSIG_ATOM_ROTATE "atom_rotate" //from base of atom/shuttleRotate(): (rotation, params) #define COMSIG_ATOM_DIR_CHANGE "atom_dir_change" //from base of atom/setDir(): (old_dir, new_dir) - -#define COMSIG_ENTER_AREA "enter_area" //from base of area/Entered(): (/area) -#define COMSIG_EXIT_AREA "exit_area" //from base of area/Exited(): (/area) - #define COMSIG_ATOM_CONTENTS_DEL "atom_contents_del" //from base of atom/handle_atom_del(): (atom/deleted) ///////////////// #define COMSIG_ATOM_ATTACK_GHOST "atom_attack_ghost" //from base of atom/attack_ghost(): (mob/dead/observer/ghost) @@ -59,6 +55,9 @@ #define COMPONENT_NO_ATTACK_HAND 1 //works on all 3. ///////////////// +#define COMSIG_ENTER_AREA "enter_area" //from base of area/Entered(): (/area) +#define COMSIG_EXIT_AREA "exit_area" //from base of area/Exited(): (/area) + #define COMSIG_CLICK "atom_click" //from base of atom/Click(): (location, control, params) #define COMSIG_CLICK_SHIFT "shift_click" //from base of atom/ShiftClick(): (/mob) #define COMSIG_CLICK_CTRL "ctrl_click" //from base of atom/CtrlClickOn(): (/mob) @@ -72,7 +71,6 @@ #define COMSIG_AREA_ENTERED "area_entered" //from base of area/Entered(): (atom/movable/M) #define COMSIG_AREA_EXITED "area_exited" //from base of area/Exited(): (atom/movable/M) - // /atom/movable signals #define COMSIG_MOVABLE_MOVED "movable_moved" //from base of atom/movable/Moved(): (/atom, dir) #define COMSIG_MOVABLE_CROSSED "movable_crossed" //from base of atom/movable/Crossed(): (/atom/movable) @@ -127,6 +125,20 @@ //NTnet #define COMSIG_COMPONENT_NTNET_RECIEVE "ntnet_recieve" //called on an object by its NTNET connection component on recieve. (sending_id(number), sending_netname(text), data(datum/netdata)) +// /datum/component/storage signals +#define COMSIG_CONTAINS_STORAGE "is_storage" //() - returns bool. +#define COMSIG_TRY_STORAGE_INSERT "storage_try_insert" //(obj/item/inserting, mob/user, silent, force) - returns bool +#define COMSIG_TRY_STORAGE_SHOW "storage_show_to" //(mob/show_to, force) - returns bool. +#define COMSIG_TRY_STORAGE_HIDE_FROM "storage_hide_from" //(mob/hide_from) - returns bool +#define COMSIG_TRY_STORAGE_HIDE_ALL "storage_hide_all" //returns bool +#define COMSIG_TRY_STORAGE_SET_LOCKSTATE "storage_lock_set_state" //(newstate) +#define COMSIG_IS_STORAGE_LOCKED "storage_get_lockstate" //() - returns bool. MUST CHECK IF STORAGE IS THERE FIRST! +#define COMSIG_TRY_STORAGE_TAKE_TYPE "storage_take_type" //(type, atom/destination, amount = INFINITY, check_adjacent, force, mob/user, list/inserted) - returns bool - type can be a list of types. +#define COMSIG_TRY_STORAGE_FILL_TYPE "storage_fill_type" //(type, amount = INFINITY, force = FALSE) //don't fuck this up. Force will ignore max_items, and amount is normally clamped to max_items. +#define COMSIG_TRY_STORAGE_TAKE "storage_take_obj" //(obj, new_loc, force = FALSE) - returns bool +#define COMSIG_TRY_STORAGE_QUICK_EMPTY "storage_quick_empty" //(loc) - returns bool - if loc is null it will dump at parent location. +#define COMSIG_TRY_STORAGE_RETURN_INVENTORY "storage_return_inventory" //(list/list_to_inject_results_into) +#define COMSIG_TRY_STORAGE_CAN_INSERT "storage_can_equip" //(obj/item/insertion_candidate, mob/user, silent) - returns bool /*******Non-Signal Component Related Defines*******/ diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm index 0a7bc2cde4..c5c88b18f1 100644 --- a/code/__DEFINES/construction.dm +++ b/code/__DEFINES/construction.dm @@ -14,7 +14,7 @@ #define SUPPORT_LINES 1 #define COVER 2 #define CUT_COVER 3 -#define BOLTS 4 +#define ANCHOR_BOLTS 4 #define SUPPORT_RODS 5 #define SHEATH 6 diff --git a/code/__DEFINES/diseases.dm b/code/__DEFINES/diseases.dm index 9f96d0374f..8376f5c12e 100644 --- a/code/__DEFINES/diseases.dm +++ b/code/__DEFINES/diseases.dm @@ -3,21 +3,21 @@ #define VIRUS_SYMPTOM_LIMIT 6 //Visibility Flags -#define HIDDEN_SCANNER 1 -#define HIDDEN_PANDEMIC 2 +#define HIDDEN_SCANNER (1<<0) +#define HIDDEN_PANDEMIC (1<<1) //Disease Flags -#define CURABLE 1 -#define CAN_CARRY 2 -#define CAN_RESIST 4 +#define CURABLE (1<<0) +#define CAN_CARRY (1<<1) +#define CAN_RESIST (1<<2) //Spread Flags -#define DISEASE_SPREAD_SPECIAL 1 -#define DISEASE_SPREAD_NON_CONTAGIOUS 2 -#define DISEASE_SPREAD_BLOOD 4 -#define DISEASE_SPREAD_CONTACT_FLUIDS 8 -#define DISEASE_SPREAD_CONTACT_SKIN 16 -#define DISEASE_SPREAD_AIRBORNE 32 +#define DISEASE_SPREAD_SPECIAL (1<<0) +#define DISEASE_SPREAD_NON_CONTAGIOUS (1<<1) +#define DISEASE_SPREAD_BLOOD (1<<2) +#define DISEASE_SPREAD_CONTACT_FLUIDS (1<<3) +#define DISEASE_SPREAD_CONTACT_SKIN (1<<4) +#define DISEASE_SPREAD_AIRBORNE (1<<5) //Severity Defines #define DISEASE_SEVERITY_POSITIVE "Positive" //Diseases that buff, heal, or at least do nothing at all diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 7935bbad6b..138bfbe44a 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -1,103 +1,103 @@ /* These defines are specific to the atom/flags_1 bitmask */ -#define ALL ~0 //For convenience. +#define ALL (~0) //For convenience. #define NONE 0 GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768)) // for /datum/var/datum_flags -#define DF_USE_TAG 1 -#define DF_VAR_EDITED 2 +#define DF_USE_TAG (1<<0) +#define DF_VAR_EDITED (1<<1) //FLAGS BITMASK -#define STOPSPRESSUREDMAGE_1 1 //This flag is used on the flags_1 variable for SUIT and HEAD items which stop pressure damage. Note that the flag 1 was previous used as ONBACK, so it is possible for some code to use (flags & 1) when checking if something can be put on your back. Replace this code with (inv_flags & SLOT_BACK) if you see it anywhere +#define STOPSPRESSUREDMAGE_1 (1<<0) //This flag is used on the flags_1 variable for SUIT and HEAD items which stop pressure damage. Note that the flag 1 was previous used as ONBACK, so it is possible for some code to use (flags & 1) when checking if something can be put on your back. Replace this code with (inv_flags & SLOT_BACK) if you see it anywhere //To successfully stop you taking all pressure damage you must have both a suit and head item with this flag. -#define NODROP_1 2 // This flag makes it so that an item literally cannot be removed at all, or at least that's how it should be. Only deleted. -#define NOBLUDGEON_1 4 // when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() -#define MASKINTERNALS_1 8 // mask allows internals -#define HEAR_1 16 // This flag is what recursive_hear_check() uses to determine wether to add an item to the hearer list or not. -#define CHECK_RICOCHET_1 32 // Projectiels will check ricochet on things impacted that have this. -#define CONDUCT_1 64 // conducts electricity (metal etc.) -#define ABSTRACT_1 128 // for all things that are technically items but used for various different stuff, made it 128 because it could conflict with other flags other way -#define NODECONSTRUCT_1 128 // For machines and structures that should not break into parts, eg, holodeck stuff -#define OVERLAY_QUEUED_1 256 // atom queued to SSoverlay -#define ON_BORDER_1 512 // item has priority to check when entering or leaving +#define NODROP_1 (1<<1) // This flag makes it so that an item literally cannot be removed at all, or at least that's how it should be. Only deleted. +#define NOBLUDGEON_1 (1<<2) // when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() +#define MASKINTERNALS_1 (1<<3) // mask allows internals +#define HEAR_1 (1<<4) // This flag is what recursive_hear_check() uses to determine wether to add an item to the hearer list or not. +#define CHECK_RICOCHET_1 (1<<5) // Projectiels will check ricochet on things impacted that have this. +#define CONDUCT_1 (1<<6) // conducts electricity (metal etc.) +#define ABSTRACT_1 (1<<7) // for all things that are technically items but used for various different stuff, made it 128 because it could conflict with other flags other way +#define NODECONSTRUCT_1 (1<<7) // For machines and structures that should not break into parts, eg, holodeck stuff +#define OVERLAY_QUEUED_1 (1<<8) // atom queued to SSoverlay +#define ON_BORDER_1 (1<<9) // item has priority to check when entering or leaving -#define NOSLIP_1 1024 //prevents from slipping on wet floors, in space etc +#define NOSLIP_1 (1<<10) //prevents from slipping on wet floors, in space etc // BLOCK_GAS_SMOKE_EFFECT_1 only used in masks at the moment. -#define BLOCK_GAS_SMOKE_EFFECT_1 4096 // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY! -#define THICKMATERIAL_1 8192 //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body. -#define DROPDEL_1 16384 // When dropped, it calls qdel on itself -#define PREVENT_CLICK_UNDER_1 32768 //Prevent clicking things below it on the same turf eg. doors/ fulltile windows +#define BLOCK_GAS_SMOKE_EFFECT_1 (1<<12) // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY! +#define THICKMATERIAL_1 (1<<13) //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body. +#define DROPDEL_1 (1<<14) // When dropped, it calls qdel on itself +#define PREVENT_CLICK_UNDER_1 (1<<15) //Prevent clicking things below it on the same turf eg. doors/ fulltile windows /* Secondary atom flags, for the flags_2 var, denoted with a _2 */ -#define SLOWS_WHILE_IN_HAND_2 1 -#define NO_EMP_WIRES_2 2 -#define HOLOGRAM_2 4 -#define FROZEN_2 8 -#define STATIONLOVING_2 16 -#define INFORM_ADMINS_ON_RELOCATE_2 32 -#define BANG_PROTECT_2 64 +#define SLOWS_WHILE_IN_HAND_2 (1<<0) +#define NO_EMP_WIRES_2 (1<<1) +#define HOLOGRAM_2 (1<<2) +#define FROZEN_2 (1<<3) +#define STATIONLOVING_2 (1<<4) +#define INFORM_ADMINS_ON_RELOCATE_2 (1<<5) +#define BANG_PROTECT_2 (1<<6) // An item worn in the ear slot with HEALS_EARS will heal your ears each // Life() tick, even if normally your ears would be too damaged to heal. -#define HEALS_EARS_2 128 +#define HEALS_EARS_2 (1<<7) // A mob with OMNITONGUE has no restriction in the ability to speak // languages that they know. So even if they wouldn't normally be able to // through mob or tongue restrictions, this flag allows them to ignore // those restrictions. -#define OMNITONGUE_2 256 +#define OMNITONGUE_2 (1<<8) // TESLA_IGNORE grants immunity from being targeted by tesla-style electricity -#define TESLA_IGNORE_2 512 +#define TESLA_IGNORE_2 (1<<9) // Stops you from putting things like an RCD or other items into an ORM or protolathe for materials. -#define NO_MAT_REDEMPTION_2 1024 +#define NO_MAT_REDEMPTION_2 (1<<10) // LAVA_PROTECT used on the flags_2 variable for both SUIT and HEAD items, and stops lava damage. Must be present in both to stop lava damage. -#define LAVA_PROTECT_2 2048 +#define LAVA_PROTECT_2 (1<<11) //turf-only flags -#define NOJAUNT_1 1 -#define UNUSED_TRANSIT_TURF_1 2 -#define CAN_BE_DIRTY_1 4 // If a turf can be made dirty at roundstart. This is also used in areas. -#define NO_DEATHRATTLE_1 16 // Do not notify deadchat about any deaths that occur on this turf. -#define NO_RUINS_1 32 //Blocks ruins spawning on the turf -#define NO_LAVA_GEN_1 64 //Blocks lava rivers being generated on the turf -//#define CHECK_RICOCHET_1 32 //Same thing as atom flag. +#define NOJAUNT_1 (1<<0) +#define UNUSED_TRANSIT_TURF_1 (1<<1) +#define CAN_BE_DIRTY_1 (1<<2) // If a turf can be made dirty at roundstart. This is also used in areas. +#define NO_DEATHRATTLE_1 (1<<4) // Do not notify deadchat about any deaths that occur on this turf. +#define NO_RUINS_1 (1<<5) //Blocks ruins spawning on the turf +#define NO_LAVA_GEN_1 (1<<6) //Blocks lava rivers being generated on the turf +//#define CHECK_RICOCHET_1 32 //Same thing as atom flag. /* These defines are used specifically with the atom/pass_flags bitmask the atom/checkpass() proc uses them (tables will call movable atom checkpass(PASSTABLE) for example) */ //flags for pass_flags -#define PASSTABLE 1 -#define PASSGLASS 2 -#define PASSGRILLE 4 -#define PASSBLOB 8 -#define PASSMOB 16 -#define PASSCLOSEDTURF 32 -#define LETPASSTHROW 64 +#define PASSTABLE (1<<0) +#define PASSGLASS (1<<1) +#define PASSGRILLE (1<<2) +#define PASSBLOB (1<<3) +#define PASSMOB (1<<4) +#define PASSCLOSEDTURF (1<<5) +#define LETPASSTHROW (1<<6) //Movement Types -#define GROUND 1 -#define FLYING 2 +#define GROUND (1<<0) +#define FLYING (1<<1) // Flags for reagents -#define REAGENT_NOREACT 1 +#define REAGENT_NOREACT (1<<0) //Fire and Acid stuff, for resistance_flags -#define LAVA_PROOF 1 -#define FIRE_PROOF 2 //100% immune to fire damage (but not necessarily to lava or heat) -#define FLAMMABLE 4 -#define ON_FIRE 8 -#define UNACIDABLE 16 //acid can't even appear on it, let alone melt it. -#define ACID_PROOF 32 //acid stuck on it doesn't melt it. -#define INDESTRUCTIBLE 64 //doesn't take damage -#define FREEZE_PROOF 128 //can't be frozen +#define LAVA_PROOF (1<<0) +#define FIRE_PROOF (1<<1) //100% immune to fire damage (but not necessarily to lava or heat) +#define FLAMMABLE (1<<2) +#define ON_FIRE (1<<3) +#define UNACIDABLE (1<<4) //acid can't even appear on it, let alone melt it. +#define ACID_PROOF (1<<5) //acid stuck on it doesn't melt it. +#define INDESTRUCTIBLE (1<<6) //doesn't take damage +#define FREEZE_PROOF (1<<7) //can't be frozen diff --git a/code/__DEFINES/food.dm b/code/__DEFINES/food.dm index 2d6ba0d946..44df6695a2 100644 --- a/code/__DEFINES/food.dm +++ b/code/__DEFINES/food.dm @@ -1,12 +1,12 @@ -#define MEAT 1 -#define VEGETABLES 2 -#define RAW 4 -#define JUNKFOOD 8 -#define GRAIN 16 -#define FRUIT 32 -#define DAIRY 64 -#define FRIED 128 -#define ALCOHOL 256 -#define SUGAR 512 -#define GROSS 1024 -#define TOXIC 2048 +#define MEAT (1<<0) +#define VEGETABLES (1<<1) +#define RAW (1<<2) +#define JUNKFOOD (1<<3) +#define GRAIN (1<<4) +#define FRUIT (1<<5) +#define DAIRY (1<<6) +#define FRIED (1<<7) +#define ALCOHOL (1<<8) +#define SUGAR (1<<9) +#define GROSS (1<<10) +#define TOXIC (1<<11) diff --git a/code/__DEFINES/integrated_electronics.dm b/code/__DEFINES/integrated_electronics.dm index a7f732f646..3647a61d77 100644 --- a/code/__DEFINES/integrated_electronics.dm +++ b/code/__DEFINES/integrated_electronics.dm @@ -11,9 +11,9 @@ #define IC_SPAWN_RESEARCH 2 // If the circuit design will be available in the IC printer after upgrading it. // Categories that help differentiate circuits that can do different tipes of actions -#define IC_ACTION_MOVEMENT 1 // If the circuit can move the assembly -#define IC_ACTION_COMBAT 2 // If the circuit can cause harm -#define IC_ACTION_LONG_RANGE 4 // If the circuit communicate with something outside of the assembly +#define IC_ACTION_MOVEMENT (1<<0) // If the circuit can move the assembly +#define IC_ACTION_COMBAT (1<<1) // If the circuit can cause harm +#define IC_ACTION_LONG_RANGE (1<<2) // If the circuit communicate with something outside of the assembly // Displayed along with the pin name to show what type of pin it is. #define IC_FORMAT_ANY "\" diff --git a/code/__DEFINES/interaction_flags.dm b/code/__DEFINES/interaction_flags.dm index b56696c671..dc3242c910 100644 --- a/code/__DEFINES/interaction_flags.dm +++ b/code/__DEFINES/interaction_flags.dm @@ -1,22 +1,22 @@ -#define INTERACT_ATOM_REQUIRES_ANCHORED 1 //whether can_interact() checks for anchored. only works on movables. -#define INTERACT_ATOM_ATTACK_HAND 2 //calls try_interact() on attack_hand() and returns that. -#define INTERACT_ATOM_UI_INTERACT 4 //automatically calls and returns ui_interact() on interact(). -#define INTERACT_ATOM_REQUIRES_DEXTERITY 8 //user must be dextrous -#define INTERACT_ATOM_IGNORE_INCAPACITATED 16 //ignores incapacitated check -#define INTERACT_ATOM_IGNORE_RESTRAINED 32 //incapacitated check ignores restrained -#define INTERACT_ATOM_CHECK_GRAB 64 //incapacitated check checks grab -#define INTERACT_ATOM_NO_FINGERPRINT_ATTACK_HAND 128//prevents leaving fingerprints automatically on attack_hand -#define INTERACT_ATOM_NO_FINGERPRINT_INTERACT 256 //adds hiddenprints instead of fingerprints on interact +#define INTERACT_ATOM_REQUIRES_ANCHORED (1<<0) //whether can_interact() checks for anchored. only works on movables. +#define INTERACT_ATOM_ATTACK_HAND (1<<1) //calls try_interact() on attack_hand() and returns that. +#define INTERACT_ATOM_UI_INTERACT (1<<2) //automatically calls and returns ui_interact() on interact(). +#define INTERACT_ATOM_REQUIRES_DEXTERITY (1<<3) //user must be dextrous +#define INTERACT_ATOM_IGNORE_INCAPACITATED (1<<4) //ignores incapacitated check +#define INTERACT_ATOM_IGNORE_RESTRAINED (1<<5) //incapacitated check ignores restrained +#define INTERACT_ATOM_CHECK_GRAB (1<<6) //incapacitated check checks grab +#define INTERACT_ATOM_NO_FINGERPRINT_ATTACK_HAND (1<<7) //prevents leaving fingerprints automatically on attack_hand +#define INTERACT_ATOM_NO_FINGERPRINT_INTERACT (1<<8) //adds hiddenprints instead of fingerprints on interact -#define INTERACT_ITEM_ATTACK_HAND_PICKUP 1 //attempt pickup on attack_hand for items +#define INTERACT_ITEM_ATTACK_HAND_PICKUP (1<<0) //attempt pickup on attack_hand for items -#define INTERACT_MACHINE_OPEN 1 //can_interact() while open -#define INTERACT_MACHINE_OFFLINE 2 //can_interact() while offline -#define INTERACT_MACHINE_WIRES_IF_OPEN 4 //try to interact with wires if open -#define INTERACT_MACHINE_ALLOW_SILICON 8 //let silicons interact -#define INTERACT_MACHINE_OPEN_SILICON 16 //let silicons interact while open -#define INTERACT_MACHINE_REQUIRES_SILICON 32 //must be silicon to interact -#define INTERACT_MACHINE_SET_MACHINE 64 //MACHINES HAVE THIS BY DEFAULT, SOMEONE SHOULD RUN THROUGH MACHINES AND REMOVE IT FROM THINGS LIKE LIGHT SWITCHES WHEN POSSIBLE!!-------------------------- +#define INTERACT_MACHINE_OPEN (1<<0) //can_interact() while open +#define INTERACT_MACHINE_OFFLINE (1<<1) //can_interact() while offline +#define INTERACT_MACHINE_WIRES_IF_OPEN (1<<2) //try to interact with wires if open +#define INTERACT_MACHINE_ALLOW_SILICON (1<<3) //let silicons interact +#define INTERACT_MACHINE_OPEN_SILICON (1<<4) //let silicons interact while open +#define INTERACT_MACHINE_REQUIRES_SILICON (1<<5) //must be silicon to interact +#define INTERACT_MACHINE_SET_MACHINE (1<<6) //MACHINES HAVE THIS BY DEFAULT, SOMEONE SHOULD RUN THROUGH MACHINES AND REMOVE IT FROM THINGS LIKE LIGHT SWITCHES WHEN POSSIBLE!!-------------------------- //This flag determines if a machine set_machine's the user when the user uses it, making updateUsrDialog make the user re-call interact() on it. //THIS FLAG IS ON ALL MACHINES BY DEFAULT, NEEDS TO BE RE-EVALUATED LATER!! diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index dc3647e1f1..4e2b591ea9 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -14,20 +14,20 @@ #define STORAGE_VIEW_DEPTH 2 //ITEM INVENTORY SLOT BITMASKS -#define SLOT_OCLOTHING 1 -#define SLOT_ICLOTHING 2 -#define SLOT_GLOVES 4 -#define SLOT_EYES 8 -#define SLOT_EARS 16 -#define SLOT_MASK 32 -#define SLOT_HEAD 64 -#define SLOT_FEET 128 -#define SLOT_ID 256 -#define SLOT_BELT 512 -#define SLOT_BACK 1024 -#define SLOT_POCKET 2048 // this is to allow items with a w_class of WEIGHT_CLASS_NORMAL or WEIGHT_CLASS_BULKY to fit in pockets. -#define SLOT_DENYPOCKET 4096 // this is to deny items with a w_class of WEIGHT_CLASS_SMALL or WEIGHT_CLASS_TINY to fit in pockets. -#define SLOT_NECK 8192 +#define SLOT_OCLOTHING (1<<0) +#define SLOT_ICLOTHING (1<<1) +#define SLOT_GLOVES (1<<2) +#define SLOT_EYES (1<<3) +#define SLOT_EARS (1<<4) +#define SLOT_MASK (1<<5) +#define SLOT_HEAD (1<<6) +#define SLOT_FEET (1<<7) +#define SLOT_ID (1<<8) +#define SLOT_BELT (1<<9) +#define SLOT_BACK (1<<10) +#define SLOT_POCKET (1<<11) // this is to allow items with a w_class of WEIGHT_CLASS_NORMAL or WEIGHT_CLASS_BULKY to fit in pockets. +#define SLOT_DENYPOCKET (1<<12) // this is to deny items with a w_class of WEIGHT_CLASS_SMALL or WEIGHT_CLASS_TINY to fit in pockets. +#define SLOT_NECK (1<<13) //SLOTS #define slot_back 1 @@ -87,36 +87,36 @@ //Bit flags for the flags_inv variable, which determine when a piece of clothing hides another. IE a helmet hiding glasses. -#define HIDEGLOVES 1 -#define HIDESUITSTORAGE 2 -#define HIDEJUMPSUIT 4 //these first four are only used in exterior suits -#define HIDESHOES 8 -#define HIDEMASK 16 //these last six are only used in masks and headgear. -#define HIDEEARS 32 // (ears means headsets and such) -#define HIDEEYES 64 // Whether eyes and glasses are hidden -#define HIDEFACE 128 // Whether we appear as unknown. -#define HIDEHAIR 256 -#define HIDEFACIALHAIR 512 -#define HIDENECK 1024 +#define HIDEGLOVES (1<<0) +#define HIDESUITSTORAGE (1<<1) +#define HIDEJUMPSUIT (1<<2) //these first four are only used in exterior suits +#define HIDESHOES (1<<3) +#define HIDEMASK (1<<4) //these last six are only used in masks and headgear. +#define HIDEEARS (1<<5) // (ears means headsets and such) +#define HIDEEYES (1<<6) // Whether eyes and glasses are hidden +#define HIDEFACE (1<<7) // Whether we appear as unknown. +#define HIDEHAIR (1<<8) +#define HIDEFACIALHAIR (1<<9) +#define HIDENECK (1<<10) //bitflags for clothing coverage - also used for limbs -#define HEAD 1 -#define CHEST 2 -#define GROIN 4 -#define LEG_LEFT 8 -#define LEG_RIGHT 16 -#define LEGS 24 -#define FOOT_LEFT 32 -#define FOOT_RIGHT 64 -#define FEET 96 -#define ARM_LEFT 128 -#define ARM_RIGHT 256 -#define ARMS 384 -#define HAND_LEFT 512 -#define HAND_RIGHT 1024 -#define HANDS 1536 -#define NECK 2048 -#define FULL_BODY 4095 +#define HEAD (1<<0) +#define CHEST (1<<1) +#define GROIN (1<<2) +#define LEG_LEFT (1<<3) +#define LEG_RIGHT (1<<4) +#define LEGS (LEG_LEFT | LEG_RIGHT) +#define FOOT_LEFT (1<<5) +#define FOOT_RIGHT (1<<6) +#define FEET (FOOT_LEFT | FOOT_RIGHT) +#define ARM_LEFT (1<<7) +#define ARM_RIGHT (1<<8) +#define ARMS (ARM_LEFT | ARM_RIGHT) +#define HAND_LEFT (1<<9) +#define HAND_RIGHT (1<<10) +#define HANDS (HAND_LEFT | HAND_RIGHT) +#define NECK (1<<11) +#define FULL_BODY (~0) //flags for female outfits: How much the game can safely "take off" the uniform without it looking weird #define NO_FEMALE_UNIFORM 0 @@ -137,11 +137,11 @@ #define SQUISHED_DIGITIGRADE 2 //flags for covering body parts -#define GLASSESCOVERSEYES 1 -#define MASKCOVERSEYES 2 // get rid of some of the other retardation in these flags -#define HEADCOVERSEYES 4 // feel free to realloc these numbers for other purposes -#define MASKCOVERSMOUTH 8 // on other items, these are just for mask/head -#define HEADCOVERSMOUTH 16 +#define GLASSESCOVERSEYES (1<<0) +#define MASKCOVERSEYES (1<<1) // get rid of some of the other retardation in these flags +#define HEADCOVERSEYES (1<<2) // feel free to realloc these numbers for other purposes +#define MASKCOVERSMOUTH (1<<3) // on other items, these are just for mask/head +#define HEADCOVERSMOUTH (1<<4) #define TINT_DARKENED 2 //Threshold of tint level to apply weld mask overlay #define TINT_BLIND 3 //Threshold of tint level to obscure vision fully diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index dc0b6dce54..6d514d6d9b 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -182,3 +182,5 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list( #define is_glass_sheet(O) (is_type_in_typecache(O, GLOB.glass_sheet_types)) #define isblobmonster(O) (istype(O, /mob/living/simple_animal/hostile/blob)) + +#define isshuttleturf(T) (length(T.baseturfs) && (/turf/baseturf_skipover/shuttle in T.baseturfs)) diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index 51b907f846..dc4080a789 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -4,43 +4,43 @@ #define CAPTAIN (1<<0) #define HOS (1<<1) #define WARDEN (1<<2) -#define DETECTIVE (1<<3) +#define DETECTIVE (1<<3) #define OFFICER (1<<4) -#define CHIEF (1<<5) -#define ENGINEER (1<<6) -#define ATMOSTECH (1<<7) +#define CHIEF (1<<5) +#define ENGINEER (1<<6) +#define ATMOSTECH (1<<7) #define ROBOTICIST (1<<8) -#define AI_JF (1<<9) +#define AI_JF (1<<9) #define CYBORG (1<<10) #define MEDSCI (1<<1) -#define RD_JF (1<<0) -#define SCIENTIST (1<<1) +#define RD_JF (1<<0) +#define SCIENTIST (1<<1) #define CHEMIST (1<<2) -#define CMO_JF (1<<3) +#define CMO_JF (1<<3) #define DOCTOR (1<<4) #define GENETICIST (1<<5) #define VIROLOGIST (1<<6) -#define CIVILIAN (1<<2) +#define CIVILIAN (1<<2) #define HOP (1<<0) -#define BARTENDER (1<<1) -#define BOTANIST (1<<2) -#define COOK (1<<3) +#define BARTENDER (1<<1) +#define BOTANIST (1<<2) +#define COOK (1<<3) #define JANITOR (1<<4) #define CURATOR (1<<5) -#define QUARTERMASTER (1<<6) -#define CARGOTECH (1<<7) -#define MINER (1<<8) +#define QUARTERMASTER (1<<6) +#define CARGOTECH (1<<7) +#define MINER (1<<8) #define LAWYER (1<<9) -#define CHAPLAIN (1<<10) -#define CLOWN (1<<11) -#define MIME (1<<12) -#define ASSISTANT (1<<13) +#define CHAPLAIN (1<<10) +#define CLOWN (1<<11) +#define MIME (1<<12) +#define ASSISTANT (1<<13) #define JOB_AVAILABLE 0 #define JOB_UNAVAILABLE_GENERIC 1 diff --git a/code/__DEFINES/machines.dm b/code/__DEFINES/machines.dm index 2d088552bd..77f6ff7756 100644 --- a/code/__DEFINES/machines.dm +++ b/code/__DEFINES/machines.dm @@ -14,22 +14,22 @@ //bitflags for door switches. -#define OPEN 1 -#define IDSCAN 2 -#define BOLTS 4 -#define SHOCK 8 -#define SAFE 16 +#define OPEN (1<<0) +#define IDSCAN (1<<1) +#define BOLTS (1<<2) +#define SHOCK (1<<3) +#define SAFE (1<<4) //used in design to specify which machine can build it -#define IMPRINTER 1 //For circuits. Uses glass/chemicals. -#define PROTOLATHE 2 //New stuff. Uses glass/metal/chemicals -#define AUTOLATHE 4 //Uses glass/metal only. -#define CRAFTLATHE 8 //Uses fuck if I know. For use eventually. -#define MECHFAB 16 //Remember, objects utilising this flag should have construction_time and construction_cost vars. -#define BIOGENERATOR 32 //Uses biomass -#define LIMBGROWER 64 //Uses synthetic flesh -#define SMELTER 128 //uses various minerals -#define AUTOYLATHE 256 //CITADEL ADDITION Uses glass/metal/Plastic CID +#define IMPRINTER (1<<0) //For circuits. Uses glass/chemicals. +#define PROTOLATHE (1<<1) //New stuff. Uses glass/metal/chemicals +#define AUTOLATHE (1<<2) //Uses glass/metal only. +#define CRAFTLATHE (1<<3) //Uses fuck if I know. For use eventually. +#define MECHFAB (1<<4) //Remember, objects utilising this flag should have construction_time and construction_cost vars. +#define BIOGENERATOR (1<<5) //Uses biomass +#define LIMBGROWER (1<<6) //Uses synthetic flesh +#define SMELTER (1<<7) //uses various minerals +#define AUTOYLATHE (1<<8) // CITADEL ADD //Note: More then one of these can be added to a design but imprinter and lathe designs are incompatable. //Modular computer/NTNet defines @@ -62,10 +62,10 @@ #define MIN_NTNET_LOGS 10 //Program bitflags -#define PROGRAM_ALL 7 -#define PROGRAM_CONSOLE 1 -#define PROGRAM_LAPTOP 2 -#define PROGRAM_TABLET 4 +#define PROGRAM_ALL (~0) +#define PROGRAM_CONSOLE (1<<0) +#define PROGRAM_LAPTOP (1<<1) +#define PROGRAM_TABLET (1<<2) //Program states #define PROGRAM_STATE_KILLED 0 #define PROGRAM_STATE_BACKGROUND 1 diff --git a/code/__DEFINES/medal.dm b/code/__DEFINES/medal.dm index b5ff8eac20..2a545d9c64 100644 --- a/code/__DEFINES/medal.dm +++ b/code/__DEFINES/medal.dm @@ -11,6 +11,7 @@ #define BOSS_MEDAL_HIEROPHANT "Hierophant" #define BOSS_MEDAL_LEGION "Legion" #define BOSS_MEDAL_TENDRIL "Tendril" +#define BOSS_MEDAL_SWARMERS "Swarmer Beacon" // Score names #define HIEROPHANT_SCORE "Hierophants Killed" diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 804fa5a90a..15033fcf48 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -35,6 +35,18 @@ #define BLOODCRAWL 1 #define BLOODCRAWL_EAT 2 +//Mob bio-types +#define MOB_ORGANIC "organic" +#define MOB_INORGANIC "inorganic" +#define MOB_ROBOTIC "robotic" +#define MOB_UNDEAD "undead" +#define MOB_HUMANOID "humanoid" +#define MOB_BUG "bug" +#define MOB_BEAST "beast" +#define MOB_EPIC "epic" //megafauna +#define MOB_REPTILE "reptile" +#define MOB_SPIRIT "spirit" + //Organ defines for carbon mobs #define ORGAN_ORGANIC 1 #define ORGAN_ROBOTIC 2 @@ -51,6 +63,27 @@ #define DEVIL_BODYPART "devil" /*see __DEFINES/inventory.dm for bodypart bitflag defines*/ +// Health/damage defines for carbon mobs +#define HUMAN_MAX_OXYLOSS 3 +#define HUMAN_CRIT_MAX_OXYLOSS (SSmobs.wait/30) + +#define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point +#define HEAT_DAMAGE_LEVEL_2 3 //Amount of damage applied when your body temperature passes the 400K point +#define HEAT_DAMAGE_LEVEL_3 8 //Amount of damage applied when your body temperature passes the 460K point and you are on fire + +#define COLD_DAMAGE_LEVEL_1 0.5 //Amount of damage applied when your body temperature just passes the 260.15k safety point +#define COLD_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when your body temperature passes the 200K point +#define COLD_DAMAGE_LEVEL_3 3 //Amount of damage applied when your body temperature passes the 120K point + +//Note that gas heat damage is only applied once every FOUR ticks. +#define HEAT_GAS_DAMAGE_LEVEL_1 2 //Amount of damage applied when the current breath's temperature just passes the 360.15k safety point +#define HEAT_GAS_DAMAGE_LEVEL_2 4 //Amount of damage applied when the current breath's temperature passes the 400K point +#define HEAT_GAS_DAMAGE_LEVEL_3 8 //Amount of damage applied when the current breath's temperature passes the 1000K point + +#define COLD_GAS_DAMAGE_LEVEL_1 0.5 //Amount of damage applied when the current breath's temperature just passes the 260.15k safety point +#define COLD_GAS_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when the current breath's temperature passes the 200K point +#define COLD_GAS_DAMAGE_LEVEL_3 3 //Amount of damage applied when the current breath's temperature passes the 120K point + //Brain Damage defines #define BRAIN_DAMAGE_MILD 20 #define BRAIN_DAMAGE_SEVERE 100 @@ -162,15 +195,15 @@ #define AI_Z_OFF 4 //determines if a mob can smash through it -#define ENVIRONMENT_SMASH_NONE 0 -#define ENVIRONMENT_SMASH_STRUCTURES 1 //crates, lockers, ect -#define ENVIRONMENT_SMASH_WALLS 2 //walls -#define ENVIRONMENT_SMASH_RWALLS 4 //rwalls +#define ENVIRONMENT_SMASH_NONE 0 +#define ENVIRONMENT_SMASH_STRUCTURES (1<<0) //crates, lockers, ect +#define ENVIRONMENT_SMASH_WALLS (1<<1) //walls +#define ENVIRONMENT_SMASH_RWALLS (1<<2) //rwalls -#define NO_SLIP_WHEN_WALKING 1 -#define SLIDE 2 -#define GALOSHES_DONT_HELP 4 -#define SLIDE_ICE 8 +#define NO_SLIP_WHEN_WALKING (1<<0) +#define SLIDE (1<<1) +#define GALOSHES_DONT_HELP (1<<2) +#define SLIDE_ICE (1<<3) #define MAX_CHICKENS 50 @@ -182,12 +215,12 @@ #define INCORPOREAL_MOVE_JAUNT 3 // is blocked by holy water/salt //Secbot and ED209 judgement criteria bitflag values -#define JUDGE_EMAGGED 1 -#define JUDGE_IDCHECK 2 -#define JUDGE_WEAPONCHECK 4 -#define JUDGE_RECORDCHECK 8 +#define JUDGE_EMAGGED (1<<0) +#define JUDGE_IDCHECK (1<<1) +#define JUDGE_WEAPONCHECK (1<<2) +#define JUDGE_RECORDCHECK (1<<3) //ED209's ignore monkeys -#define JUDGE_IGNOREMONKEYS 16 +#define JUDGE_IGNOREMONKEYS (1<<4) #define MEGAFAUNA_DEFAULT_RECOVERY_TIME 5 @@ -211,7 +244,7 @@ #define OFFSET_NECK "neck" //MINOR TWEAKS/MISC -#define AGE_MIN 18 //youngest a character can be +#define AGE_MIN 17 //youngest a character can be #define AGE_MAX 85 //oldest a character can be #define WIZARD_AGE_MIN 30 //youngest a wizard can be #define APPRENTICE_AGE_MIN 29 //youngest an apprentice can be diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm index e491c58cbf..bfbf6f866a 100644 --- a/code/__DEFINES/obj_flags.dm +++ b/code/__DEFINES/obj_flags.dm @@ -1,20 +1,20 @@ // Flags for the obj_flags var on /obj -#define EMAGGED 1 -#define IN_USE 2 // If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING! -#define CAN_BE_HIT 4 //can this be bludgeoned by items? -#define BEING_SHOCKED 8 // Whether this thing is currently (already) being shocked by a tesla -#define DANGEROUS_POSSESSION 16 //Admin possession yes/no -#define ON_BLUEPRINTS 32 //Are we visible on the station blueprints at roundstart? -#define UNIQUE_RENAME 64 // can you customize the description/name of the thing? -#define USES_TGUI 128 //put on things that use tgui on ui_interact instead of custom/old UI. +#define EMAGGED (1<<0) +#define IN_USE (1<<1) // If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING! +#define CAN_BE_HIT (1<<2) //can this be bludgeoned by items? +#define BEING_SHOCKED (1<<3) // Whether this thing is currently (already) being shocked by a tesla +#define DANGEROUS_POSSESSION (1<<4) //Admin possession yes/no +#define ON_BLUEPRINTS (1<<5) //Are we visible on the station blueprints at roundstart? +#define UNIQUE_RENAME (1<<6) // can you customize the description/name of the thing? +#define USES_TGUI (1<<7) //put on things that use tgui on ui_interact instead of custom/old UI. // If you add new ones, be sure to add them to /obj/Initialize as well for complete mapping support // Flags for the item_flags var on /obj/item -#define BEING_REMOVED 1 -#define IN_INVENTORY 2 //is this item equipped into an inventory slot or hand of a mob? used for tooltips -#define FORCE_STRING_OVERRIDE 4 // used for tooltips -#define NEEDS_PERMIT 8 //Used by security bots to determine if this item is safe for public use. +#define BEING_REMOVED (1<<0) +#define IN_INVENTORY (1<<1) //is this item equipped into an inventory slot or hand of a mob? used for tooltips +#define FORCE_STRING_OVERRIDE (1<<2) // used for tooltips +#define NEEDS_PERMIT (1<<3) //Used by security bots to determine if this item is safe for public use. diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index d63623496c..7ba693be0a 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -1,35 +1,35 @@ //Preference toggles -#define SOUND_ADMINHELP 1 -#define SOUND_MIDI 2 -#define SOUND_AMBIENCE 4 -#define SOUND_LOBBY 8 -#define MEMBER_PUBLIC 16 -#define INTENT_STYLE 32 -#define MIDROUND_ANTAG 64 -#define SOUND_INSTRUMENTS 128 -#define SOUND_SHIP_AMBIENCE 256 -#define SOUND_PRAYERS 512 -#define ANNOUNCE_LOGIN 1024 -#define SOUND_ANNOUNCEMENTS 2048 -#define DISABLE_DEATHRATTLE 4096 -#define DISABLE_ARRIVALRATTLE 8192 -#define COMBOHUD_LIGHTING 16384 +#define SOUND_ADMINHELP (1<<0) +#define SOUND_MIDI (1<<1) +#define SOUND_AMBIENCE (1<<2) +#define SOUND_LOBBY (1<<3) +#define MEMBER_PUBLIC (1<<4) +#define INTENT_STYLE (1<<5) +#define MIDROUND_ANTAG (1<<6) +#define SOUND_INSTRUMENTS (1<<7) +#define SOUND_SHIP_AMBIENCE (1<<8) +#define SOUND_PRAYERS (1<<9) +#define ANNOUNCE_LOGIN (1<<10) +#define SOUND_ANNOUNCEMENTS (1<<11) +#define DISABLE_DEATHRATTLE (1<<12) +#define DISABLE_ARRIVALRATTLE (1<<13) +#define COMBOHUD_LIGHTING (1<<14) #define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS) //Chat toggles -#define CHAT_OOC 1 -#define CHAT_DEAD 2 -#define CHAT_GHOSTEARS 4 -#define CHAT_GHOSTSIGHT 8 -#define CHAT_PRAYER 16 -#define CHAT_RADIO 32 -#define CHAT_PULLR 64 -#define CHAT_GHOSTWHISPER 128 -#define CHAT_GHOSTPDA 256 -#define CHAT_GHOSTRADIO 512 -#define CHAT_LOOC 1024 +#define CHAT_OOC (1<<0) +#define CHAT_DEAD (1<<1) +#define CHAT_GHOSTEARS (1<<2) +#define CHAT_GHOSTSIGHT (1<<3) +#define CHAT_PRAYER (1<<4) +#define CHAT_RADIO (1<<5) +#define CHAT_PULLR (1<<6) +#define CHAT_GHOSTWHISPER (1<<7) +#define CHAT_GHOSTPDA (1<<8) +#define CHAT_GHOSTRADIO (1<<9) +#define CHAT_LOOC (1<<10) #define TOGGLES_DEFAULT_CHAT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_PULLR|CHAT_GHOSTWHISPER|CHAT_GHOSTPDA|CHAT_GHOSTRADIO|CHAT_LOOC) diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm index ed815c3393..6fca8786f5 100644 --- a/code/__DEFINES/reagents.dm +++ b/code/__DEFINES/reagents.dm @@ -4,14 +4,14 @@ // container_type defines -#define INJECTABLE 1 // Makes it possible to add reagents through droppers and syringes. -#define DRAWABLE 2 // Makes it possible to remove reagents through syringes. +#define INJECTABLE (1<<0) // Makes it possible to add reagents through droppers and syringes. +#define DRAWABLE (1<<1) // Makes it possible to remove reagents through syringes. -#define REFILLABLE 4 // Makes it possible to add reagents through any reagent container. -#define DRAINABLE 8 // Makes it possible to remove reagents through any reagent container. +#define REFILLABLE (1<<2) // Makes it possible to add reagents through any reagent container. +#define DRAINABLE (1<<3) // Makes it possible to remove reagents through any reagent container. -#define TRANSPARENT 16 // Used on containers which you want to be able to see the reagents off. -#define AMOUNT_VISIBLE 32 // For non-transparent containers that still have the general amount of reagents in them visible. +#define TRANSPARENT (1<<4) // Used on containers which you want to be able to see the reagents off. +#define AMOUNT_VISIBLE (1<<5) // For non-transparent containers that still have the general amount of reagents in them visible. // Is an open container for all intents and purposes. #define OPENCONTAINER (REFILLABLE | DRAINABLE | TRANSPARENT) diff --git a/code/__DEFINES/research.dm b/code/__DEFINES/research.dm index cc66e54208..5facee079a 100644 --- a/code/__DEFINES/research.dm +++ b/code/__DEFINES/research.dm @@ -49,14 +49,14 @@ #define RESEARCH_FABRICATOR_SCREEN_SEARCH 4 #define RESEARCH_FABRICATOR_SCREEN_CATEGORYVIEW 5 -#define DEPARTMENTAL_FLAG_SECURITY 1 -#define DEPARTMENTAL_FLAG_MEDICAL 2 -#define DEPARTMENTAL_FLAG_CARGO 4 -#define DEPARTMENTAL_FLAG_SCIENCE 8 -#define DEPARTMENTAL_FLAG_ENGINEERING 16 -#define DEPARTMENTAL_FLAG_SERVICE 32 -#define DEPARTMENTAL_FLAG_ALL 64 //NO THIS DOESN'T ALLOW YOU TO PRINT EVERYTHING, IT'S FOR ALL DEPARTMENTS! -//#define DEPARTMENTAL_FLAG_MINING 128 +#define DEPARTMENTAL_FLAG_SECURITY (1<<0) +#define DEPARTMENTAL_FLAG_MEDICAL (1<<1) +#define DEPARTMENTAL_FLAG_CARGO (1<<2) +#define DEPARTMENTAL_FLAG_SCIENCE (1<<3) +#define DEPARTMENTAL_FLAG_ENGINEERING (1<<4) +#define DEPARTMENTAL_FLAG_SERVICE (1<<5) +#define DEPARTMENTAL_FLAG_ALL (1<<6) //NO THIS DOESN'T ALLOW YOU TO PRINT EVERYTHING, IT'S FOR ALL DEPARTMENTS! +//#define DEPARTMENTAL_FLAG_MINING (1<<7) #define DESIGN_ID_IGNORE "IGNORE_THIS_DESIGN" diff --git a/code/__DEFINES/robots.dm b/code/__DEFINES/robots.dm index 913ab08be7..9c81305241 100644 --- a/code/__DEFINES/robots.dm +++ b/code/__DEFINES/robots.dm @@ -29,12 +29,12 @@ #define BOT_NO_ROUTE 17 // no destination beacon found (or no route) //Bot types -#define SEC_BOT 1 // Secutritrons (Beepsky) and ED-209s -#define MULE_BOT 2 // MULEbots -#define FLOOR_BOT 4 // Floorbots -#define CLEAN_BOT 8 // Cleanbots -#define MED_BOT 16 // Medibots -#define HONK_BOT 32 // Honkbots & ED-Honks +#define SEC_BOT (1<<0) // Secutritrons (Beepsky) and ED-209s +#define MULE_BOT (1<<1) // MULEbots +#define FLOOR_BOT (1<<2) // Floorbots +#define CLEAN_BOT (1<<3) // Cleanbots +#define MED_BOT (1<<4) // Medibots +#define HONK_BOT (1<<5) // Honkbots & ED-Honks //AI notification defines #define NEW_BORG 1 diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index 79c96805c0..57cdfe3880 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -24,7 +24,6 @@ #define ROLE_REVENANT "revenant" #define ROLE_DEVIL "devil" #define ROLE_SERVANT_OF_RATVAR "servant of Ratvar" -#define ROLE_BORER "borer" #define ROLE_BROTHER "blood brother" #define ROLE_BRAINWASHED "brainwashed victim" #define ROLE_MISCREANT "miscreant" @@ -49,7 +48,6 @@ GLOBAL_LIST_INIT(special_roles, list( ROLE_REVENANT, ROLE_ABDUCTOR, ROLE_DEVIL = /datum/game_mode/devil, - ROLE_BORER, ROLE_SERVANT_OF_RATVAR = /datum/game_mode/clockwork_cult, ROLE_MISCREANT )) diff --git a/code/__DEFINES/shuttles.dm b/code/__DEFINES/shuttles.dm index 306f316aa5..056c5a4565 100644 --- a/code/__DEFINES/shuttles.dm +++ b/code/__DEFINES/shuttles.dm @@ -52,12 +52,12 @@ #define ENGINE_DEFAULT_MAXSPEED_ENGINES 5 //Docking error flags -#define DOCKING_SUCCESS 0 -#define DOCKING_BLOCKED 1 -#define DOCKING_IMMOBILIZED 2 -#define DOCKING_AREA_EMPTY 4 -#define DOCKING_NULL_DESTINATION 8 -#define DOCKING_NULL_SOURCE 16 +#define DOCKING_SUCCESS 0 +#define DOCKING_BLOCKED (1<<0) +#define DOCKING_IMMOBILIZED (1<<1) +#define DOCKING_AREA_EMPTY (1<<2) +#define DOCKING_NULL_DESTINATION (1<<3) +#define DOCKING_NULL_SOURCE (1<<4) //Docking turf movements #define MOVE_TURF 1 @@ -74,7 +74,5 @@ #define SHUTTLE_DOCKER_BLOCKED 3 //Shuttle defaults -#define SHUTTLE_DEFAULT_TURF_TYPE /turf/open/space -#define SHUTTLE_DEFAULT_BASETURF_TYPE /turf/open/space #define SHUTTLE_DEFAULT_SHUTTLE_AREA_TYPE /area/shuttle #define SHUTTLE_DEFAULT_UNDERLYING_AREA /area/space diff --git a/code/__DEFINES/sight.dm b/code/__DEFINES/sight.dm index e307e8dd69..b7643fc5b1 100644 --- a/code/__DEFINES/sight.dm +++ b/code/__DEFINES/sight.dm @@ -17,14 +17,14 @@ #define INVISIBILITY_ABSTRACT 101 //only used for abstract objects (e.g. spacevine_controller), things that are not really there. -#define BORGMESON 1 -#define BORGTHERM 2 -#define BORGXRAY 4 -#define BORGMATERIAL 8 +#define BORGMESON (1<<0) +#define BORGTHERM (1<<1) +#define BORGXRAY (1<<2) +#define BORGMATERIAL (1<<3) //for clothing visor toggles, these determine which vars to toggle -#define VISOR_FLASHPROTECT 1 -#define VISOR_TINT 2 -#define VISOR_VISIONFLAGS 4 //all following flags only matter for glasses -#define VISOR_DARKNESSVIEW 8 -#define VISOR_INVISVIEW 16 +#define VISOR_FLASHPROTECT (1<<0) +#define VISOR_TINT (1<<1) +#define VISOR_VISIONFLAGS (1<<2) //all following flags only matter for glasses +#define VISOR_DARKNESSVIEW (1<<3) +#define VISOR_INVISVIEW (1<<4) diff --git a/code/__DEFINES/stat.dm b/code/__DEFINES/stat.dm index d9d98219aa..1d3ea1347a 100644 --- a/code/__DEFINES/stat.dm +++ b/code/__DEFINES/stat.dm @@ -9,10 +9,10 @@ #define DEAD 3 // bitflags for machine stat variable -#define BROKEN 1 -#define NOPOWER 2 -#define MAINT 4 // under maintaince -#define EMPED 8 // temporary broken by EMP pulse +#define BROKEN (1<<0) +#define NOPOWER (1<<1) +#define MAINT (1<<2) // under maintaince +#define EMPED (1<<3) // temporary broken by EMP pulse //ai power requirement defines #define POWER_REQ_ALL 1 diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 15459f7f71..3cec4248d2 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -6,18 +6,18 @@ //Timing subsystem //Don't run if there is an identical unique timer active //if the arguments to addtimer are the same as an existing timer, it doesn't create a new timer, and returns the id of the existing timer -#define TIMER_UNIQUE 0x1 +#define TIMER_UNIQUE (1<<0) //For unique timers: Replace the old timer rather then not start this one -#define TIMER_OVERRIDE 0x2 +#define TIMER_OVERRIDE (1<<1) //Timing should be based on how timing progresses on clients, not the sever. // tracking this is more expensive, // should only be used in conjuction with things that have to progress client side, such as animate() or sound() -#define TIMER_CLIENT_TIME 0x4 +#define TIMER_CLIENT_TIME (1<<2) //Timer can be stopped using deltimer() -#define TIMER_STOPPABLE 0x8 +#define TIMER_STOPPABLE (1<<3) //To be used with TIMER_UNIQUE //prevents distinguishing identical timers with the wait variable -#define TIMER_NO_HASH_WAIT 0x10 +#define TIMER_NO_HASH_WAIT (1<<4) #define TIMER_NO_INVOKE_WARNING 600 //number of byond ticks that are allowed to pass before the timer subsystem thinks it hung on something diff --git a/code/__HELPERS/areas.dm b/code/__HELPERS/areas.dm index 0d12a5ca58..51dd88710a 100644 --- a/code/__HELPERS/areas.dm +++ b/code/__HELPERS/areas.dm @@ -83,15 +83,10 @@ newA.contents += thing thing.change_area(old_area, newA) - var/list/related_areas = oldA.related - for(var/i in 1 to related_areas.len) - var/area/place = related_areas[i] - var/list/firedoors = place.firedoors - if(!LAZYLEN(firedoors)) - continue - for(var/k in 1 to firedoors.len) - var/obj/machinery/door/firedoor/FD = firedoors[k] - FD.CalculateAffectingAreas() + var/list/firedoors = oldA.firedoors + for(var/door in firedoors) + var/obj/machinery/door/firedoor/FD = door + FD.CalculateAffectingAreas() to_chat(creator, "You have created a new area, named [newA.name]. It is now weather proof, and constructing an APC will allow it to be powered.") return TRUE diff --git a/code/__HELPERS/icon_smoothing.dm b/code/__HELPERS/icon_smoothing.dm index 34de5d4590..5d34df3ec5 100644 --- a/code/__HELPERS/icon_smoothing.dm +++ b/code/__HELPERS/icon_smoothing.dm @@ -24,21 +24,21 @@ */ //Redefinitions of the diagonal directions so they can be stored in one var without conflicts -#define N_NORTH 2 -#define N_SOUTH 4 -#define N_EAST 16 -#define N_WEST 256 -#define N_NORTHEAST 32 -#define N_NORTHWEST 512 -#define N_SOUTHEAST 64 -#define N_SOUTHWEST 1024 +#define N_NORTH (1<<1) +#define N_SOUTH (1<<2) +#define N_EAST (1<<4) +#define N_WEST (1<<8) +#define N_NORTHEAST (1<<5) +#define N_NORTHWEST (1<<9) +#define N_SOUTHEAST (1<<6) +#define N_SOUTHWEST (1<<10) -#define SMOOTH_FALSE 0 //not smooth -#define SMOOTH_TRUE 1 //smooths with exact specified types or just itself -#define SMOOTH_MORE 2 //smooths with all subtypes of specified types or just itself (this value can replace SMOOTH_TRUE) -#define SMOOTH_DIAGONAL 4 //if atom should smooth diagonally, this should be present in 'smooth' var -#define SMOOTH_BORDER 8 //atom will smooth with the borders of the map -#define SMOOTH_QUEUED 16 //atom is currently queued to smooth. +#define SMOOTH_FALSE 0 //not smooth +#define SMOOTH_TRUE (1<<0) //smooths with exact specified types or just itself +#define SMOOTH_MORE (1<<1) //smooths with all subtypes of specified types or just itself (this value can replace SMOOTH_TRUE) +#define SMOOTH_DIAGONAL (1<<2) //if atom should smooth diagonally, this should be present in 'smooth' var +#define SMOOTH_BORDER (1<<3) //atom will smooth with the borders of the map +#define SMOOTH_QUEUED (1<<4) //atom is currently queued to smooth. #define NULLTURF_BORDER 123456789 diff --git a/code/_onclick/hud/parallax.dm b/code/_onclick/hud/parallax.dm index 9da765745f..bc3df4de83 100755 --- a/code/_onclick/hud/parallax.dm +++ b/code/_onclick/hud/parallax.dm @@ -310,8 +310,3 @@ /obj/screen/parallax_layer/planet/update_o() return //Shit wont move - -#undef LOOP_NONE -#undef LOOP_NORMAL -#undef LOOP_REVERSE -#undef LOOP_TIME diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 18cd821399..865061eb3a 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -180,13 +180,18 @@ /obj/screen/close name = "close" + layer = ABOVE_HUD_LAYER + plane = ABOVE_HUD_PLANE + icon_state = "backpack_close" + +/obj/screen/close/Initialize(mapload, new_master) + . = ..() + master = new_master /obj/screen/close/Click() - if(istype(master, /obj/item/storage)) - var/obj/item/storage/S = master - S.close(usr) - return 1 - + var/datum/component/storage/S = master + S.hide_from(usr) + return TRUE /obj/screen/drop name = "drop" @@ -346,19 +351,27 @@ /obj/screen/storage name = "storage" + icon_state = "block" + screen_loc = "7,7 to 10,8" + layer = HUD_LAYER + plane = HUD_PLANE + +/obj/screen/storage/Initialize(mapload, new_master) + . = ..() + master = new_master /obj/screen/storage/Click(location, control, params) if(world.time <= usr.next_move) - return 1 + return TRUE if(usr.stat || usr.IsUnconscious() || usr.IsKnockdown() || usr.IsStun()) - return 1 + return TRUE if (ismecha(usr.loc)) // stops inventory actions in a mech - return 1 + return TRUE if(master) var/obj/item/I = usr.get_active_held_item() if(I) master.attackby(I, usr, params) - return 1 + return TRUE /obj/screen/throw_catch name = "throw/catch" diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm index a3923d50fc..24bf518a03 100644 --- a/code/controllers/configuration/config_entry.dm +++ b/code/controllers/configuration/config_entry.dm @@ -1,5 +1,3 @@ -#undef CURRENT_RESIDENT_FILE - #define LIST_MODE_NUM 0 #define LIST_MODE_TEXT 1 #define LIST_MODE_FLAG 2 @@ -8,7 +6,7 @@ var/name //read-only, this is determined by the last portion of the derived entry type var/config_entry_value var/default //read-only, just set value directly - + var/resident_file //the file which this was loaded from, if any var/modified = FALSE //set to TRUE if the default has been overridden by a config entry @@ -19,7 +17,7 @@ /datum/config_entry/New() if(type == abstract_type) - CRASH("Abstract config entry [type] instatiated!") + CRASH("Abstract config entry [type] instatiated!") name = lowertext(type2top(type)) if(islist(config_entry_value)) var/list/L = config_entry_value diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 240be1f212..9f366d5c37 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -393,5 +393,5 @@ SUBSYSTEM_DEF(air) #undef SSAIR_ACTIVETURFS #undef SSAIR_EXCITEDGROUPS #undef SSAIR_HIGHPRESSURE -#undef SSAIR_HOTSPOT +#undef SSAIR_HOTSPOTS #undef SSAIR_SUPERCONDUCTIVITY diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index ec3783c9c0..82a59dc857 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -367,14 +367,14 @@ GLOBAL_LIST_EMPTY(the_station_areas) away_level = template.load_new_z() else return - + message_admins("Admin [key_name_admin(usr)] has loaded [away_name] away mission.") log_admin("Admin [key_name(usr)] has loaded [away_name] away mission.") if(!away_level) message_admins("Loading [away_name] failed!") return - - + + if(GLOB.the_gateway) //Link any found away gate with station gate var/obj/machinery/gateway/centeraway/new_gate @@ -384,4 +384,4 @@ GLOBAL_LIST_EMPTY(the_station_areas) break //Link station gate with away gate and remove wait time. GLOB.the_gateway.awaygate = new_gate - GLOB.the_gateway.wait = world.time + GLOB.the_gateway.wait = world.time \ No newline at end of file diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index be2b107cb8..3ffb669084 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -55,8 +55,8 @@ SUBSYSTEM_DEF(shuttle) var/list/shuttle_purchase_requirements_met = list() //For keeping track of ingame events that would unlock new shuttles, such as defeating a boss or discovering a secret item var/lockdown = FALSE //disallow transit after nuke goes off - - var/auto_call = 72000 //CIT CHANGE - time before in deciseconds in which the shuttle is auto called. Default is 2½ hours plus 15 for the shuttle. So total is 3. + + var/auto_call = 72000 //CIT CHANGE - time before in deciseconds in which the shuttle is auto called. Default is 2 hours plus 15 for the shuttle. So total is 3. /datum/controller/subsystem/shuttle/Initialize(timeofday) ordernum = rand(1, 9000) @@ -554,7 +554,6 @@ SUBSYSTEM_DEF(shuttle) var/obj/docking_port/stationary/transit/new_transit_dock = new(midpoint) new_transit_dock.assigned_turfs = proposed_zone new_transit_dock.name = "Transit for [M.id]/[M.name]" - new_transit_dock.turf_type = transit_path new_transit_dock.owner = M new_transit_dock.assigned_area = A @@ -700,4 +699,4 @@ SUBSYSTEM_DEF(shuttle) var/obj/machinery/computer/camera_advanced/shuttle_docker/C = V C.update_hidden_docking_ports(remove_images, add_images) - QDEL_LIST(remove_images) + QDEL_LIST(remove_images) \ No newline at end of file diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index c734699002..0bc2354032 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -128,14 +128,14 @@ SUBSYSTEM_DEF(ticker) login_music = pick(music) else login_music = "[global.config.directory]/title_music/sounds/[pick(music)]" - +/* crewobjlist = typesof(/datum/objective/crew) miscreantobjlist = (typesof(/datum/objective/miscreant) - /datum/objective/miscreant) for(var/hoorayhackyshit in crewobjlist) //taken from old Hippie's "job2obj" proc with adjustments. var/datum/objective/crew/obj = hoorayhackyshit //dm is not a sane language in any way, shape, or form. var/list/availableto = splittext(initial(obj.jobs),",") for(var/job in availableto) - crewobjjobs["[job]"] += list(obj) + crewobjjobs["[job]"] += list(obj) */ if(!GLOB.syndicate_code_phrase) GLOB.syndicate_code_phrase = generate_code_phrase() @@ -324,12 +324,12 @@ SUBSYSTEM_DEF(ticker) GLOB.start_state = new /datum/station_state() GLOB.start_state.count() - //assign crew objectives and generate miscreants +/* //assign crew objectives and generate miscreants if(CONFIG_GET(flag/allow_extended_miscreants) && GLOB.master_mode == "extended") GLOB.miscreants_allowed = TRUE if(CONFIG_GET(flag/allow_miscreants) && GLOB.master_mode != "extended") GLOB.miscreants_allowed = TRUE - generate_crew_objectives() + generate_crew_objectives() */ var/list/adm = get_admin_counts() var/list/allmins = adm["present"] diff --git a/code/datums/action.dm b/code/datums/action.dm index e230f49089..c5563e9a34 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -21,7 +21,7 @@ var/mob/owner /datum/action/New(Target) - target = Target + link_to(Target) button = new button.linked_action = src button.name = name @@ -29,6 +29,9 @@ if(desc) button.desc = desc +/datum/action/proc/link_to(Target) + target = Target + /datum/action/Destroy() if(owner) Remove(owner) @@ -689,3 +692,25 @@ else owner.remove_alt_appearance("smallsprite") small = FALSE + +/datum/action/item_action/storage_gather_mode + name = "Switch gathering mode" + desc = "Switches the gathering mode of a storage object." + icon_icon = 'icons/mob/actions/actions_items.dmi' + button_icon_state = "storage_gather_switch" + +/datum/action/item_action/storage_gather_mode/ApplyIcon(obj/screen/movable/action_button/current_button) + . = ..() + var/old_layer = target.layer + var/old_plane = target.plane + target.layer = FLOAT_LAYER //AAAH + target.plane = FLOAT_PLANE //^ what that guy said + current_button.cut_overlays() + current_button.add_overlay(target) + target.layer = old_layer + target.plane = old_plane + current_button.appearance_cache = target.appearance + +/datum/action/item_action/storage_gather_mode/Trigger() + GET_COMPONENT_FROM(STR, /datum/component/storage, target) + STR.gather_mode_switch(owner) diff --git a/code/datums/brain_damage/mild.dm b/code/datums/brain_damage/mild.dm index 375898f1fb..5c23fb4c8b 100644 --- a/code/datums/brain_damage/mild.dm +++ b/code/datums/brain_damage/mild.dm @@ -50,7 +50,7 @@ owner.derpspeech = min(owner.derpspeech + 5, 25) if(prob(3)) owner.emote("drool") - else if(owner && owner.stat == CONSCIOUS && prob(3)) + else if(owner.stat == CONSCIOUS && prob(3)) owner.say(pick_list_replacements(BRAIN_DAMAGE_FILE, "brain_damage")) ..() @@ -138,13 +138,13 @@ /datum/brain_trauma/mild/muscle_weakness/on_life() var/fall_chance = 1 - if(owner && owner.m_intent == MOVE_INTENT_RUN) + if(owner.m_intent == MOVE_INTENT_RUN) fall_chance += 2 if(prob(fall_chance) && !owner.lying && !owner.buckled) to_chat(owner, "Your leg gives out!") owner.Knockdown(35) - else if(owner && owner.get_active_held_item()) + else if(owner.get_active_held_item()) var/drop_chance = 1 var/obj/item/I = owner.get_active_held_item() drop_chance += I.w_class @@ -167,11 +167,11 @@ if(prob(7)) switch(rand(1,5)) if(1) - if(owner && owner.canmove && !isspaceturf(owner.loc)) + if(owner.canmove && !isspaceturf(owner.loc)) to_chat(owner, "Your leg spasms!") step(owner, pick(GLOB.cardinals)) if(2) - if(owner && owner.incapacitated()) + if(owner.incapacitated()) return var/obj/item/I = owner.get_active_held_item() if(I) @@ -203,7 +203,7 @@ owner.ClickOn(owner) owner.a_intent = prev_intent if(5) - if(owner && owner.incapacitated()) + if(owner.incapacitated()) return var/obj/item/I = owner.get_active_held_item() var/list/turf/targets = list() diff --git a/code/datums/components/rotation.dm b/code/datums/components/rotation.dm index c7c6b40754..eca12454fd 100644 --- a/code/datums/components/rotation.dm +++ b/code/datums/components/rotation.dm @@ -1,15 +1,15 @@ -#define ROTATION_ALTCLICK 1 -#define ROTATION_WRENCH 2 -#define ROTATION_VERBS 4 -#define ROTATION_COUNTERCLOCKWISE 8 -#define ROTATION_CLOCKWISE 16 -#define ROTATION_FLIP 32 +#define ROTATION_ALTCLICK (1<<0) +#define ROTATION_WRENCH (1<<1) +#define ROTATION_VERBS (1<<2) +#define ROTATION_COUNTERCLOCKWISE (1<<3) +#define ROTATION_CLOCKWISE (1<<4) +#define ROTATION_FLIP (1<<5) /datum/component/simple_rotation var/datum/callback/can_user_rotate //Checks if user can rotate var/datum/callback/can_be_rotated //Check if object can be rotated at all var/datum/callback/after_rotation //Additional stuff to do after rotation - + var/rotation_flags = NONE var/default_rotation_direction = ROTATION_CLOCKWISE diff --git a/code/datums/components/storage/concrete/_concrete.dm b/code/datums/components/storage/concrete/_concrete.dm new file mode 100644 index 0000000000..54b3fa031e --- /dev/null +++ b/code/datums/components/storage/concrete/_concrete.dm @@ -0,0 +1,185 @@ + +// External storage-related logic: +// /mob/proc/ClickOn() in /_onclick/click.dm - clicking items in storages +// /mob/living/Move() in /modules/mob/living/living.dm - hiding storage boxes on mob movement + +/datum/component/storage/concrete + var/drop_all_on_deconstruct = TRUE + var/drop_all_on_destroy = FALSE + var/transfer_contents_on_component_transfer = FALSE + var/list/datum/component/storage/slaves = list() + +/datum/component/storage/concrete/Initialize() + . = ..() + RegisterSignal(COMSIG_ATOM_CONTENTS_DEL, .proc/on_contents_del) + RegisterSignal(COMSIG_OBJ_DECONSTRUCT, .proc/on_deconstruct) + +/datum/component/storage/concrete/Destroy() + var/atom/real_location = real_location() + for(var/atom/_A in real_location) + _A.mouse_opacity = initial(_A.mouse_opacity) + if(drop_all_on_destroy) + do_quick_empty() + for(var/i in slaves) + var/datum/component/storage/slave = i + slave.change_master(null) + return ..() + +/datum/component/storage/concrete/master() + return src + +/datum/component/storage/concrete/real_location() + return parent + +/datum/component/storage/concrete/OnTransfer(datum/new_parent) + if(!isatom(new_parent)) + return COMPONENT_INCOMPATIBLE + var/list/mob/_is_using + if(is_using) + _is_using = is_using.Copy() + close_all() + if(transfer_contents_on_component_transfer) + var/atom/old = parent + for(var/i in old) + var/atom/movable/AM = i + AM.forceMove(new_parent) + if(_is_using) + for(var/i in _is_using) + var/mob/M = i + show_to(M) + +/datum/component/storage/concrete/_insert_physical_item(obj/item/I, override = FALSE) + . = TRUE + var/atom/real_location = real_location() + if(I.loc != real_location) + I.forceMove(real_location) + refresh_mob_views() + +/datum/component/storage/concrete/refresh_mob_views() + . = ..() + for(var/i in slaves) + var/datum/component/storage/slave = i + slave.refresh_mob_views() + +/datum/component/storage/concrete/emp_act(severity) + var/atom/real_location = real_location() + for(var/i in real_location) + var/atom/A = i + A.emp_act(severity) + +/datum/component/storage/concrete/proc/on_slave_link(datum/component/storage/S) + if(S == src) + return FALSE + slaves += S + return TRUE + +/datum/component/storage/concrete/proc/on_slave_unlink(datum/component/storage/S) + slaves -= S + return FALSE + +/datum/component/storage/concrete/proc/on_contents_del(atom/A) + var/atom/real_location = parent + if(A in real_location) + usr = null + remove_from_storage(A, null) + +/datum/component/storage/concrete/proc/on_deconstruct(disassembled) + if(drop_all_on_deconstruct) + do_quick_empty() + +/datum/component/storage/concrete/can_see_contents() + . = ..() + for(var/i in slaves) + var/datum/component/storage/slave = i + . |= slave.can_see_contents() + +//Resets screen loc and other vars of something being removed from storage. +/datum/component/storage/concrete/_removal_reset(atom/movable/thing) + thing.layer = initial(thing.layer) + thing.plane = initial(thing.plane) + thing.mouse_opacity = initial(thing.mouse_opacity) + if(thing.maptext) + thing.maptext = "" + +/datum/component/storage/concrete/remove_from_storage(atom/movable/AM, atom/new_location) + //Cache this as it should be reusable down the bottom, will not apply if anyone adds a sleep to dropped + //or moving objects, things that should never happen + var/atom/parent = src.parent + var/list/seeing_mobs = can_see_contents() + for(var/mob/M in seeing_mobs) + M.client.screen -= AM + if(ismob(parent.loc) && isitem(AM)) + var/obj/item/I = AM + var/mob/M = parent.loc + I.dropped(M) + if(new_location) + //Reset the items values + _removal_reset(AM) + AM.forceMove(new_location) + //We don't want to call this if the item is being destroyed + AM.on_exit_storage(src) + else + //Being destroyed, just move to nullspace now (so it's not in contents for the icon update) + AM.moveToNullspace() + refresh_mob_views() + if(isobj(parent)) + var/obj/O = parent + O.update_icon() + return TRUE + +/datum/component/storage/concrete/proc/slave_can_insert_object(datum/component/storage/slave, obj/item/I, stop_messages = FALSE, mob/M) + return TRUE + +/datum/component/storage/concrete/proc/handle_item_insertion_from_slave(datum/component/storage/slave, obj/item/I, prevent_warning = FALSE, M) + . = handle_item_insertion(I, prevent_warning, M, slave) + if(. && !prevent_warning) + slave.mob_item_insertion_feedback(usr, M, I) + +/datum/component/storage/concrete/handle_item_insertion(obj/item/I, prevent_warning = FALSE, mob/M, datum/component/storage/remote) //Remote is null or the slave datum + var/datum/component/storage/concrete/master = master() + var/atom/parent = src.parent + var/moved = FALSE + if(!istype(I)) + return FALSE + if(M) + if(!M.temporarilyRemoveItemFromInventory(I)) + return FALSE + else + moved = TRUE //At this point if the proc fails we need to manually move the object back to the turf/mob/whatever. + if(I.pulledby) + I.pulledby.stop_pulling() + if(silent) + prevent_warning = TRUE + if(!_insert_physical_item(I)) + if(moved) + if(M) + if(!M.put_in_active_hand(I)) + I.forceMove(parent.drop_location()) + else + I.forceMove(parent.drop_location()) + return FALSE + I.on_enter_storage(master) + refresh_mob_views() + I.mouse_opacity = MOUSE_OPACITY_OPAQUE //So you can click on the area around the item to equip it, instead of having to pixel hunt + if(M) + if(M.client && M.active_storage != src) + M.client.screen -= I + if(M.observers && M.observers.len) + for(var/i in M.observers) + var/mob/dead/observe = i + if(observe.client && observe.active_storage != src) + observe.client.screen -= I + if(!remote) + parent.add_fingerprint(M) + if(!prevent_warning) + mob_item_insertion_feedback(usr, M, I) + update_icon() + return TRUE + +/datum/component/storage/concrete/update_icon() + if(isobj(parent)) + var/obj/O = parent + O.update_icon() + for(var/i in slaves) + var/datum/component/storage/slave = i + slave.update_icon() diff --git a/code/datums/components/storage/concrete/bag_of_holding.dm b/code/datums/components/storage/concrete/bag_of_holding.dm new file mode 100644 index 0000000000..ba458d2f76 --- /dev/null +++ b/code/datums/components/storage/concrete/bag_of_holding.dm @@ -0,0 +1,22 @@ +/datum/component/storage/concrete/bluespace/bag_of_holding/handle_item_insertion(obj/item/W, prevent_warning = FALSE, mob/living/user) + var/atom/A = parent + if((istype(W, /obj/item/storage/backpack/holding) || count_by_type(W.GetAllContents(), /obj/item/storage/backpack/holding))) + var/turf/loccheck = get_turf(A) + if(is_reebe(loccheck.z)) + user.visible_message("An unseen force knocks [user] to the ground!", "\"I think not!\"") + user.Knockdown(60) + return + var/safety = alert(user, "Doing this will have extremely dire consequences for the station and its crew. Be sure you know what you're doing.", "Put in [A.name]?", "Proceed", "Abort") + if(safety == "Abort" || !in_range(A, user) || !A || !W || user.incapacitated()) + return + A.investigate_log("has become a singularity. Caused by [user.key]", INVESTIGATE_SINGULO) + to_chat(user, "The Bluespace interfaces of the two devices catastrophically malfunction!") + qdel(W) + var/obj/singularity/singulo = new /obj/singularity (get_turf(A)) + singulo.energy = 300 //should make it a bit bigger~ + message_admins("[key_name_admin(user)] detonated a bag of holding") + log_game("[key_name(user)] detonated a bag of holding") + qdel(A) + singulo.process() + return + . = ..() diff --git a/code/datums/components/storage/concrete/bluespace.dm b/code/datums/components/storage/concrete/bluespace.dm new file mode 100644 index 0000000000..4763783837 --- /dev/null +++ b/code/datums/components/storage/concrete/bluespace.dm @@ -0,0 +1,21 @@ +/datum/component/storage/concrete/bluespace + var/dumping_range = 8 + var/dumping_sound = 'sound/items/pshoom.ogg' + var/alt_sound = 'sound/items/pshoom_2.ogg' + +/datum/component/storage/concrete/bluespace/dump_content_at(atom/dest, mob/M) + var/atom/A = parent + if(A.Adjacent(M)) + var/atom/dumping_location = dest.get_dumping_location() + if(get_dist(M, dumping_location) < dumping_range) + if(dumping_location.storage_contents_dump_act(src, M)) + if(alt_sound && prob(1)) + playsound(src, alt_sound, 40, 1) + else + playsound(src, dumping_sound, 40, 1) + M.Beam(dumping_location, icon_state="rped_upgrade", time=5) + return TRUE + to_chat(M, "The [A.name] buzzes.") + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) + return FALSE + diff --git a/code/datums/components/storage/concrete/implant.dm b/code/datums/components/storage/concrete/implant.dm new file mode 100644 index 0000000000..d3f3d6b586 --- /dev/null +++ b/code/datums/components/storage/concrete/implant.dm @@ -0,0 +1,17 @@ +/datum/component/storage/concrete/implant + max_w_class = WEIGHT_CLASS_NORMAL + max_combined_w_class = 6 + max_items = 2 + drop_all_on_destroy = TRUE + drop_all_on_deconstruct = TRUE + silent = TRUE + +/datum/component/storage/concrete/implant/Initialize() + . = ..() + cant_hold = typecacheof(list(/obj/item/disk/nuclear)) + +/datum/component/storage/concrete/implant/InheritComponent(datum/component/storage/concrete/implant/I, original) + if(!istype(I)) + return ..() + max_combined_w_class += I.max_combined_w_class + max_items += I.max_items diff --git a/code/datums/components/storage/concrete/pockets.dm b/code/datums/components/storage/concrete/pockets.dm new file mode 100644 index 0000000000..124102a6bd --- /dev/null +++ b/code/datums/components/storage/concrete/pockets.dm @@ -0,0 +1,65 @@ +/datum/component/storage/concrete/pockets + max_items = 2 + max_w_class = WEIGHT_CLASS_SMALL + max_combined_w_class = 50 + rustle_sound = FALSE + +/datum/component/storage/concrete/pockets/handle_item_insertion(obj/item/I, prevent_warning, mob/user) + . = ..() + if(. && silent && !prevent_warning) + if(quickdraw) + to_chat(user, "You discreetly slip [I] into [parent]. Alt-click [parent] to remove it.") + else + to_chat(user, "You discreetly slip [I] into [parent].") + +/datum/component/storage/concrete/pockets + max_w_class = WEIGHT_CLASS_NORMAL + +/datum/component/storage/concrete/pockets/small + max_items = 1 + attack_hand_interact = FALSE + +/datum/component/storage/concrete/pockets/tiny + max_items = 1 + max_w_class = WEIGHT_CLASS_TINY + attack_hand_interact = FALSE + +/datum/component/storage/concrete/pockets/small/detective + attack_hand_interact = TRUE // so the detectives would discover pockets in their hats + +/datum/component/storage/concrete/pockets/shoes + attack_hand_interact = FALSE + quickdraw = TRUE + silent = TRUE + +/datum/component/storage/concrete/pockets/shoes/Initialize() + . = ..() + can_hold = typecacheof(list( + /obj/item/kitchen/knife, /obj/item/switchblade, /obj/item/pen, + /obj/item/scalpel, /obj/item/reagent_containers/syringe, /obj/item/dnainjector, + /obj/item/reagent_containers/hypospray/medipen, /obj/item/reagent_containers/dropper, + /obj/item/implanter, /obj/item/screwdriver, /obj/item/weldingtool/mini, + /obj/item/device/firing_pin + )) + +/datum/component/storage/concrete/pockets/shoes/clown/Initialize() + . = ..() + can_hold = typecacheof(list( + /obj/item/kitchen/knife, /obj/item/switchblade, /obj/item/pen, + /obj/item/scalpel, /obj/item/reagent_containers/syringe, /obj/item/dnainjector, + /obj/item/reagent_containers/hypospray/medipen, /obj/item/reagent_containers/dropper, + /obj/item/implanter, /obj/item/screwdriver, /obj/item/weldingtool/mini, + /obj/item/device/firing_pin, /obj/item/bikehorn)) + +/datum/component/storage/concrete/pockets/pocketprotector + max_items = 3 + max_w_class = WEIGHT_CLASS_TINY + +/datum/component/storage/concrete/pockets/pocketprotector/Initialize() + . = ..() + can_hold = typecacheof(list( //Same items as a PDA + /obj/item/pen, + /obj/item/toy/crayon, + /obj/item/lipstick, + /obj/item/device/flashlight/pen, + /obj/item/clothing/mask/cigarette)) \ No newline at end of file diff --git a/code/datums/components/storage/concrete/rped.dm b/code/datums/components/storage/concrete/rped.dm new file mode 100644 index 0000000000..9966fa3749 --- /dev/null +++ b/code/datums/components/storage/concrete/rped.dm @@ -0,0 +1,31 @@ +/datum/component/storage/concrete/rped + collection_mode = COLLECT_EVERYTHING + allow_quick_gather = TRUE + allow_quick_empty = TRUE + click_gather = TRUE + max_w_class = WEIGHT_CLASS_NORMAL + max_combined_w_class = 100 + max_items = 50 + display_numerical_stacking = TRUE + +/datum/component/storage/concrete/rped/can_be_inserted(obj/item/I, stop_messages, mob/M) + . = ..() + if(!I.get_part_rating() && !stop_messages) + to_chat(M, "[parent] only accepts machine parts!") + return FALSE + +/datum/component/storage/concrete/bluespace/rped + collection_mode = COLLECT_EVERYTHING + allow_quick_gather = TRUE + allow_quick_empty = TRUE + click_gather = TRUE + max_w_class = WEIGHT_CLASS_NORMAL + max_combined_w_class = 800 + max_items = 400 + display_numerical_stacking = TRUE + +/datum/component/storage/concrete/bluespace/rped/can_be_inserted(obj/item/I, stop_messages, mob/M) + . = ..() + if(!I.get_part_rating() && !stop_messages) + to_chat(M, "[parent] only accepts machine parts!") + return FALSE diff --git a/code/datums/components/storage/concrete/special.dm b/code/datums/components/storage/concrete/special.dm new file mode 100644 index 0000000000..556e9e9fc9 --- /dev/null +++ b/code/datums/components/storage/concrete/special.dm @@ -0,0 +1,5 @@ +/datum/component/storage/concrete/secret_satchel/can_be_inserted(I,msg,user) + if(SSpersistence.spawned_objects[I]) + to_chat(user, "[I] is unstable after its journey through space and time, it wouldn't survive another trip.") + return FALSE + return ..() diff --git a/code/datums/components/storage/concrete/stack.dm b/code/datums/components/storage/concrete/stack.dm new file mode 100644 index 0000000000..1f0c44c650 --- /dev/null +++ b/code/datums/components/storage/concrete/stack.dm @@ -0,0 +1,67 @@ +//Stack-only storage. +/datum/component/storage/concrete/stack + display_numerical_stacking = TRUE + var/max_combined_stack_amount = 300 + max_w_class = WEIGHT_CLASS_NORMAL + max_combined_w_class = WEIGHT_CLASS_NORMAL * 14 + +/datum/component/storage/concrete/stack/proc/total_stack_amount() + . = 0 + var/atom/real_location = real_location() + for(var/i in real_location) + var/obj/item/stack/S = i + if(!istype(S)) + continue + . += S.amount + +/datum/component/storage/concrete/stack/proc/remaining_space() + return max(0, max_combined_stack_amount - total_stack_amount()) + +//emptying procs do not need modification as stacks automatically merge. + +/datum/component/storage/concrete/stack/_insert_physical_item(obj/item/I, override = FALSE) + if(!istype(I, /obj/item/stack)) + if(override) + return ..() + return FALSE + var/atom/real_location = real_location() + var/obj/item/stack/S = I + var/can_insert = min(S.amount, remaining_space()) + if(!can_insert) + return FALSE + for(var/i in real_location) //combine. + if(QDELETED(I)) + return + var/obj/item/stack/_S = i + if(!istype(_S)) + continue + if(_S.merge_type == S.merge_type) + _S.add(can_insert) + S.use(can_insert, TRUE) + return TRUE + return ..(S.change_stack(null, can_insert), override) + +/datum/component/storage/concrete/stack/remove_from_storage(obj/item/I, atom/new_location) + var/atom/real_location = real_location() + var/obj/item/stack/S = I + if(!istype(S)) + return ..() + if(S.amount > S.max_amount) + var/overrun = S.amount - S.max_amount + S.amount = S.max_amount + var/obj/item/stack/temp = new S.type(real_location, overrun) + handle_item_insertion(temp) + return ..(S, new_location) + +/datum/component/storage/concrete/stack/_process_numerical_display() + var/atom/real_location = real_location() + . = list() + for(var/i in real_location) + var/obj/item/stack/I = i + if(!istype(I) || QDELETED(I)) //We're specialized stack storage, just ignore non stacks. + continue + if(!.[I.merge_type]) + .[I.merge_type] = new /datum/numbered_display(I, I.amount) + else + var/datum/numbered_display/ND = .[I.merge_type] + ND.number += I.amount diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm new file mode 100644 index 0000000000..ce9e8ab72a --- /dev/null +++ b/code/datums/components/storage/storage.dm @@ -0,0 +1,730 @@ +#define COLLECT_ONE 0 +#define COLLECT_EVERYTHING 1 +#define COLLECT_SAME 2 + +#define DROP_NOTHING 0 +#define DROP_AT_PARENT 1 +#define DROP_AT_LOCATION 2 + +// External storage-related logic: +// /mob/proc/ClickOn() in /_onclick/click.dm - clicking items in storages +// /mob/living/Move() in /modules/mob/living/living.dm - hiding storage boxes on mob movement + +/datum/component/storage + dupe_mode = COMPONENT_DUPE_UNIQUE + var/datum/component/storage/concrete/master //If not null, all actions act on master and this is just an access point. + + var/list/can_hold //if this is set, only things in this typecache will fit. + var/list/cant_hold //if this is set, anything in this typecache will not be able to fit. + + var/list/mob/is_using //lazy list of mobs looking at the contents of this storage. + + var/locked = FALSE //when locked nothing can see inside or use it. + + var/max_w_class = WEIGHT_CLASS_SMALL //max size of objects that will fit. + var/max_combined_w_class = 14 //max combined sizes of objects that will fit. + var/max_items = 7 //max number of objects that will fit. + + var/emp_shielded = FALSE + + var/silent = FALSE //whether this makes a message when things are put in. + var/click_gather = FALSE //whether this can be clicked on items to pick it up rather than the other way around. + var/rustle_sound = TRUE //play rustle sound on interact. + var/allow_quick_empty = FALSE //allow empty verb which allows dumping on the floor of everything inside quickly. + var/allow_quick_gather = FALSE //allow toggle mob verb which toggles collecting all items from a tile. + + var/collection_mode = COLLECT_EVERYTHING + + var/insert_preposition = "in" //you put things "in" a bag, but "on" a tray. + + var/display_numerical_stacking = FALSE //stack things of the same type and show as a single object with a number. + + var/obj/screen/storage/boxes //storage display object + var/obj/screen/close/closer //close button object + + var/allow_big_nesting = FALSE //allow storage objects of the same or greater size. + + var/attack_hand_interact = TRUE //interact on attack hand. + var/quickdraw = FALSE //altclick interact + + var/datum/action/item_action/storage_gather_mode/modeswitch_action + + //Screen variables: Do not mess with these vars unless you know what you're doing. They're not defines so storage that isn't in the same location can be supported in the future. + var/screen_max_columns = 7 //These two determine maximum screen sizes. + var/screen_max_rows = INFINITY + var/screen_pixel_x = 16 //These two are pixel values for screen loc of boxes and closer + var/screen_pixel_y = 16 + var/screen_start_x = 4 //These two are where the storage starts being rendered, screen_loc wise. + var/screen_start_y = 2 + //End + +/datum/component/storage/Initialize(datum/component/storage/concrete/master) + if(!isatom(parent)) + . = COMPONENT_INCOMPATIBLE + if(master) + change_master(master) + boxes = new(null, src) + closer = new(null, src) + orient2hud() + + RegisterSignal(COMSIG_CONTAINS_STORAGE, .proc/on_check) + RegisterSignal(COMSIG_IS_STORAGE_LOCKED, .proc/check_locked) + RegisterSignal(COMSIG_TRY_STORAGE_SHOW, .proc/signal_show_attempt) + RegisterSignal(COMSIG_TRY_STORAGE_INSERT, .proc/signal_insertion_attempt) + RegisterSignal(COMSIG_TRY_STORAGE_CAN_INSERT, .proc/signal_can_insert) + RegisterSignal(COMSIG_TRY_STORAGE_TAKE_TYPE, .proc/signal_take_type) + RegisterSignal(COMSIG_TRY_STORAGE_FILL_TYPE, .proc/signal_fill_type) + RegisterSignal(COMSIG_TRY_STORAGE_SET_LOCKSTATE, .proc/set_locked) + RegisterSignal(COMSIG_TRY_STORAGE_TAKE, .proc/signal_take_obj) + RegisterSignal(COMSIG_TRY_STORAGE_QUICK_EMPTY, .proc/signal_quick_empty) + RegisterSignal(COMSIG_TRY_STORAGE_HIDE_FROM, .proc/signal_hide_attempt) + RegisterSignal(COMSIG_TRY_STORAGE_HIDE_ALL, .proc/close_all) + RegisterSignal(COMSIG_TRY_STORAGE_RETURN_INVENTORY, .proc/signal_return_inv) + + RegisterSignal(COMSIG_PARENT_ATTACKBY, .proc/attackby) + + RegisterSignal(COMSIG_ATOM_ATTACK_HAND, .proc/on_attack_hand) + RegisterSignal(COMSIG_ATOM_ATTACK_PAW, .proc/on_attack_hand) + RegisterSignal(COMSIG_ATOM_EMP_ACT, .proc/emp_act) + RegisterSignal(COMSIG_ATOM_ATTACK_GHOST, .proc/show_to_ghost) + RegisterSignal(COMSIG_ATOM_EXITED, .proc/_removal_reset) + + RegisterSignal(COMSIG_ITEM_PRE_ATTACK, .proc/preattack_intercept) + RegisterSignal(COMSIG_ITEM_ATTACK_SELF, .proc/attack_self) + RegisterSignal(COMSIG_ITEM_PICKUP, .proc/signal_on_pickup) + + RegisterSignal(COMSIG_MOVABLE_THROW, .proc/close_all) + + RegisterSignal(COMSIG_CLICK_ALT, .proc/on_alt_click) + RegisterSignal(COMSIG_MOUSEDROP_ONTO, .proc/mousedrop_onto) + RegisterSignal(COMSIG_MOUSEDROPPED_ONTO, .proc/mousedrop_recieve) + + update_actions() + +/datum/component/storage/Destroy() + close_all() + QDEL_NULL(boxes) + QDEL_NULL(closer) + LAZYCLEARLIST(is_using) + return ..() + +/datum/component/storage/OnTransfer(datum/new_parent) + update_actions() + +/datum/component/storage/proc/update_actions() + QDEL_NULL(modeswitch_action) + if(!isitem(parent) || !allow_quick_gather) + return + var/obj/item/I = parent + modeswitch_action = new(I) + if(I.obj_flags & IN_INVENTORY) + var/mob/M = I.loc + if(!istype(M)) + return + modeswitch_action.Grant(M) + +/datum/component/storage/proc/change_master(datum/component/storage/concrete/new_master) + if(!istype(new_master)) + return FALSE + master.on_slave_unlink(src) + master = new_master + master.on_slave_link(src) + return TRUE + +/datum/component/storage/proc/master() + if(master == src) + return //infinite loops yo. + return master + +/datum/component/storage/proc/real_location() + var/datum/component/storage/concrete/master = master() + return master? master.real_location() : null + +/datum/component/storage/proc/attack_self(mob/M) + if(locked) + to_chat(M, "[parent] seems to be locked!") + return FALSE + if((M.get_active_held_item() == parent) && allow_quick_empty) + quick_empty(M) + +/datum/component/storage/proc/preattack_intercept(obj/O, mob/M, params) + if(!isitem(O) || !click_gather || O.SendSignal(COMSIG_CONTAINS_STORAGE)) + return FALSE + . = COMPONENT_NO_ATTACK + if(locked) + to_chat(M, "[parent] seems to be locked!") + return FALSE + var/obj/item/I = O + if(collection_mode == COLLECT_ONE) + if(can_be_inserted(I, null, M)) + handle_item_insertion(I, null, M) + return + if(!isturf(I.loc)) + return + var/list/things = I.loc.contents.Copy() + if(collection_mode == COLLECT_SAME) + things = typecache_filter_list(things, typecacheof(I.type)) + var/len = length(things) + if(!len) + to_chat(M, "You failed to pick up anything with [parent].") + return + var/datum/progressbar/progress = new(M, len, I.loc) + var/list/rejections = list() + while(do_after(M, 10, TRUE, parent, FALSE, CALLBACK(src, .proc/handle_mass_pickup, things, I.loc, rejections, progress))) + stoplag(1) + qdel(progress) + to_chat(M, "You put everything you could [insert_preposition] [parent].") + +/datum/component/storage/proc/handle_mass_item_insertion(list/things, datum/component/storage/src_object, mob/user, datum/progressbar/progress) + var/atom/source_real_location = src_object.real_location() + for(var/obj/item/I in things) + things -= I + if(I.loc != source_real_location) + continue + if(user.active_storage != src_object) + if(I.on_found(user)) + break + if(can_be_inserted(I,FALSE,user)) + handle_item_insertion(I, TRUE, user) + if (TICK_CHECK) + progress.update(progress.goal - things.len) + return TRUE + + progress.update(progress.goal - things.len) + return FALSE + +/datum/component/storage/proc/handle_mass_pickup(list/things, atom/thing_loc, list/rejections, datum/progressbar/progress) + var/atom/real_location = real_location() + for(var/obj/item/I in things) + things -= I + if(I.loc != thing_loc) + continue + if(I.type in rejections) // To limit bag spamming: any given type only complains once + continue + if(!can_be_inserted(I, stop_messages = TRUE)) // Note can_be_inserted still makes noise when the answer is no + if(real_location.contents.len >= max_items) + break + rejections += I.type // therefore full bags are still a little spammy + continue + + handle_item_insertion(I, TRUE) //The TRUE stops the "You put the [parent] into [S]" insertion message from being displayed. + + if (TICK_CHECK) + progress.update(progress.goal - things.len) + return TRUE + + progress.update(progress.goal - things.len) + return FALSE + +/datum/component/storage/proc/quick_empty(mob/M) + var/atom/A = parent + if((!ishuman(M) && (A.loc != M)) || (M.stat != CONSCIOUS) || M.restrained() || !M.canmove) + return + if(locked) + to_chat(M, "[parent] seems to be locked!") + return FALSE + A.add_fingerprint(M) + to_chat(M, "You start dumping out [parent].") + var/turf/T = get_turf(A) + var/list/things = contents() + var/datum/progressbar/progress = new(M, length(things), T) + while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress))) + stoplag(1) + qdel(progress) + +/datum/component/storage/proc/mass_remove_from_storage(atom/target, list/things, datum/progressbar/progress) + var/atom/real_location = real_location() + for(var/obj/item/I in things) + things -= I + if(I.loc != real_location) + continue + remove_from_storage(I, target) + if(TICK_CHECK) + progress.update(progress.goal - length(things)) + return TRUE + progress.update(progress.goal - length(things)) + return FALSE + +/datum/component/storage/proc/do_quick_empty(atom/_target) + if(!_target) + _target = get_turf(parent) + if(usr) + hide_from(usr) + var/list/contents = contents() + var/atom/real_location = real_location() + for(var/obj/item/I in contents) + if(I.loc != real_location) + continue + remove_from_storage(I, _target) + return TRUE + +/datum/component/storage/proc/set_locked(new_state) + locked = new_state + if(locked) + close_all() + +/datum/component/storage/proc/_process_numerical_display() + . = list() + var/atom/real_location = real_location() + for(var/obj/item/I in real_location.contents) + if(QDELETED(I)) + continue + if(!.[I.type]) + .[I.type] = new /datum/numbered_display(I, 1) + else + var/datum/numbered_display/ND = .[I.type] + ND.number++ + +//This proc determines the size of the inventory to be displayed. Please touch it only if you know what you're doing. +/datum/component/storage/proc/orient2hud() + var/atom/real_location = real_location() + var/adjusted_contents = real_location.contents.len + + //Numbered contents display + var/list/datum/numbered_display/numbered_contents + if(display_numerical_stacking) + numbered_contents = _process_numerical_display() + adjusted_contents = numbered_contents.len + + var/columns = CLAMP(max_items, 1, screen_max_columns) + var/rows = CLAMP(CEILING(adjusted_contents / columns, 1), 1, screen_max_rows) + standard_orient_objs(rows, columns, numbered_contents) + +//This proc draws out the inventory and places the items on it. It uses the standard position. +/datum/component/storage/proc/standard_orient_objs(rows, cols, list/obj/item/numerical_display_contents) + boxes.screen_loc = "[screen_start_x]:[screen_pixel_x],[screen_start_y]:[screen_pixel_y] to [screen_start_x+cols-1]:[screen_pixel_x],[screen_start_y+rows-1]:[screen_pixel_y]" + var/cx = screen_start_x + var/cy = screen_start_y + if(islist(numerical_display_contents)) + for(var/type in numerical_display_contents) + var/datum/numbered_display/ND = numerical_display_contents[type] + ND.sample_object.mouse_opacity = MOUSE_OPACITY_OPAQUE + ND.sample_object.screen_loc = "[cx]:[screen_pixel_x],[cy]:[screen_pixel_y]" + ND.sample_object.maptext = "[(ND.number > 1)? "[ND.number]" : ""]" + ND.sample_object.layer = ABOVE_HUD_LAYER + ND.sample_object.plane = ABOVE_HUD_PLANE + cx++ + if(cx - screen_start_x >= cols) + cx = screen_start_x + cy++ + if(cy - screen_start_y >= rows) + break + else + var/atom/real_location = real_location() + for(var/obj/O in real_location) + if(QDELETED(O)) + continue + O.mouse_opacity = MOUSE_OPACITY_OPAQUE //This is here so storage items that spawn with contents correctly have the "click around item to equip" + O.screen_loc = "[cx]:[screen_pixel_x],[cy]:[screen_pixel_y]" + O.maptext = "" + O.layer = ABOVE_HUD_LAYER + O.plane = ABOVE_HUD_PLANE + cx++ + if(cx - screen_start_x >= cols) + cx = screen_start_x + cy++ + if(cy - screen_start_y >= rows) + break + closer.screen_loc = "[screen_start_x + cols]:[screen_pixel_x],[screen_start_y]:[screen_pixel_y]" + +/datum/component/storage/proc/show_to(mob/M) + if(!M.client) + return FALSE + var/atom/real_location = real_location() + if(M.active_storage != src && (M.stat == CONSCIOUS)) + for(var/obj/item/I in real_location) + if(I.on_found(M)) + return FALSE + if(M.active_storage) + M.active_storage.hide_from(M) + orient2hud() + M.client.screen |= boxes + M.client.screen |= closer + M.client.screen |= real_location.contents + M.active_storage = src + LAZYOR(is_using, M) + return TRUE + +/datum/component/storage/proc/hide_from(mob/M) + if(!M.client) + return TRUE + var/atom/real_location = real_location() + M.client.screen -= boxes + M.client.screen -= closer + M.client.screen -= real_location.contents + if(M.active_storage == src) + M.active_storage = null + LAZYREMOVE(is_using, M) + return TRUE + +/datum/component/storage/proc/close(mob/M) + hide_from(M) + +/datum/component/storage/proc/close_all() + . = FALSE + for(var/mob/M in can_see_contents()) + close(M) + . = TRUE //returns TRUE if any mobs actually got a close(M) call + +/datum/component/storage/proc/emp_act(severity) + var/atom/A = parent + if(!isliving(A.loc) && !emp_shielded) + var/datum/component/storage/concrete/master = master() + master.emp_act(severity) + +//This proc draws out the inventory and places the items on it. tx and ty are the upper left tile and mx, my are the bottm right. +//The numbers are calculated from the bottom-left The bottom-left slot being 1,1. +/datum/component/storage/proc/orient_objs(tx, ty, mx, my) + var/atom/real_location = real_location() + var/cx = tx + var/cy = ty + boxes.screen_loc = "[tx]:,[ty] to [mx],[my]" + for(var/obj/O in real_location) + if(QDELETED(O)) + continue + O.screen_loc = "[cx],[cy]" + O.layer = ABOVE_HUD_LAYER + O.plane = ABOVE_HUD_PLANE + cx++ + if(cx > mx) + cx = tx + cy-- + closer.screen_loc = "[mx+1],[my]" + +//Resets something that is being removed from storage. +/datum/component/storage/proc/_removal_reset(atom/movable/thing) + if(!istype(thing)) + return FALSE + var/datum/component/storage/concrete/master = master() + if(!istype(master)) + return FALSE + return master._removal_reset(thing) + +//Call this proc to handle the removal of an item from the storage item. The item will be moved to the new_location target, if that is null it's being deleted +/datum/component/storage/proc/remove_from_storage(atom/movable/AM, atom/new_location) + if(!istype(AM)) + return FALSE + var/datum/component/storage/concrete/master = master() + if(!istype(master)) + return FALSE + return master.remove_from_storage(AM, new_location) + +/datum/component/storage/proc/refresh_mob_views() + var/list/seeing = can_see_contents() + for(var/i in seeing) + show_to(i) + return TRUE + +/datum/component/storage/proc/can_see_contents() + var/list/cansee = list() + for(var/mob/M in is_using) + if(M.active_storage == src && M.client) + cansee |= M + else + LAZYREMOVE(is_using, M) + return cansee + +//Tries to dump content +/datum/component/storage/proc/dump_content_at(atom/dest_object, mob/M) + var/atom/A = parent + var/atom/dump_destination = dest_object.get_dumping_location() + if(A.Adjacent(M) && dump_destination && M.Adjacent(dump_destination)) + if(locked) + to_chat(M, "[parent] seems to be locked!") + return FALSE + if(dump_destination.storage_contents_dump_act(src, M)) + playsound(A, "rustle", 50, 1, -5) + return TRUE + return FALSE + +//This proc is called when you want to place an item into the storage item. +/datum/component/storage/proc/attackby(obj/item/I, mob/M, params) + if(istype(I, /obj/item/hand_labeler)) + var/obj/item/hand_labeler/labeler = I + if(labeler.mode) + return FALSE + . = TRUE //no afterattack + if(iscyborg(M)) + return + if(!can_be_inserted(I, FALSE, M)) + var/atom/real_location = real_location() + if(real_location.contents.len >= max_items) //don't use items on the backpack if they don't fit + return TRUE + return FALSE + handle_item_insertion(I, FALSE, M) + +/datum/component/storage/proc/return_inv() + . = list() + . += contents() + for(var/i in contents()) + var/atom/a = i + GET_COMPONENT_FROM(STR, /datum/component/storage, a) + if(STR) + . += STR.return_inv() + +/datum/component/storage/proc/contents() //ONLY USE IF YOU NEED TO COPY CONTENTS OF REAL LOCATION, COPYING IS NOT AS FAST AS DIRECT ACCESS! + var/atom/real_location = real_location() + return real_location.contents.Copy() + +/datum/component/storage/proc/signal_return_inv(list/interface) + if(!islist(interface)) + return FALSE + interface |= return_inv() + return TRUE + +/datum/component/storage/proc/mousedrop_onto(atom/over_object, mob/M) + set waitfor = FALSE + . = COMPONENT_NO_MOUSEDROP + var/atom/A = parent + if(ismob(M)) //all the check for item manipulation are in other places, you can safely open any storages as anything and its not buggy, i checked + A.add_fingerprint(M) + if(!over_object) + return FALSE + if(ismecha(M.loc)) // stops inventory actions in a mech + return FALSE + // this must come before the screen objects only block, dunno why it wasn't before + if(over_object == M) + user_show_to_mob(M) + if(!M.incapacitated()) + if(!istype(over_object, /obj/screen)) + dump_content_at(over_object, M) + return + if(A.loc != M) + return + playsound(A, "rustle", 50, 1, -5) + if(istype(over_object, /obj/screen/inventory/hand)) + var/obj/screen/inventory/hand/H = over_object + M.putItemFromInventoryInHandIfPossible(A, H.held_index) + return + A.add_fingerprint(M) + +/datum/component/storage/proc/user_show_to_mob(mob/M, force = FALSE) + var/atom/A = parent + if(!istype(M)) + return FALSE + A.add_fingerprint(M) + if(locked) + to_chat(M, "[parent] seems to be locked!") + return FALSE + if(M.CanReach(parent, view_only = TRUE)) + show_to(M) + +/datum/component/storage/proc/mousedrop_recieve(atom/movable/O, mob/M) + if(isitem(O)) + var/obj/item/I = O + if(iscarbon(M) || isdrone(M)) + var/mob/living/L = M + if(!L.incapacitated() && I == L.get_active_held_item()) + if(!I.SendSignal(COMSIG_CONTAINS_STORAGE) && can_be_inserted(I, FALSE)) //If it has storage it should be trying to dump, not insert. + handle_item_insertion(I, FALSE, L) + +//This proc return 1 if the item can be picked up and 0 if it can't. +//Set the stop_messages to stop it from printing messages +/datum/component/storage/proc/can_be_inserted(obj/item/I, stop_messages = FALSE, mob/M) + if(!istype(I) || (I.flags_1 & ABSTRACT_1)) + return FALSE //Not an item + var/atom/real_location = real_location() + var/atom/parent = src.parent + if(real_location == I.loc) + return FALSE //Means the item is already in the storage item + if(locked) + if(M) + parent.add_fingerprint(M) + to_chat(M, "[parent] seems to be locked!") + return FALSE + if(real_location.contents.len >= max_items) + if(!stop_messages) + to_chat(M, "[parent] is full, make some space!") + return FALSE //Storage item is full + if(length(can_hold)) + if(!is_type_in_typecache(I, can_hold)) + if(!stop_messages) + to_chat(M, "[parent] cannot hold [I]!") + return FALSE + if(is_type_in_typecache(I, cant_hold)) //Check for specific items which this container can't hold. + if(!stop_messages) + to_chat(M, "[parent] cannot hold [I]!") + return FALSE + if(I.w_class > max_w_class) + if(!stop_messages) + to_chat(M, "[I] is too big for [parent]!") + return FALSE + var/sum_w_class = I.w_class + for(var/obj/item/_I in real_location) + sum_w_class += _I.w_class //Adds up the combined w_classes which will be in the storage item if the item is added to it. + if(sum_w_class > max_combined_w_class) + if(!stop_messages) + to_chat(M, "[I] won't fit in [parent], make some space!") + return FALSE + if(isitem(parent)) + var/obj/item/IP = parent + GET_COMPONENT_FROM(STR_I, /datum/component/storage, I) + if((I.w_class >= IP.w_class) && STR_I && !allow_big_nesting) + if(!stop_messages) + to_chat(M, "[IP] cannot hold [I] as it's a storage item of the same size!") + return FALSE //To prevent the stacking of same sized storage items. + if(I.flags_1 & NODROP_1) //SHOULD be handled in unEquip, but better safe than sorry. + to_chat(M, "\the [I] is stuck to your hand, you can't put it in \the [parent]!") + return FALSE + var/datum/component/storage/concrete/master = master() + if(!istype(master)) + return FALSE + return master.slave_can_insert_object(src, I, stop_messages, M) + +/datum/component/storage/proc/_insert_physical_item(obj/item/I, override = FALSE) + return FALSE + +//This proc handles items being inserted. It does not perform any checks of whether an item can or can't be inserted. That's done by can_be_inserted() +//The stop_warning parameter will stop the insertion message from being displayed. It is intended for cases where you are inserting multiple items at once, +//such as when picking up all the items on a tile with one click. +/datum/component/storage/proc/handle_item_insertion(obj/item/I, prevent_warning = FALSE, mob/M, datum/component/storage/remote) + var/atom/parent = src.parent + var/datum/component/storage/concrete/master = master() + if(!istype(master)) + return FALSE + if(silent) + prevent_warning = TRUE + if(M) + parent.add_fingerprint(M) + . = master.handle_item_insertion_from_slave(src, I, prevent_warning, M) + +/datum/component/storage/proc/mob_item_insertion_feedback(mob/user, mob/M, obj/item/I, override = FALSE) + if(silent && !override) + return + if(rustle_sound) + playsound(parent, "rustle", 50, 1, -5) + for(var/mob/viewing in viewers(user, null)) + if(M == viewing) + to_chat(usr, "You put [I] [insert_preposition]to [parent].") + else if(in_range(M, viewing)) //If someone is standing close enough, they can tell what it is... + viewing.show_message("[M] puts [I] [insert_preposition]to [parent].", 1) + else if(I && I.w_class >= 3) //Otherwise they can only see large or normal items from a distance... + viewing.show_message("[M] puts [I] [insert_preposition]to [parent].", 1) + +/datum/component/storage/proc/update_icon() + if(isobj(parent)) + var/obj/O = parent + O.update_icon() + +/datum/component/storage/proc/signal_insertion_attempt(obj/item/I, mob/M, silent = FALSE, force = FALSE) + if(!force && !can_be_inserted(I, TRUE, M)) + return FALSE + return handle_item_insertion(I, silent, M) + +/datum/component/storage/proc/signal_can_insert(obj/item/I, mob/M, silent = FALSE) + return can_be_inserted(I, silent, M) + +/datum/component/storage/proc/show_to_ghost(mob/dead/observer/M) + return user_show_to_mob(M, TRUE) + +/datum/component/storage/proc/signal_show_attempt(mob/showto, force = FALSE) + return user_show_to_mob(showto, force) + +/datum/component/storage/proc/on_check() + return TRUE + +/datum/component/storage/proc/check_locked() + return locked + +/datum/component/storage/proc/signal_take_type(type, atom/destination, amount = INFINITY, check_adjacent = FALSE, force = FALSE, mob/user, list/inserted) + if(!force) + if(check_adjacent) + if(user) + if(!user.CanReach(destination) || !user.CanReach(parent)) + return FALSE + else if(!destination.CanReachStorage(parent)) + return FALSE + var/list/taking = typecache_filter_list(contents(), typecacheof(type)) + if(length(taking) > amount) + taking.Cut(amount) + if(inserted) //duplicated code for performance, don't bother checking retval/checking for list every item. + for(var/i in taking) + if(remove_from_storage(i, destination)) + inserted |= i + else + for(var/i in taking) + remove_from_storage(i, destination) + return TRUE + +/datum/component/storage/proc/remaining_space_items() + var/atom/real_location = real_location() + return max(0, max_items - real_location.contents.len) + +/datum/component/storage/proc/signal_fill_type(type, amount = 20, force = FALSE) + var/atom/real_location = real_location() + if(!force) + amount = min(remaining_space_items(), amount) + for(var/i in 1 to amount) + handle_item_insertion(new type(real_location), TRUE) + CHECK_TICK + return TRUE + +/datum/component/storage/proc/on_attack_hand(mob/user) + var/atom/A = parent + if(!attack_hand_interact) + return + if(user.active_storage == src && A.loc == user) //if you're already looking inside the storage item + user.active_storage.close(user) + close(user) + . = COMPONENT_NO_ATTACK_HAND + return + + if(rustle_sound) + playsound(A, "rustle", 50, 1, -5) + + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if(H.l_store == A && !H.get_active_held_item()) //Prevents opening if it's in a pocket. + . = COMPONENT_NO_ATTACK_HAND + H.put_in_hands(A) + H.l_store = null + return + if(H.r_store == A && !H.get_active_held_item()) + . = COMPONENT_NO_ATTACK_HAND + H.put_in_hands(A) + H.r_store = null + return + + if(A.loc == user) + . = COMPONENT_NO_ATTACK_HAND + show_to(user) + +/datum/component/storage/proc/signal_on_pickup(mob/user) + var/atom/A = parent + update_actions() + for(var/mob/M in range(1, A)) + if(M.active_storage == src) + close(M) + +/datum/component/storage/proc/signal_take_obj(atom/movable/AM, new_loc, force = FALSE) + if(!(AM in real_location())) + return FALSE + return remove_from_storage(AM, new_loc) + +/datum/component/storage/proc/signal_quick_empty(atom/loctarget) + return do_quick_empty(loctarget) + +/datum/component/storage/proc/signal_hide_attempt(mob/target) + return hide_from(target) + +/datum/component/storage/proc/on_alt_click(mob/user) + if(!isliving(user) || user.incapacitated() || !quickdraw || !user.CanReach(parent)) + return + var/obj/item/I = locate() in real_location() + if(!I) + return + remove_from_storage(I, get_turf(user)) + if(!user.put_in_hands(I)) + to_chat(user, "You fumble for [I] and it falls on the floor.") + return + user.visible_message("[user] draws [I] from [parent]!", "You draw [I] from [parent].") + +/datum/component/storage/proc/gather_mode_switch(mob/user) + collection_mode = (collection_mode+1)%3 + switch(collection_mode) + if(COLLECT_SAME) + to_chat(user, "[parent] now picks up all items of a single type at once.") + if(COLLECT_EVERYTHING) + to_chat(user, "[parent] now picks up all items in a tile at once.") + if(COLLECT_ONE) + to_chat(user, "[parent] now picks up one item at a time.") diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm index 7955f81e66..74d4b90493 100644 --- a/code/datums/diseases/_MobProcs.dm +++ b/code/datums/diseases/_MobProcs.dm @@ -17,6 +17,14 @@ if(HasDisease(D)) return FALSE + var/can_infect = FALSE + for(var/host_type in D.infectable_biotypes) + if(host_type in mob_biotypes) + can_infect = TRUE + break + if(!can_infect) + return FALSE + if(!(type in D.viable_mobtypes)) return FALSE @@ -132,14 +140,6 @@ if(has_trait(TRAIT_VIRUSIMMUNE) && !D.bypasses_immunity) return FALSE - var/can_infect = FALSE - for(var/host_type in D.infectable_hosts) - if(host_type in dna.species.species_traits) - can_infect = TRUE - break - if(!can_infect) - return FALSE - for(var/thing in D.required_organs) if(!((locate(thing) in bodyparts) || (locate(thing) in internal_organs))) return FALSE diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index 614cd14abb..221dd7e804 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -30,7 +30,7 @@ var/list/required_organs = list() var/needs_all_cures = TRUE var/list/strain_data = list() //dna_spread special bullshit - var/list/infectable_hosts = list(SPECIES_ORGANIC) //if the disease can spread on organics, synthetics, or undead + var/list/infectable_biotypes = list(MOB_ORGANIC) //if the disease can spread on organics, synthetics, or undead var/process_dead = FALSE //if this ticks while the host is dead /datum/disease/Destroy() @@ -139,7 +139,7 @@ var/static/list/copy_vars = list("name", "visibility_flags", "disease_flags", "spread_flags", "form", "desc", "agent", "spread_text", "cure_text", "max_stages", "stage_prob", "viable_mobtypes", "cures", "infectivity", "cure_chance", "bypasses_immunity", "permeability_mod", "severity", "required_organs", "needs_all_cures", "strain_data", - "infectable_hosts", "process_dead") + "infectable_biotypes", "process_dead") var/datum/disease/D = new type() for(var/V in copy_vars) diff --git a/code/datums/diseases/advance/symptoms/species.dm b/code/datums/diseases/advance/symptoms/species.dm index 837252c1e6..d0c32f3244 100644 --- a/code/datums/diseases/advance/symptoms/species.dm +++ b/code/datums/diseases/advance/symptoms/species.dm @@ -12,7 +12,7 @@ if(!..()) return A.process_dead = TRUE - A.infectable_hosts |= SPECIES_UNDEAD + A.infectable_biotypes |= MOB_UNDEAD /datum/symptom/inorganic_adaptation name = "Inorganic Biology" @@ -27,4 +27,4 @@ /datum/symptom/inorganic_adaptation/Start(datum/disease/advance/A) if(!..()) return - A.infectable_hosts |= SPECIES_INORGANIC \ No newline at end of file + A.infectable_biotypes |= MOB_INORGANIC \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/weakness.dm b/code/datums/diseases/advance/symptoms/weakness.dm deleted file mode 100644 index a96266effe..0000000000 --- a/code/datums/diseases/advance/symptoms/weakness.dm +++ /dev/null @@ -1,44 +0,0 @@ -/* -////////////////////////////////////// - -Weakness - - Slightly noticeable. - Lowers resistance slightly. - Decreases stage speed moderately. - Decreases transmittablity moderately. - Moderate Level. - -Bonus - Deals stamina damage to the host - -////////////////////////////////////// -*/ - -/datum/symptom/weakness - - name = "Weakness" - stealth = -1 - resistance = -1 - stage_speed = -2 - transmittable = -2 - level = 3 - severity = 3 - -/datum/symptom/weakness/Activate(datum/disease/advance/A) - ..() - if(prob(SYMPTOM_ACTIVATION_PROB)) - var/mob/living/M = A.affected_mob - switch(A.stage) - if(1, 2) - to_chat(M, "[pick("You feel weak.", "You feel lazy.")]") - if(3, 4) - to_chat(M, "[pick("You feel very frail.", "You think you might faint.")]") - M.adjustStaminaLoss(15) - else - to_chat(M, "[pick("You feel tremendously weak!", "Your body trembles as exhaustion creeps over you.")]") - M.adjustStaminaLoss(30) - if(M.getStaminaLoss() > 60 && !M.stat) - M.visible_message("[M] faints!", "You swoon and faint...") - M.AdjustSleeping(100) - return diff --git a/code/datums/diseases/beesease.dm b/code/datums/diseases/beesease.dm index f6504fa464..ab64fd515c 100644 --- a/code/datums/diseases/beesease.dm +++ b/code/datums/diseases/beesease.dm @@ -10,7 +10,7 @@ viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) desc = "If left untreated subject will regurgitate bees." severity = DISEASE_SEVERITY_MEDIUM - infectable_hosts = list(SPECIES_ORGANIC, SPECIES_UNDEAD) //bees nesting in corpses + infectable_biotypes = list(MOB_ORGANIC, MOB_UNDEAD) //bees nesting in corpses /datum/disease/beesease/stage_act() ..() diff --git a/code/datums/diseases/magnitis.dm b/code/datums/diseases/magnitis.dm index 13959e9bda..7c5f05c440 100644 --- a/code/datums/diseases/magnitis.dm +++ b/code/datums/diseases/magnitis.dm @@ -10,7 +10,7 @@ permeability_mod = 0.75 desc = "This disease disrupts the magnetic field of your body, making it act as if a powerful magnet. Injections of iron help stabilize the field." severity = DISEASE_SEVERITY_MEDIUM - infectable_hosts = list(SPECIES_ORGANIC, SPECIES_ROBOTIC) + infectable_biotypes = list(MOB_ORGANIC, MOB_ROBOTIC) process_dead = TRUE /datum/disease/magnitis/stage_act() diff --git a/code/datums/diseases/parrotpossession.dm b/code/datums/diseases/parrotpossession.dm index 4fe0dc21b0..66395ef5a5 100644 --- a/code/datums/diseases/parrotpossession.dm +++ b/code/datums/diseases/parrotpossession.dm @@ -11,7 +11,7 @@ viable_mobtypes = list(/mob/living/carbon/human) desc = "Subject is possesed by the vengeful spirit of a parrot. Call the priest." severity = DISEASE_SEVERITY_MEDIUM - infectable_hosts = list(SPECIES_ORGANIC, SPECIES_UNDEAD, SPECIES_INORGANIC, SPECIES_ROBOTIC) + infectable_biotypes = list(MOB_ORGANIC, MOB_UNDEAD, MOB_INORGANIC, MOB_ROBOTIC) bypasses_immunity = TRUE //2spook var/mob/living/simple_animal/parrot/Poly/ghost/parrot diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index db88bd6777..52b63ccd5f 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -149,7 +149,7 @@ stage4 = list("Your skin feels very loose.", "You can feel... something...inside you.") stage5 = list("Your skin feels as if it's about to burst off!") new_form = /mob/living/silicon/robot - infectable_hosts = list(SPECIES_ORGANIC, SPECIES_UNDEAD, SPECIES_ROBOTIC) + infectable_biotypes = list(MOB_ORGANIC, MOB_UNDEAD, MOB_ROBOTIC) /datum/disease/transformation/robot/stage_act() ..() @@ -263,4 +263,4 @@ stage4 = list("You're ravenous.") stage5 = list("You have become a morph.") new_form = /mob/living/simple_animal/hostile/morph - infectable_hosts = list(SPECIES_ORGANIC, SPECIES_INORGANIC, SPECIES_UNDEAD) //magic! + infectable_biotypes = list(MOB_ORGANIC, MOB_INORGANIC, MOB_UNDEAD) //magic! diff --git a/code/datums/mood_events/mood_event.dm b/code/datums/mood_events/mood_event.dm index 6b4301b83a..dfe3049bdd 100644 --- a/code/datums/mood_events/mood_event.dm +++ b/code/datums/mood_events/mood_event.dm @@ -11,6 +11,7 @@ /datum/mood_event/Destroy() remove_effects() + return ..() /datum/mood_event/proc/add_effects(param) return diff --git a/code/datums/mutations.dm b/code/datums/mutations.dm index a171cf91da..7de9ca8b4a 100644 --- a/code/datums/mutations.dm +++ b/code/datums/mutations.dm @@ -56,13 +56,13 @@ GLOBAL_LIST_EMPTY(mutations_list) /datum/mutation/human/proc/on_acquiring(mob/living/carbon/human/owner) if(!owner || !istype(owner) || owner.stat == DEAD || (src in owner.dna.mutations)) - return 1 + return TRUE if(species_allowed.len && !species_allowed.Find(owner.dna.species.id)) - return 1 + return TRUE if(health_req && owner.health < health_req) - return 1 + return TRUE if(limb_req && !owner.get_bodypart(limb_req)) - return 1 + return TRUE owner.dna.mutations.Add(src) if(text_gain_indication) to_chat(owner, text_gain_indication) diff --git a/code/datums/numbered_display.dm b/code/datums/numbered_display.dm new file mode 100644 index 0000000000..9aa880aa75 --- /dev/null +++ b/code/datums/numbered_display.dm @@ -0,0 +1,10 @@ +//Used in storage. +/datum/numbered_display + var/obj/item/sample_object + var/number + +/datum/numbered_display/New(obj/item/sample, _number = 1) + if(!istype(sample)) + qdel(src) + sample_object = sample + number = _number diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm index 404c584fd4..fe18071cf8 100644 --- a/code/datums/shuttles.dm +++ b/code/datums/shuttles.dm @@ -21,6 +21,20 @@ mappath = "[prefix][shuttle_id].dmm" . = ..() +/datum/map_template/shuttle/load(turf/T, centered) + . = ..() + if(!.) + return + var/list/turfs = block( locate(.[MAP_MINX], .[MAP_MINY], .[MAP_MINZ]), + locate(.[MAP_MAXX], .[MAP_MAXY], .[MAP_MAXZ])) + for(var/i in 1 to turfs.len) + var/turf/place = turfs[i] + if(istype(place, /turf/open/space)) // This assumes all shuttles are loaded in a single spot then moved to their real destination. + continue + if(length(place.baseturfs) < 2) // Some snowflake shuttle shit + continue + place.baseturfs.Insert(3, /turf/baseturf_skipover/shuttle) + //Whatever special stuff you want /datum/map_template/shuttle/proc/on_bought() return @@ -60,7 +74,21 @@ port_id = "infiltrator" can_be_bought = FALSE +/datum/map_template/shuttle/aux_base + port_id = "aux_base" + can_be_bought = FALSE +/datum/map_template/shuttle/escape_pod + port_id = "escape_pod" + can_be_bought = FALSE + +/datum/map_template/shuttle/assault_pod + port_id = "assault_pod" + can_be_bought = FALSE + +/datum/map_template/shuttle/pirate + port_id = "pirate" + can_be_bought = FALSE // Shuttles start here: @@ -355,3 +383,27 @@ /datum/map_template/shuttle/arrival/pubby suffix = "pubby" name = "arrival shuttle (Pubby)" + +/datum/map_template/shuttle/arrival/omega + suffix = "omega" + name = "arrival shuttle (Omega)" + +/datum/map_template/shuttle/aux_base/default + suffix = "default" + name = "auxilliary base (Default)" + +/datum/map_template/shuttle/escape_pod/default + suffix = "default" + name = "escape pod (Default)" + +/datum/map_template/shuttle/escape_pod/large + suffix = "large" + name = "escape pod (Large)" + +/datum/map_template/shuttle/assault_pod/default + suffix = "default" + name = "assault pod (Default)" + +/datum/map_template/shuttle/pirate/default + suffix = "default" + name = "pirate ship (Default)" diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index 237a72ffda..753918f618 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -53,9 +53,7 @@ if(!where) where = "at your feet" if(where == "in your backpack") - var/obj/item/storage/B = H.back - B.orient2hud(trait_holder) - B.show_to(trait_holder) + H.back.SendSignal(COMSIG_TRY_STORAGE_SHOW, H) where_text = "There is a precious family [heirloom.name] [where], passed down from generation to generation. Keep it safe!" /datum/trait/family_heirloom/post_add() diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index f5d0ec3bd7..87894dd4d7 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -52,7 +52,6 @@ var/safe = FALSE //Is the area teleport-safe: no space / radiation / aggresive mobs / other dangers var/no_air = null - var/list/related // the other areas of the same type as this var/parallax_movedir = 0 @@ -88,27 +87,10 @@ GLOBAL_LIST_EMPTY(teleportlocs) // === -// Added to fix mech fabs 05/2013 ~Sayu -// This is necessary due to lighting subareas. If you were to go in assuming that things in -// the same logical /area have the parent /area object... well, you would be mistaken. If you -// want to find machines, mobs, etc, in the same logical area, you will need to check all the -// related areas. This returns a master contents list to assist in that. -/proc/area_contents(area/A) - if(!istype(A)) - return null - var/list/contents = list() - for(var/area/LSA in A.related) - contents += LSA.contents - return contents - - - - /area/Initialize() icon_state = "" layer = AREA_LAYER uid = ++global_uid - related = list(src) map_name = name // Save the initial (the name set in the map) name of the area. canSmoothWithAreas = typecacheof(canSmoothWithAreas) @@ -195,11 +177,6 @@ GLOBAL_LIST_EMPTY(teleportlocs) /area/proc/atmosalert(danger_level, obj/source) if(danger_level != atmosalm) if (danger_level==2) - var/list/cameras = list() - for(var/area/RA in related) - for (var/item in RA.cameras) - var/obj/machinery/camera/C = item - cameras += C for (var/item in GLOB.silicon_mobs) var/mob/living/silicon/aiPlayer = item @@ -254,18 +231,12 @@ GLOBAL_LIST_EMPTY(teleportlocs) if(always_unpowered == 1) //no fire alarms in space/asteroid return - var/list/cameras = list() - - for(var/area/RA in related) - if (!( RA.fire )) - RA.set_fire_alarm_effect() - RA.ModifyFiredoors(FALSE) - for(var/item in RA.firealarms) - var/obj/machinery/firealarm/F = item - F.update_icon() - for (var/item in RA.cameras) - var/obj/machinery/camera/C = item - cameras += C + if (!fire) + set_fire_alarm_effect() + ModifyFiredoors(FALSE) + for(var/item in firealarms) + var/obj/machinery/firealarm/F = item + F.update_icon() for (var/item in GLOB.alert_consoles) var/obj/machinery/computer/station_alert/a = item @@ -283,15 +254,14 @@ GLOBAL_LIST_EMPTY(teleportlocs) START_PROCESSING(SSobj, src) /area/proc/firereset(obj/source) - for(var/area/RA in related) - if (RA.fire) - RA.fire = 0 - RA.mouse_opacity = MOUSE_OPACITY_TRANSPARENT - RA.updateicon() - RA.ModifyFiredoors(TRUE) - for(var/item in RA.firealarms) - var/obj/machinery/firealarm/F = item - F.update_icon() + if (fire) + fire = 0 + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + updateicon() + ModifyFiredoors(TRUE) + for(var/item in firealarms) + var/obj/machinery/firealarm/F = item + F.update_icon() for (var/item in GLOB.silicon_mobs) var/mob/living/silicon/aiPlayer = item @@ -310,8 +280,7 @@ GLOBAL_LIST_EMPTY(teleportlocs) /area/process() if(firedoors_last_closed_on + 100 < world.time) //every 10 seconds - for(var/area/RA in related) - RA.ModifyFiredoors(FALSE) + ModifyFiredoors(FALSE) /area/proc/close_and_lock_door(obj/machinery/door/DOOR) set waitfor = FALSE @@ -323,17 +292,11 @@ GLOBAL_LIST_EMPTY(teleportlocs) if(always_unpowered == 1) //no burglar alarms in space/asteroid return - var/list/cameras = list() - - for(var/area/RA in related) - //Trigger alarm effect - RA.set_fire_alarm_effect() - //Lockdown airlocks - for(var/obj/machinery/door/DOOR in RA) - close_and_lock_door(DOOR) - for (var/item in RA.cameras) - var/obj/machinery/camera/C = item - cameras += C + //Trigger alarm effect + set_fire_alarm_effect() + //Lockdown airlocks + for(var/obj/machinery/door/DOOR in src) + close_and_lock_door(DOOR) for (var/i in GLOB.silicon_mobs) var/mob/living/silicon/SILICON = i @@ -429,10 +392,9 @@ GLOBAL_LIST_EMPTY(teleportlocs) // called when power status changes /area/proc/power_change() - for(var/area/RA in related) - for(var/obj/machinery/M in RA) // for each machine in the area - M.power_change() // reverify power status (to update icons etc.) - RA.updateicon() + for(var/obj/machinery/M in src) // for each machine in the area + M.power_change() // reverify power status (to update icons etc.) + updateicon() /area/proc/usage(chan) var/used = 0 @@ -553,3 +515,7 @@ GLOBAL_LIST_EMPTY(teleportlocs) /area/drop_location() CRASH("Bad op: area/drop_location() called") + +// A hook so areas can modify the incoming args +/area/proc/PlaceOnTopReact(list/new_baseturfs, turf/fake_turf_type, flags) + return flags \ No newline at end of file diff --git a/code/game/area/areas/shuttles.dm b/code/game/area/areas/shuttles.dm index 7d0283e104..073e7714b2 100644 --- a/code/game/area/areas/shuttles.dm +++ b/code/game/area/areas/shuttles.dm @@ -16,6 +16,13 @@ canSmoothWithAreas = type . = ..() +/area/shuttle/PlaceOnTopReact(list/new_baseturfs, turf/fake_turf_type, flags) + . = ..() + if(length(new_baseturfs) > 1 || fake_turf_type) + return // More complicated larger changes indicate this isn't a player + if(ispath(new_baseturfs[1], /turf/open/floor/plating)) + new_baseturfs.Insert(1, /turf/baseturf_skipover/shuttle) + ////////////////////////////Multi-area shuttles//////////////////////////// ////////////////////////////Syndicate infiltrator//////////////////////////// diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 6c15daeb1e..6b4e882235 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -387,13 +387,31 @@ return FALSE /atom/proc/storage_contents_dump_act(obj/item/storage/src_object, mob/user) - return 0 + if(GetComponent(/datum/component/storage)) + return component_storage_contents_dump_act(src_object, user) + return FALSE + +/atom/proc/component_storage_contents_dump_act(datum/component/storage/src_object, mob/user) + var/list/things = src_object.contents() + var/datum/progressbar/progress = new(user, things.len, src) + GET_COMPONENT(STR, /datum/component/storage) + while (do_after(user, 10, TRUE, src, FALSE, CALLBACK(STR, /datum/component/storage.proc/handle_mass_item_insertion, things, src_object, user, progress))) + stoplag(1) + qdel(progress) + to_chat(user, "You dump as much of [src_object.parent]'s contents into [STR.insert_preposition]to [src] as you can.") + STR.orient2hud(user) + src_object.orient2hud(user) + if(user.active_storage) //refresh the HUD to show the transfered contents + user.active_storage.close(user) + user.active_storage.show_to(user) + return TRUE /atom/proc/get_dumping_location(obj/item/storage/source,mob/user) return null //This proc is called on the location of an atom when the atom is Destroy()'d /atom/proc/handle_atom_del(atom/A) + SendSignal(COMSIG_ATOM_CONTENTS_DEL, A) //called when the turf the atom resides on is ChangeTurfed /atom/proc/HandleTurfChange(turf/T) @@ -526,8 +544,8 @@ /atom/Entered(atom/movable/AM, atom/oldLoc) SendSignal(COMSIG_ATOM_ENTERED, AM, oldLoc) -/atom/Exited(atom/movable/AM) - SendSignal(COMSIG_ATOM_EXITED, AM) +/atom/Exited(atom/movable/AM, atom/newLoc) + SendSignal(COMSIG_ATOM_EXITED, AM, newLoc) /atom/proc/return_temperature() return diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 95412c6a7b..67f34cef74 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -492,12 +492,12 @@ if(spin) SpinAnimation(5, 1) + SendSignal(COMSIG_MOVABLE_THROW, TT, spin) SSthrowing.processing[src] = TT if (SSthrowing.state == SS_PAUSED && length(SSthrowing.currentrun)) SSthrowing.currentrun[src] = TT TT.tick() - /atom/movable/proc/handle_buckled_mob_movement(newloc,direct) for(var/m in buckled_mobs) var/mob/living/buckled_mob = m @@ -514,6 +514,13 @@ return 1 return ..() +// called when this atom is removed from a storage item, which is passed on as S. The loc variable is already set to the new destination before this is called. +/atom/movable/proc/on_exit_storage(datum/component/storage/concrete/S) + return + +// called when this atom is added into a storage item, which is passed on as S. The loc variable is already set to the storage item. +/atom/movable/proc/on_enter_storage(datum/component/storage/concrete/S) + return /atom/movable/proc/get_spacemove_backup() var/atom/movable/dense_object_backup @@ -538,7 +545,7 @@ /atom/movable/proc/relay_container_resist(mob/living/user, obj/O) return -// CITADEL CHANGE - adds final_pixel_y and final_pixel_x to do_attack_animation args // maybe not needed anymore we'll try it + /atom/movable/proc/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect) if(!no_effect && (visual_effect_icon || used_item)) do_item_attack_animation(A, visual_effect_icon, used_item) @@ -675,9 +682,8 @@ if(ismob(loc)) var/mob/M = loc M.transferItemToLoc(src, targetturf, TRUE) //nodrops disks when? - else if(istype(loc, /obj/item/storage)) - var/obj/item/storage/S = loc - S.remove_from_storage(src, targetturf) + else if(loc.SendSignal(COMSIG_CONTAINS_STORAGE)) + loc.SendSignal(COMSIG_TRY_STORAGE_TAKE, src, targetturf, TRUE) else forceMove(targetturf) // move the disc, so ghosts remain orbiting it even if it's "destroyed" @@ -708,7 +714,6 @@ return FALSE - /* Language procs */ /atom/movable/proc/get_language_holder(shadow=TRUE) if(language_holder) diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index 3b74d796be..6488a98d7d 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -21,7 +21,7 @@ strip_delay = 70 resistance_flags = NONE permeability_coefficient = 0.05 - pockets = /obj/item/storage/internal/pocket/shoes + pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes //The super annoying version /obj/item/clothing/shoes/clown_shoes/banana_shoes/combat @@ -32,7 +32,7 @@ strip_delay = 70 resistance_flags = NONE permeability_coefficient = 0.05 - pockets = /obj/item/storage/internal/pocket/shoes + pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes always_noslip = TRUE var/max_recharge = 3000 //30 peels worth var/recharge_rate = 34 //about 1/3 of a peel per tick diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index b678f8cd0e..8c162c600e 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -573,6 +573,8 @@ GLOBAL_LIST_EMPTY(possible_items_special) return captured_amount >= target_amount +//Changeling Objectives + /datum/objective/absorb /datum/objective/absorb/proc/gen_amount_goal(lowbound = 4, highbound = 6) @@ -604,7 +606,47 @@ GLOBAL_LIST_EMPTY(possible_items_special) absorbedcount += changeling.absorbedcount return absorbedcount >= target_amount +/datum/objective/absorb_most + explanation_text = "Extract more compatible genomes than any other Changeling." +/datum/objective/absorb_most/check_completion() + var/list/datum/mind/owners = get_owners() + var/absorbedcount = 0 + for(var/datum/mind/M in owners) + if(!M) + continue + var/datum/antagonist/changeling/changeling = M.has_antag_datum(/datum/antagonist/changeling) + if(!changeling || !changeling.stored_profiles) + continue + absorbedcount += changeling.absorbedcount + + for(var/datum/antagonist/changeling/changeling2 in GLOB.antagonists) + if(!changeling2.owner || !changeling2.stored_profiles || changeling2.absorbedcount < absorbedcount) + continue + return FALSE + return TRUE + +/datum/objective/absorb_changeling + explanation_text = "Absorb another Changeling." + +/datum/objective/absorb_changeling/check_completion() + var/list/datum/mind/owners = get_owners() + for(var/datum/mind/M in owners) + if(!M) + continue + var/datum/antagonist/changeling/changeling = M.has_antag_datum(/datum/antagonist/changeling) + if(!changeling) + continue + var/total_genetic_points = changeling.geneticpoints + + for(var/obj/effect/proc_holder/changeling/p in changeling.purchasedpowers) + total_genetic_points += p.dna_cost + + if(total_genetic_points > initial(changeling.geneticpoints)) + return TRUE + return FALSE + +//End Changeling Objectives /datum/objective/destroy martyr_compatible = 1 @@ -829,3 +871,6 @@ GLOBAL_LIST_EMPTY(possible_items_special) /datum/objective/changeling_team_objective/impersonate_department/impersonate_heads explanation_text = "Have X or more heads of staff escape on the shuttle disguised as heads, while the real heads are dead" command_staff_only = TRUE + + + diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 17d4906c42..61d5dbe5f6 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -413,10 +413,10 @@ Class Procs: var/obj/item/stack/SN = new SB.merge_type(null,used_amt) component_parts += SN else - W.remove_from_storage(B, src) - component_parts += B - B.moveToNullspace() - W.handle_item_insertion(A, 1) + if(W.SendSignal(COMSIG_TRY_STORAGE_TAKE, B, src)) + component_parts += B + B.moveToNullspace() + W.SendSignal(COMSIG_TRY_STORAGE_INSERT, A, null, null, TRUE) component_parts -= A to_chat(user, "[A.name] replaced with [B.name].") shouldplaysound = 1 //Only play the sound when parts are actually replaced! diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm index 68f279cc29..4d9acb0586 100644 --- a/code/game/machinery/computer/_computer.dm +++ b/code/game/machinery/computer/_computer.dm @@ -10,7 +10,6 @@ max_integrity = 200 integrity_failure = 100 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 40, "acid" = 20) - var/processing = FALSE var/brightness_on = 2 var/icon_keyboard = "generic_key" var/icon_screen = "generic" diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index d129ebc233..e90f69bf23 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -536,7 +536,7 @@ playsound(loc, 'sound/weapons/genhit.ogg', 100, 1) var/turf/open/space/T for(T in orange(1, src)) - T.ChangeTurf(/turf/open/floor/plating/) + T.PlaceOnTop(/turf/open/floor/plating) else say("Something slams into the floor around [src] - luckily, it didn't get through!") playsound(loc, 'sound/effects/bang.ogg', 50, 1) diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index 6f0294fe67..edbf181927 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -173,11 +173,14 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new) results[++results.len] = list("name" = name, "assignment" = assignment, "ijob" = ijob, "life_status" = life_status, "oxydam" = oxydam, "toxdam" = toxdam, "burndam" = burndam, "brutedam" = brutedam, "area" = area, "pos_x" = pos_x, "pos_y" = pos_y, "can_track" = H.can_track(null)) - data_by_z["[z]"] = results + data_by_z["[z]"] = sortTim(results,/proc/sensor_compare) last_update["[z]"] = world.time return results +/proc/sensor_compare(list/a,list/b) + return a["ijob"] - b["ijob"] + /datum/crewmonitor/ui_act(action,params) var/mob/living/silicon/ai/AI = usr if(!istype(AI)) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 09f59fd003..7aab26dc63 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -212,8 +212,8 @@ req_components[path] -= used_amt else added_components[part] = path - replacer.remove_from_storage(part, src) - req_components[path]-- + if(replacer.SendSignal(COMSIG_TRY_STORAGE_TAKE, part, src)) + req_components[path]-- for(var/obj/item/part in added_components) if(istype(part,/obj/item/stack)) diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 348d238f4c..69621adc84 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -88,6 +88,9 @@ opacity = 0 glass = TRUE +/obj/machinery/door/airlock/engineering/glass/critical + critical_machine = TRUE //stops greytide virus from opening & bolting doors in critical positions, such as the SM chamber. + /obj/machinery/door/airlock/security/glass opacity = 0 glass = TRUE @@ -112,6 +115,9 @@ opacity = 0 glass = TRUE +/obj/machinery/door/airlock/atmos/glass/critical + critical_machine = TRUE //stops greytide virus from opening & bolting doors in critical positions, such as the SM chamber. + /obj/machinery/door/airlock/science/glass opacity = 0 glass = TRUE diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index efc8682313..bb05111f19 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -287,9 +287,7 @@ A = A.loc if (!( istype(A, /area) )) return - for(var/area/RA in A.related) - RA.partyreset() - return + A.partyreset() /obj/machinery/firealarm/partyalarm/alarm() if (stat & (NOPOWER|BROKEN)) @@ -298,9 +296,7 @@ A = A.loc if (!( istype(A, /area) )) return - for(var/area/RA in A.related) - RA.partyalert() - return + A.partyalert() /obj/machinery/firealarm/partyalarm/ui_data(mob/user) . = ..() diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index f51fcdede7..d6b35136b6 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -349,21 +349,8 @@ Possible to do for anyone motivated enough: if(!istype(AI)) AI = null - if(!QDELETED(master) && !master.incapacitated() && master.client && (!AI || AI.eyeobj))//If there is an AI attached, it's not incapacitated, it has a client, and the client eye is centered on the projector. - if(is_operational())//If the machine has power. - if(AI) //ais are range based - if(get_dist(AI.eyeobj, src) <= holo_range) - continue - else - var/obj/machinery/holopad/pad_close = get_closest_atom(/obj/machinery/holopad, holopads, AI.eyeobj) - if(get_dist(pad_close, AI.eyeobj) <= holo_range) - var/obj/effect/overlay/holo_pad_hologram/h = masters[master] - unset_holo(master) - pad_close.set_holo(master, h) - continue - else - continue - clear_holo(master)//If not, we want to get rid of the hologram. + if(!is_operational() || !validate_user(master)) + clear_holo(master) if(outgoing_call) outgoing_call.Check() @@ -484,16 +471,48 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ SetLightsAndPower() return TRUE +//Try to transfer hologram to another pad that can project on T +/obj/machinery/holopad/proc/transfer_to_nearby_pad(turf/T,mob/holo_owner) + var/obj/effect/overlay/holo_pad_hologram/h = masters[holo_owner] + if(!h || h.HC) //Holocalls can't change source. + return FALSE + for(var/pad in holopads) + var/obj/machinery/holopad/another = pad + if(another == src) + continue + if(another.validate_location(T)) + unset_holo(holo_owner) + another.set_holo(holo_owner, h) + return TRUE + return FALSE + +/obj/machinery/holopad/proc/validate_user(mob/living/user) + if(QDELETED(user) || user.incapacitated() || !user.client) + return FALSE + return TRUE + +//Can we display holos there +//Area check instead of line of sight check because this is a called a lot if AI wants to move around. +/obj/machinery/holopad/proc/validate_location(turf/T,check_los = FALSE) + if(T.z == z && get_dist(T, src) <= holo_range && T.loc == get_area(src)) + return TRUE + else + return FALSE + /obj/machinery/holopad/proc/move_hologram(mob/living/user, turf/new_turf) if(LAZYLEN(masters) && masters[user]) - var/area/holo_area = get_area(src) - if(new_turf.loc in holo_area.related) - var/obj/effect/overlay/holo_pad_hologram/holo = masters[user] - step_to(holo, new_turf) - holo.forceMove(new_turf) - update_holoray(user, new_turf) - else - clear_holo(user) + var/obj/effect/overlay/holo_pad_hologram/holo = masters[user] + var/transfered = FALSE + if(!validate_location(new_turf)) + if(!transfer_to_nearby_pad(new_turf,user)) + clear_holo(user) + return FALSE + else + transfered = TRUE + //All is good. + holo.forceMove(new_turf) + if(!transfered) + update_holoray(user,new_turf) return TRUE diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index fb90f1b5b4..c93f67b7d7 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -41,13 +41,12 @@ . = ..() on = !on - for(var/area/A in area.related) - A.lightswitch = on - A.updateicon() + area.lightswitch = on + area.updateicon() - for(var/obj/machinery/light_switch/L in A) - L.on = on - L.updateicon() + for(var/obj/machinery/light_switch/L in area) + L.on = on + L.updateicon() area.power_change() diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index 706e14cae6..6c3687f6b8 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -317,7 +317,7 @@ add_overlay(picture_state) #undef CHARS_PER_LINE -#undef FOND_SIZE +#undef FONT_SIZE #undef FONT_COLOR #undef FONT_STYLE #undef SCROLL_SPEED diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm deleted file mode 100755 index 12b55c4205..0000000000 --- a/code/game/machinery/vending.dm +++ /dev/null @@ -1,1225 +0,0 @@ -#define STANDARD_CHARGE 1 -#define CONTRABAND_CHARGE 2 -#define COIN_CHARGE 3 - -/datum/data/vending_product - var/product_name = "generic" - var/product_path = null - var/amount = 0 - var/max_amount = 0 - var/display_color = "blue" - - -/obj/machinery/vending - name = "\improper Vendomat" - desc = "A generic vending machine." - icon = 'icons/obj/vending.dmi' - icon_state = "generic" - layer = BELOW_OBJ_LAYER - anchored = TRUE - density = TRUE - verb_say = "beeps" - verb_ask = "beeps" - verb_exclaim = "beeps" - max_integrity = 300 - integrity_failure = 100 - armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 70) - circuit = /obj/item/circuitboard/machine/vendor - var/active = 1 //No sales pitches if off! - var/vend_ready = 1 //Are we ready to vend?? Is it time?? - - // To be filled out at compile time - var/list/products = list() //For each, use the following pattern: - var/list/contraband = list() //list(/type/path = amount, /type/path2 = amount2) - var/list/premium = list() //No specified amount = only one in stock - - var/product_slogans = "" //String of slogans separated by semicolons, optional - var/product_ads = "" //String of small ad messages in the vending screen - random chance - var/list/product_records = list() - var/list/hidden_records = list() - var/list/coin_records = list() - var/list/slogan_list = list() - var/list/small_ads = list() //Small ad messages in the vending screen - random chance of popping up whenever you open it - var/vend_reply //Thank you for shopping! - var/last_reply = 0 - var/last_slogan = 0 //When did we last pitch? - var/slogan_delay = 6000 //How long until we can pitch again? - var/icon_vend //Icon_state when vending! - var/icon_deny //Icon_state when vending! - var/seconds_electrified = 0 //Shock customers like an airlock. - var/shoot_inventory = 0 //Fire items at customers! We're broken! - var/shoot_inventory_chance = 2 - var/shut_up = 0 //Stop spouting those godawful pitches! - var/extended_inventory = 0 //can we access the hidden inventory? - var/scan_id = 1 - var/obj/item/coin/coin - var/obj/item/stack/spacecash/bill - - var/dish_quants = list() //used by the snack machine's custom compartment to count dishes. - - var/obj/item/vending_refill/refill_canister = null //The type of refill canisters used by this machine. - var/refill_count = 3 //The number of canisters the vending machine uses - -/obj/machinery/vending/Initialize() - var/build_inv = FALSE - if(!refill_canister) - circuit = null - build_inv = TRUE - . = ..() - wires = new /datum/wires/vending(src) - if(build_inv) //non-constructable vending machine - build_inventory(products) - build_inventory(contraband, 1) - build_inventory(premium, 0, 1) - - slogan_list = splittext(product_slogans, ";") - // So not all machines speak at the exact same time. - // The first time this machine says something will be at slogantime + this random value, - // so if slogantime is 10 minutes, it will say it at somewhere between 10 and 20 minutes after the machine is crated. - last_slogan = world.time + rand(0, slogan_delay) - power_change() - - -/obj/machinery/vending/Destroy() - QDEL_NULL(wires) - QDEL_NULL(coin) - QDEL_NULL(bill) - return ..() - -/obj/machinery/vending/snack/Destroy() - for(var/obj/item/reagent_containers/food/snacks/S in contents) - S.forceMove(get_turf(src)) - return ..() - -/obj/machinery/vending/RefreshParts() //Better would be to make constructable child - if(component_parts) - product_records = list() - hidden_records = list() - coin_records = list() - build_inventory(products, start_empty = 1) - build_inventory(contraband, 1, start_empty = 1) - build_inventory(premium, 0, 1, start_empty = 1) - for(var/obj/item/vending_refill/VR in component_parts) - refill_inventory(VR, product_records, STANDARD_CHARGE) - refill_inventory(VR, coin_records, COIN_CHARGE) - refill_inventory(VR, hidden_records, CONTRABAND_CHARGE) - - -/obj/machinery/vending/deconstruct(disassembled = TRUE) - if(!refill_canister) //the non constructable vendors drop metal instead of a machine frame. - if(!(flags_1 & NODECONSTRUCT_1)) - new /obj/item/stack/sheet/metal(loc, 3) - qdel(src) - else - ..() - -/obj/machinery/vending/obj_break(damage_flag) - if(!(stat & BROKEN) && !(flags_1 & NODECONSTRUCT_1)) - var/dump_amount = 0 - for(var/datum/data/vending_product/R in product_records) - if(R.amount <= 0) //Try to use a record that actually has something to dump. - continue - var/dump_path = R.product_path - if(!dump_path) - continue - - while(R.amount>0) - var/obj/O = new dump_path(loc) - step(O, pick(GLOB.alldirs)) //we only drop 20% of the total of each products and spread it - R.amount -= 5 //around to not fill the turf with too many objects. - dump_amount++ - if(dump_amount > 15) //so we don't drop too many items (e.g. ClothesMate) - break - stat |= BROKEN - icon_state = "[initial(icon_state)]-broken" - -/obj/machinery/vending/proc/build_inventory(list/productlist, hidden=0, req_coin=0, start_empty = null) - for(var/typepath in productlist) - var/amount = productlist[typepath] - if(isnull(amount)) - amount = 0 - - var/atom/temp = typepath - var/datum/data/vending_product/R = new /datum/data/vending_product() - R.product_name = initial(temp.name) - R.product_path = typepath - if(!start_empty) - R.amount = amount - R.max_amount = amount - R.display_color = pick("red","blue","green") - - if(hidden) - hidden_records += R - else if(req_coin) - coin_records += R - else - product_records += R - -/obj/machinery/vending/proc/refill_inventory(obj/item/vending_refill/refill, datum/data/vending_product/machine, var/charge_type = STANDARD_CHARGE) - var/total = 0 - var/to_restock = 0 - - for(var/datum/data/vending_product/machine_content in machine) - if(machine_content.amount == 0 && refill.charges[charge_type] > 0) - machine_content.amount++ - refill.charges[charge_type]-- - total++ - to_restock += machine_content.max_amount - machine_content.amount - if(to_restock <= refill.charges[charge_type]) - for(var/datum/data/vending_product/machine_content in machine) - machine_content.amount = machine_content.max_amount - refill.charges[charge_type] -= to_restock - total += to_restock - else - var/tmp_charges = refill.charges[charge_type] - for(var/datum/data/vending_product/machine_content in machine) - if(refill.charges[charge_type] == 0) - break - var/restock = CEILING(((machine_content.max_amount - machine_content.amount)/to_restock)*tmp_charges, 1) - if(restock > refill.charges[charge_type]) - restock = refill.charges[charge_type] - machine_content.amount += restock - refill.charges[charge_type] -= restock - total += restock - return total - -/obj/machinery/vending/snack/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/reagent_containers/food/snacks)) - if(!compartment_access_check(user)) - return - var/obj/item/reagent_containers/food/snacks/S = W - if(!S.junkiness) - if(!iscompartmentfull(user)) - if(!user.transferItemToLoc(W, src)) - return - food_load(W) - to_chat(user, "You insert [W] into [src]'s chef compartment.") - else - to_chat(user, "[src]'s chef compartment does not accept junk food.") - - else if(istype(W, /obj/item/storage/bag/tray)) - if(!compartment_access_check(user)) - return - var/obj/item/storage/T = W - var/loaded = 0 - var/denied_items = 0 - for(var/obj/item/reagent_containers/food/snacks/S in T.contents) - if(iscompartmentfull(user)) - break - if(!S.junkiness) - T.remove_from_storage(S, src) - food_load(S) - loaded++ - else - denied_items++ - if(denied_items) - to_chat(user, "[src] refuses some items.") - if(loaded) - to_chat(user, "You insert [loaded] dishes into [src]'s chef compartment.") - updateUsrDialog() - return - - else - return ..() - -/obj/machinery/vending/snack/proc/compartment_access_check(user) - req_access_txt = chef_compartment_access - if(!allowed(user) && !(obj_flags & EMAGGED) && scan_id) - to_chat(user, "[src]'s chef compartment blinks red: Access denied.") - req_access_txt = "0" - return 0 - req_access_txt = "0" - return 1 - -/obj/machinery/vending/snack/proc/iscompartmentfull(mob/user) - if(contents.len >= 30) // no more than 30 dishes can fit inside - to_chat(user, "[src]'s chef compartment is full.") - return 1 - return 0 - -/obj/machinery/vending/snack/proc/food_load(obj/item/reagent_containers/food/snacks/S) - if(dish_quants[S.name]) - dish_quants[S.name]++ - else - dish_quants[S.name] = 1 - sortList(dish_quants) - -/obj/machinery/vending/crowbar_act(mob/living/user, obj/item/I) - if(!component_parts) - return FALSE - default_deconstruction_crowbar(I) - return TRUE - -/obj/machinery/vending/wrench_act(mob/living/user, obj/item/I) - if(panel_open) - default_unfasten_wrench(user, I, time = 60) - return TRUE - -/obj/machinery/vending/screwdriver_act(mob/living/user, obj/item/I) - if(anchored) - default_deconstruction_screwdriver(user, icon_state, icon_state, I) - cut_overlays() - if(panel_open) - add_overlay("[initial(icon_state)]-panel") - updateUsrDialog() - else - to_chat(user, "You must first secure [src].") - return TRUE - -/obj/machinery/vending/attackby(obj/item/I, mob/user, params) - if(panel_open && is_wire_tool(I)) - wires.interact(user) - return - else if(istype(I, /obj/item/coin)) - if(coin) - to_chat(user, "[src] already has [coin] inserted") - return - if(bill) - to_chat(user, "[src] already has [bill] inserted") - return - if(!premium.len) - to_chat(user, "[src] doesn't have a coin slot.") - return - if(!user.transferItemToLoc(I, src)) - return - coin = I - to_chat(user, "You insert [I] into [src].") - return - else if(istype(I, /obj/item/stack/spacecash)) - if(coin) - to_chat(user, "[src] already has [coin] inserted") - return - if(bill) - to_chat(user, "[src] already has [bill] inserted") - return - var/obj/item/stack/S = I - if(!premium.len) - to_chat(user, "[src] doesn't have a bill slot.") - return - S.use(1) - bill = new S.type(src, 1) - to_chat(user, "You insert [I] into [src].") - return - else if(istype(I, refill_canister) && refill_canister != null) - if(stat & (BROKEN|NOPOWER)) - to_chat(user, "It does nothing.") - else if(panel_open) - //if the panel is open we attempt to refill the machine - var/obj/item/vending_refill/canister = I - if(canister.charges[STANDARD_CHARGE] == 0) - to_chat(user, "This [canister.name] is empty!") - else - var/transfered = refill_inventory(canister,product_records,STANDARD_CHARGE) - transfered += refill_inventory(canister,coin_records,COIN_CHARGE) - transfered += refill_inventory(canister,hidden_records,CONTRABAND_CHARGE) - if(transfered) - to_chat(user, "You loaded [transfered] items in \the [name].") - else - to_chat(user, "The [name] is fully stocked.") - return - else - to_chat(user, "You should probably unscrew the service panel first.") - else - return ..() - - -/obj/machinery/vending/on_deconstruction() - var/product_list = list(product_records, hidden_records, coin_records) - for(var/i=1, i<=3, i++) - for(var/datum/data/vending_product/machine_content in product_list[i]) - while(machine_content.amount !=0) - var/safety = 0 //to avoid infinite loop - for(var/obj/item/vending_refill/VR in component_parts) - safety++ - if(VR.charges[i] < VR.init_charges[i]) - VR.charges[i]++ - machine_content.amount-- - if(!machine_content.amount) - break - else - safety-- - if(safety <= 0) // all refill canisters are full - break - ..() - -/obj/machinery/vending/emag_act(mob/user) - if(obj_flags & EMAGGED) - return - obj_flags |= EMAGGED - to_chat(user, "You short out the product lock on [src].") - -/obj/machinery/vending/attack_ai(mob/user) - return attack_hand(user) - -/obj/machinery/vending/attack_hand(mob/user) - var/dat = "" - if(panel_open && !isAI(user)) - return wires.interact(user) - else - if(stat & (BROKEN|NOPOWER)) - return - - dat += "

Select an item

" - dat += "
" - if(product_records.len == 0) - dat += "No product loaded!" - else - var/list/display_records = product_records - if(extended_inventory) - display_records = product_records + hidden_records - if(coin || bill) - display_records = product_records + coin_records - if((coin || bill) && extended_inventory) - display_records = product_records + hidden_records + coin_records - dat += "
    " - for (var/datum/data/vending_product/R in display_records) - dat += "
  • " - if(R.amount > 0) - dat += "Vend " - else - dat += "Sold out " - dat += "[sanitize(R.product_name)]:" - dat += " [R.amount]" - dat += "
  • " - dat += "
" - dat += "
" - if(premium.len > 0) - dat += "Change Return: " - if (coin || bill) - dat += "[(coin ? coin : "")][(bill ? bill : "")]  Remove" - else - dat += "No money  Remove" - if(istype(src, /obj/machinery/vending/snack)) - dat += "

Chef's Food Selection

" - dat += "
" - for (var/O in dish_quants) - if(dish_quants[O] > 0) - var/N = dish_quants[O] - dat += "Dispense " - dat += "[capitalize(O)]: [N]
" - dat += "
" - user.set_machine(src) - if(seconds_electrified && !(stat & NOPOWER)) - if(shock(user, 100)) - return - - var/datum/browser/popup = new(user, "vending", (name)) - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) - popup.open() - - -/obj/machinery/vending/Topic(href, href_list) - if(..()) - return - - if(href_list["remove_coin"]) - if(!(coin || bill)) - to_chat(usr, "There is no money in this machine.") - return - if(coin) - if(!usr.get_active_held_item()) - usr.put_in_hands(coin) - else - coin.forceMove(get_turf(src)) - to_chat(usr, "You remove [coin] from [src].") - coin = null - if(bill) - if(!usr.get_active_held_item()) - usr.put_in_hands(bill) - else - bill.forceMove(get_turf(src)) - to_chat(usr, "You remove [bill] from [src].") - bill = null - - - usr.set_machine(src) - - if((href_list["dispense"]) && (vend_ready)) - var/N = href_list["dispense"] - if(dish_quants[N] <= 0) // Sanity check, there are probably ways to press the button when it shouldn't be possible. - return - vend_ready = 0 - use_power(5) - - dish_quants[N] = max(dish_quants[N] - 1, 0) - for(var/obj/O in contents) - if(O.name == N) - O.forceMove(drop_location()) - break - vend_ready = 1 - updateUsrDialog() - return - - if((href_list["vend"]) && (vend_ready)) - if(panel_open) - to_chat(usr, "The vending machine cannot dispense products while its service panel is open!") - return - - if((!allowed(usr)) && !(obj_flags & EMAGGED) && scan_id) //For SECURE VENDING MACHINES YEAH - to_chat(usr, "Access denied." ) - flick(icon_deny,src) - return - - vend_ready = 0 //One thing at a time!! - - var/datum/data/vending_product/R = locate(href_list["vend"]) - if(!R || !istype(R) || !R.product_path) - vend_ready = 1 - return - - if(R in hidden_records) - if(!extended_inventory) - vend_ready = 1 - return - else if(R in coin_records) - if(!(coin || bill)) - to_chat(usr, "You need to insert money to get this item!") - vend_ready = 1 - return - if(coin && coin.string_attached) - if(prob(50)) - if(usr.put_in_hands(coin)) - to_chat(usr, "You successfully pull [coin] out before [src] could swallow it.") - coin = null - else - to_chat(usr, "You couldn't pull [coin] out because your hands are full!") - QDEL_NULL(coin) - else - to_chat(usr, "You weren't able to pull [coin] out fast enough, the machine ate it, string and all!") - QDEL_NULL(coin) - else - QDEL_NULL(coin) - QDEL_NULL(bill) - - else if (!(R in product_records)) - vend_ready = 1 - message_admins("Vending machine exploit attempted by [key_name(usr, usr.client)]!") - return - - if (R.amount <= 0) - to_chat(usr, "Sold out.") - vend_ready = 1 - return - else - R.amount-- - - if(((last_reply + 200) <= world.time) && vend_reply) - speak(vend_reply) - last_reply = world.time - - use_power(5) - if(icon_vend) //Show the vending animation if needed - flick(icon_vend,src) - new R.product_path(get_turf(src)) - SSblackbox.record_feedback("nested tally", "vending_machine_usage", 1, list("[type]", "[R.product_path]")) - vend_ready = 1 - return - - updateUsrDialog() - return - - else if(href_list["togglevoice"] && panel_open) - shut_up = !shut_up - - updateUsrDialog() - - -/obj/machinery/vending/process() - if(stat & (BROKEN|NOPOWER)) - return - if(!active) - return - - if(seconds_electrified > 0) - seconds_electrified-- - - //Pitch to the people! Really sell it! - if(last_slogan + slogan_delay <= world.time && slogan_list.len > 0 && !shut_up && prob(5)) - var/slogan = pick(slogan_list) - speak(slogan) - last_slogan = world.time - - if(shoot_inventory && prob(shoot_inventory_chance)) - throw_item() - - -/obj/machinery/vending/proc/speak(message) - if(stat & (BROKEN|NOPOWER)) - return - if(!message) - return - - say(message) - -/obj/machinery/vending/power_change() - if(stat & BROKEN) - icon_state = "[initial(icon_state)]-broken" - else - if(powered()) - icon_state = initial(icon_state) - stat &= ~NOPOWER - else - icon_state = "[initial(icon_state)]-off" - stat |= NOPOWER - - -//Somebody cut an important wire and now we're following a new definition of "pitch." -/obj/machinery/vending/proc/throw_item() - var/obj/throw_item = null - var/mob/living/target = locate() in view(7,src) - if(!target) - return 0 - - for(var/datum/data/vending_product/R in shuffle(product_records)) - if(R.amount <= 0) //Try to use a record that actually has something to dump. - continue - var/dump_path = R.product_path - if(!dump_path) - continue - - R.amount-- - throw_item = new dump_path(loc) - break - if(!throw_item) - return 0 - - pre_throw(throw_item) - - throw_item.throw_at(target, 16, 3) - visible_message("[src] launches [throw_item] at [target]!") - return 1 - -/obj/machinery/vending/proc/pre_throw(obj/item/I) - return - - -/obj/machinery/vending/proc/shock(mob/user, prb) - if(stat & (BROKEN|NOPOWER)) // unpowered, no shock - return FALSE - if(!prob(prb)) - return FALSE - do_sparks(5, TRUE, src) - var/tmp/check_range = TRUE - if(electrocute_mob(user, get_area(src), src, 0.7, check_range)) - return TRUE - else - return FALSE - -/* - * Vending machine types - */ - -/* - -/obj/machinery/vending/[vendors name here] // --vending machine template :) - name = "" - desc = "" - icon = '' - icon_state = "" - products = list() - contraband = list() - premium = list() - -IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY CANISTER CHARGES in vending_items.dm -*/ - -/obj/machinery/vending/boozeomat - name = "\improper Booze-O-Mat" - desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one." - icon_state = "boozeomat" //////////////18 drink entities below, plus the glasses, in case someone wants to edit the number of bottles - icon_deny = "boozeomat-deny" - products = list(/obj/item/reagent_containers/food/drinks/bottle/gin = 5, /obj/item/reagent_containers/food/drinks/bottle/whiskey = 5, - /obj/item/reagent_containers/food/drinks/bottle/tequila = 5, /obj/item/reagent_containers/food/drinks/bottle/vodka = 5, - /obj/item/reagent_containers/food/drinks/bottle/vermouth = 5, /obj/item/reagent_containers/food/drinks/bottle/rum = 5, - /obj/item/reagent_containers/food/drinks/bottle/wine = 5, /obj/item/reagent_containers/food/drinks/bottle/cognac = 5, - /obj/item/reagent_containers/food/drinks/bottle/kahlua = 5, /obj/item/reagent_containers/food/drinks/bottle/hcider = 5, - /obj/item/reagent_containers/food/drinks/bottle/absinthe = 5, /obj/item/reagent_containers/food/drinks/bottle/grappa = 5, - /obj/item/reagent_containers/food/drinks/ale = 6, /obj/item/reagent_containers/food/drinks/bottle/orangejuice = 4, - /obj/item/reagent_containers/food/drinks/bottle/tomatojuice = 4, /obj/item/reagent_containers/food/drinks/bottle/limejuice = 4, - /obj/item/reagent_containers/food/drinks/bottle/cream = 4, /obj/item/reagent_containers/food/drinks/soda_cans/tonic = 8, - /obj/item/reagent_containers/food/drinks/soda_cans/cola = 8, /obj/item/reagent_containers/food/drinks/soda_cans/sodawater = 15, - /obj/item/reagent_containers/food/drinks/drinkingglass = 30, /obj/item/reagent_containers/food/drinks/ice = 10, - /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 12, /obj/item/reagent_containers/food/drinks/flask = 3, - /obj/item/reagent_containers/food/drinks/beer = 6, /obj/item/reagent_containers/food/drinks/bottle/sake = 5) //CIT CHANGE - Adds Sake to Booze-o-Mat. - contraband = list(/obj/item/reagent_containers/food/drinks/mug/tea = 12) - product_slogans = "I hope nobody asks me for a bloody cup o' tea...;Alcohol is humanity's friend. Would you abandon a friend?;Quite delighted to serve you!;Is nobody thirsty on this station?" - product_ads = "Drink up!;Booze is good for you!;Alcohol is humanity's best friend.;Quite delighted to serve you!;Care for a nice, cold beer?;Nothing cures you like booze!;Have a sip!;Have a drink!;Have a beer!;Beer is good for you!;Only the finest alcohol!;Best quality booze since 2053!;Award-winning wine!;Maximum alcohol!;Man loves beer.;A toast for progress!" - req_access_txt = "25" - refill_canister = /obj/item/vending_refill/boozeomat - -/obj/machinery/vending/assist - products = list( /obj/item/device/assembly/prox_sensor = 5, /obj/item/device/assembly/igniter = 3, /obj/item/device/assembly/signaler = 4, - /obj/item/wirecutters = 1, /obj/item/cartridge/signal = 4) - contraband = list(/obj/item/device/assembly/timer = 2, /obj/item/device/assembly/voice = 2, /obj/item/device/assembly/health = 2) - product_ads = "Only the finest!;Have some tools.;The most robust equipment.;The finest gear in space!" - armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - -/obj/machinery/vending/coffee - name = "\improper Solar's Best Hot Drinks" - desc = "A vending machine which dispenses hot drinks." - product_ads = "Have a drink!;Drink up!;It's good for you!;Would you like a hot joe?;I'd kill for some coffee!;The best beans in the galaxy.;Only the finest brew for you.;Mmmm. Nothing like a coffee.;I like coffee, don't you?;Coffee helps you work!;Try some tea.;We hope you like the best!;Try our new chocolate!;Admin conspiracies" - icon_state = "coffee" - icon_vend = "coffee-vend" - products = list(/obj/item/reagent_containers/food/drinks/coffee = 25, /obj/item/reagent_containers/food/drinks/mug/tea = 25, /obj/item/reagent_containers/food/drinks/mug/coco = 25) - contraband = list(/obj/item/reagent_containers/food/drinks/ice = 12) - refill_canister = /obj/item/vending_refill/coffee - -/obj/machinery/vending/snack - name = "\improper Getmore Chocolate Corp" - desc = "A snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars." - product_slogans = "Try our new nougat bar!;Twice the calories for half the price!" - product_ads = "The healthiest!;Award-winning chocolate bars!;Mmm! So good!;Oh my god it's so juicy!;Have a snack.;Snacks are good for you!;Have some more Getmore!;Best quality snacks straight from mars.;We love chocolate!;Try our new jerky!" - icon_state = "snack" - products = list(/obj/item/reagent_containers/food/snacks/candy = 6, /obj/item/reagent_containers/food/drinks/dry_ramen = 6, /obj/item/reagent_containers/food/snacks/chips =6, - /obj/item/reagent_containers/food/snacks/sosjerky = 6, /obj/item/reagent_containers/food/snacks/no_raisin = 6, /obj/item/reagent_containers/food/snacks/spacetwinkie = 6, - /obj/item/reagent_containers/food/snacks/cheesiehonkers = 6) - contraband = list(/obj/item/reagent_containers/food/snacks/syndicake = 6) - refill_canister = /obj/item/vending_refill/snack - var/chef_compartment_access = "28" - -/obj/machinery/vending/snack/random - name = "\improper Random Snackies" - icon_state = "random_snack" - desc = "Uh oh!" - -/obj/machinery/vending/snack/random/Initialize() - ..() - var/T = pick(subtypesof(/obj/machinery/vending/snack) - /obj/machinery/vending/snack/random) - new T(loc) - return INITIALIZE_HINT_QDEL - -/obj/machinery/vending/snack/blue - icon_state = "snackblue" - -/obj/machinery/vending/snack/orange - icon_state = "snackorange" - -/obj/machinery/vending/snack/green - icon_state = "snackgreen" - -/obj/machinery/vending/snack/teal - icon_state = "snackteal" - -/obj/machinery/vending/sustenance - name = "\improper Sustenance Vendor" - desc = "A vending machine which vends food, as required by section 47-C of the NT's Prisoner Ethical Treatment Agreement." - product_slogans = "Enjoy your meal.;Enough calories to support strenuous labor." - product_ads = "Sufficiently healthy.;Efficiently produced tofu!;Mmm! So good!;Have a meal.;You need food to live!;Have some more candy corn!;Try our new ice cups!" - icon_state = "sustenance" - products = list(/obj/item/reagent_containers/food/snacks/tofu = 24, - /obj/item/reagent_containers/food/drinks/ice = 12, - /obj/item/reagent_containers/food/snacks/candy_corn = 6) - contraband = list(/obj/item/kitchen/knife = 6, - /obj/item/reagent_containers/food/drinks/coffee = 12, - /obj/item/tank/internals/emergency_oxygen = 6, - /obj/item/clothing/mask/breath = 6) - armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - -/obj/machinery/vending/cola - name = "\improper Robust Softdrinks" - desc = "A softdrink vendor provided by Robust Industries, LLC." - icon_state = "Cola_Machine" - product_slogans = "Robust Softdrinks: More robust than a toolbox to the head!" - product_ads = "Refreshing!;Hope you're thirsty!;Over 1 million drinks sold!;Thirsty? Why not cola?;Please, have a drink!;Drink up!;The best drinks in space." - products = list(/obj/item/reagent_containers/food/drinks/soda_cans/cola = 10, /obj/item/reagent_containers/food/drinks/soda_cans/space_mountain_wind = 10, - /obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb = 10, /obj/item/reagent_containers/food/drinks/soda_cans/starkist = 10, - /obj/item/reagent_containers/food/drinks/soda_cans/space_up = 10, /obj/item/reagent_containers/food/drinks/soda_cans/pwr_game = 10, - /obj/item/reagent_containers/food/drinks/soda_cans/lemon_lime = 10, /obj/item/reagent_containers/glass/beaker/waterbottle = 10) - contraband = list(/obj/item/reagent_containers/food/drinks/soda_cans/thirteenloko = 6, /obj/item/reagent_containers/food/drinks/soda_cans/shamblers = 6) - premium = list(/obj/item/reagent_containers/food/drinks/drinkingglass/filled/nuka_cola = 1, /obj/item/reagent_containers/food/drinks/soda_cans/air = 1) - refill_canister = /obj/item/vending_refill/cola - -/obj/machinery/vending/cola/random - name = "\improper Random Drinkies" - icon_state = "random_cola" - desc = "Uh oh!" - -/obj/machinery/vending/cola/random/Initialize() - ..() - var/T = pick(subtypesof(/obj/machinery/vending/cola) - /obj/machinery/vending/cola/random) - new T(loc) - return INITIALIZE_HINT_QDEL - -/obj/machinery/vending/cola/blue - icon_state = "Cola_Machine" - -/obj/machinery/vending/cola/black - icon_state = "cola_black" - -/obj/machinery/vending/cola/red - icon_state = "red_cola" - name = "\improper Space Cola Vendor" - desc = "It vends cola, in space." - product_slogans = "Cola in space!" - -/obj/machinery/vending/cola/space_up - icon_state = "space_up" - name = "\improper Space-up! Vendor" - desc = "Indulge in an explosion of flavor." - product_slogans = "Space-up! Like a hull breach in your mouth." - -/obj/machinery/vending/cola/starkist - icon_state = "starkist" - name = "\improper Star-kist Vendor" - desc = "The taste of a star in liquid form." - product_slogans = "Drink the stars! Star-kist!" - -/obj/machinery/vending/cola/sodie - icon_state = "soda" - -/obj/machinery/vending/cola/pwr_game - icon_state = "pwr_game" - name = "\improper Pwr Game Vendor" - desc = "You want it, we got it. Brought to you in partnership with Vlad's Salads." - product_slogans = "The POWER that gamers crave! PWR GAME!" - -/obj/machinery/vending/cola/shamblers - name = "\improper Shambler's Vendor" - desc = "~Shake me up some of that Shambler's Juice!~" - icon_state = "shamblers_juice" - products = list(/obj/item/reagent_containers/food/drinks/soda_cans/cola = 10, /obj/item/reagent_containers/food/drinks/soda_cans/space_mountain_wind = 10, - /obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb = 10, /obj/item/reagent_containers/food/drinks/soda_cans/starkist = 10, - /obj/item/reagent_containers/food/drinks/soda_cans/space_up = 10, /obj/item/reagent_containers/food/drinks/soda_cans/pwr_game = 10, - /obj/item/reagent_containers/food/drinks/soda_cans/lemon_lime = 10, /obj/item/reagent_containers/food/drinks/soda_cans/shamblers = 10) - product_slogans = "~Shake me up some of that Shambler's Juice!~" - product_ads = "Refreshing!;Jyrbv dv lg jfdv fw kyrk Jyrdscvi'j Alztv!;Over 1 trillion souls drank!;Thirsty? Nyp efk uizeb kyv uribevjj?;Kyv Jyrdscvi uizebj kyv ezxyk!;Drink up!;Krjkp." - - -//This one's from bay12 -/obj/machinery/vending/cart - name = "\improper PTech" - desc = "Cartridges for PDAs." - product_slogans = "Carts to go!" - icon_state = "cart" - icon_deny = "cart-deny" - products = list(/obj/item/cartridge/medical = 10, /obj/item/cartridge/engineering = 10, /obj/item/cartridge/security = 10, - /obj/item/cartridge/janitor = 10, /obj/item/cartridge/signal/toxins = 10, /obj/item/device/pda/heads = 10, - /obj/item/cartridge/captain = 3, /obj/item/cartridge/quartermaster = 10) - armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - -/obj/machinery/vending/liberationstation - name = "\improper Liberation Station" - desc = "An overwhelming amount of ancient patriotism washes over you just by looking at the machine." - icon_state = "liberationstation" - req_access_txt = "1" - product_slogans = "Liberation Station: Your one-stop shop for all things second ammendment!;Be a patriot today, pick up a gun!;Quality weapons for cheap prices!;Better dead than red!" - product_ads = "Float like an astronaut, sting like a bullet!;Express your second ammendment today!;Guns don't kill people, but you can!;Who needs responsibilities when you have guns?" - vend_reply = "Remember the name: Liberation Station!" - products = list(/obj/item/gun/ballistic/automatic/pistol/deagle/gold = 2, /obj/item/gun/ballistic/automatic/pistol/deagle/camo = 2, - /obj/item/gun/ballistic/automatic/pistol/m1911 = 2, /obj/item/gun/ballistic/automatic/proto/unrestricted = 2, - /obj/item/gun/ballistic/shotgun/automatic/combat = 2, /obj/item/gun/ballistic/automatic/gyropistol = 1, - /obj/item/gun/ballistic/shotgun = 2, /obj/item/gun/ballistic/automatic/ar = 2) - premium = list(/obj/item/ammo_box/magazine/smgm9mm = 2, /obj/item/ammo_box/magazine/m50 = 4, /obj/item/ammo_box/magazine/m45 = 2, /obj/item/ammo_box/magazine/m75 = 2) - contraband = list(/obj/item/clothing/under/patriotsuit = 1, /obj/item/bedsheet/patriot = 3) - armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - -/obj/machinery/vending/cigarette - name = "\improper ShadyCigs Deluxe" - desc = "If you want to get cancer, might as well do it in style." - product_slogans = "Space cigs taste good like a cigarette should.;I'd rather toolbox than switch.;Smoke!;Don't believe the reports - smoke today!" - product_ads = "Probably not bad for you!;Don't believe the scientists!;It's good for you!;Don't quit, buy more!;Smoke!;Nicotine heaven.;Best cigarettes since 2150.;Award-winning cigs." - icon_state = "cigs" - products = list(/obj/item/storage/fancy/cigarettes = 5, - /obj/item/storage/fancy/cigarettes/cigpack_uplift = 3, - /obj/item/storage/fancy/cigarettes/cigpack_robust = 3, - /obj/item/storage/fancy/cigarettes/cigpack_carp = 3, - /obj/item/storage/fancy/cigarettes/cigpack_midori = 3, - /obj/item/storage/box/matches = 10, - /obj/item/lighter/greyscale = 4, - /obj/item/storage/fancy/rollingpapers = 5) - contraband = list(/obj/item/lighter = 3, /obj/item/clothing/mask/vape = 5) - premium = list(/obj/item/storage/fancy/cigarettes/cigpack_robustgold = 3, \ - /obj/item/storage/fancy/cigarettes/cigars = 1, /obj/item/storage/fancy/cigarettes/cigars/havana = 1, /obj/item/storage/fancy/cigarettes/cigars/cohiba = 1) - refill_canister = /obj/item/vending_refill/cigarette - -/obj/machinery/vending/cigarette/pre_throw(obj/item/I) - if(istype(I, /obj/item/lighter)) - var/obj/item/lighter/L = I - L.set_lit(TRUE) - -/obj/machinery/vending/medical - name = "\improper NanoMed Plus" - desc = "Medical drug dispenser." - icon_state = "med" - icon_deny = "med-deny" - product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?;Ping!" - req_access_txt = "5" - /* - products = list(/obj/item/reagent_containers/syringe = 12, - /obj/item/reagent_containers/dropper = 3, - /obj/item/device/healthanalyzer = 4, - /obj/item/device/sensor_device = 2, - /obj/item/pinpointer/crew = 2, - /obj/item/reagent_containers/medspray/sterilizine = 1, - /obj/item/stack/medical/gauze = 8, - /obj/item/reagent_containers/pill/patch/styptic = 5, - /obj/item/reagent_containers/medspray/styptic = 2, - /obj/item/reagent_containers/pill/patch/silver_sulf = 5, - /obj/item/reagent_containers/medspray/silver_sulf = 2, - /obj/item/reagent_containers/pill/insulin = 10, - /obj/item/reagent_containers/pill/salbutamol = 2, - /obj/item/reagent_containers/glass/bottle/charcoal = 4, - /obj/item/reagent_containers/glass/bottle/epinephrine = 4, - /obj/item/reagent_containers/glass/bottle/salglu_solution = 3, - /obj/item/reagent_containers/glass/bottle/morphine = 4, - /obj/item/reagent_containers/glass/bottle/toxin = 3, - /obj/item/reagent_containers/syringe/antiviral = 6) - */ //products list in modular_citadel's version of this file - contraband = list(/obj/item/reagent_containers/pill/tox = 3, /obj/item/reagent_containers/pill/morphine = 4, /obj/item/reagent_containers/pill/charcoal = 6) - premium = list(/obj/item/storage/box/hug/medical = 1, /obj/item/reagent_containers/hypospray/medipen = 3, /obj/item/storage/belt/medical = 3, /obj/item/wrench/medical = 1) - armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - refill_canister = /obj/item/vending_refill/medical - -//This one's from bay12 -/obj/machinery/vending/plasmaresearch - name = "\improper Toximate 3000" - desc = "All the fine parts you need in one vending machine!" - products = list(/obj/item/clothing/under/rank/scientist = 6, /obj/item/clothing/suit/bio_suit = 6, /obj/item/clothing/head/bio_hood = 6, - /obj/item/device/transfer_valve = 6, /obj/item/device/assembly/timer = 6, /obj/item/device/assembly/signaler = 6, - /obj/item/device/assembly/prox_sensor = 6, /obj/item/device/assembly/igniter = 6) - contraband = list(/obj/item/device/assembly/health = 3) - -/obj/machinery/vending/wallmed - name = "\improper NanoMed" - desc = "Wall-mounted Medical Equipment dispenser." - icon_state = "wallmed" - icon_deny = "wallmed-deny" - density = FALSE - products = list(/obj/item/reagent_containers/syringe = 3, /obj/item/reagent_containers/pill/patch/styptic = 5, - /obj/item/reagent_containers/pill/patch/silver_sulf = 5, /obj/item/reagent_containers/medspray/styptic = 2, /obj/item/reagent_containers/medspray/silver_sulf = 2, - /obj/item/reagent_containers/pill/charcoal = 2, /obj/item/reagent_containers/medspray/sterilizine = 1) - contraband = list(/obj/item/reagent_containers/pill/tox = 2, /obj/item/reagent_containers/pill/morphine = 2) - armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - refill_canister = /obj/item/vending_refill/medical - refill_count = 1 - -/obj/machinery/vending/security - name = "\improper SecTech" - desc = "A security equipment vendor." - product_ads = "Crack capitalist skulls!;Beat some heads in!;Don't forget - harm is good!;Your weapons are right here.;Handcuffs!;Freeze, scumbag!;Don't tase me bro!;Tase them, bro.;Why not have a donut?" - icon_state = "sec" - icon_deny = "sec-deny" - req_access_txt = "1" - products = list(/obj/item/restraints/handcuffs = 8, /obj/item/restraints/handcuffs/cable/zipties = 10, /obj/item/grenade/flashbang = 4, /obj/item/device/assembly/flash/handheld = 5, - /obj/item/reagent_containers/food/snacks/donut = 12, /obj/item/storage/box/evidence = 6, /obj/item/device/flashlight/seclite = 4, /obj/item/restraints/legcuffs/bola/energy = 7) - contraband = list(/obj/item/clothing/glasses/sunglasses = 2, /obj/item/storage/fancy/donut_box = 2) - premium = list(/obj/item/coin/antagtoken = 1) - armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - -/obj/machinery/vending/security/pre_throw(obj/item/I) - if(istype(I, /obj/item/grenade)) - var/obj/item/grenade/G = I - G.preprime() - else if(istype(I, /obj/item/device/flashlight)) - var/obj/item/device/flashlight/F = I - F.on = TRUE - F.update_brightness() - -/obj/machinery/vending/hydronutrients - name = "\improper NutriMax" - desc = "A plant nutrients vendor." - product_slogans = "Aren't you glad you don't have to fertilize the natural way?;Now with 50% less stink!;Plants are people too!" - product_ads = "We like plants!;Don't you want some?;The greenest thumbs ever.;We like big plants.;Soft soil..." - icon_state = "nutri" - icon_deny = "nutri-deny" - products = list(/obj/item/reagent_containers/glass/bottle/nutrient/ez = 30, /obj/item/reagent_containers/glass/bottle/nutrient/l4z = 20, /obj/item/reagent_containers/glass/bottle/nutrient/rh = 10, /obj/item/reagent_containers/spray/pestspray = 20, - /obj/item/reagent_containers/syringe = 5, /obj/item/storage/bag/plants = 5, /obj/item/cultivator = 3, /obj/item/shovel/spade = 3, /obj/item/device/plant_analyzer = 4) - contraband = list(/obj/item/reagent_containers/glass/bottle/ammonia = 10, /obj/item/reagent_containers/glass/bottle/diethylamine = 5) - armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - -/obj/machinery/vending/hydroseeds - name = "\improper MegaSeed Servitor" - desc = "When you need seeds fast!" - product_slogans = "THIS'S WHERE TH' SEEDS LIVE! GIT YOU SOME!;Hands down the best seed selection on the station!;Also certain mushroom varieties available, more for experts! Get certified today!" - product_ads = "We like plants!;Grow some crops!;Grow, baby, growww!;Aw h'yeah son!" - icon_state = "seeds" - products = list(/obj/item/seeds/ambrosia = 3, /obj/item/seeds/apple = 3, /obj/item/seeds/banana = 3, /obj/item/seeds/berry = 3, - /obj/item/seeds/cabbage = 3, /obj/item/seeds/carrot = 3, /obj/item/seeds/cherry = 3, /obj/item/seeds/chanter = 3, - /obj/item/seeds/chili = 3, /obj/item/seeds/cocoapod = 3, /obj/item/seeds/coffee = 3, /obj/item/seeds/corn = 3, - /obj/item/seeds/eggplant = 3, /obj/item/seeds/grape = 3, /obj/item/seeds/grass = 3, /obj/item/seeds/lemon = 3, - /obj/item/seeds/lime = 3, /obj/item/seeds/onion = 3, /obj/item/seeds/orange = 3, /obj/item/seeds/pineapple = 3, /obj/item/seeds/potato = 3, - /obj/item/seeds/poppy = 3,/obj/item/seeds/pumpkin = 3, /obj/item/seeds/replicapod = 3, /obj/item/seeds/wheat/rice = 3, /obj/item/seeds/soya = 3, - /obj/item/seeds/sunflower = 3, /obj/item/seeds/tea = 3, /obj/item/seeds/tobacco = 3, /obj/item/seeds/tomato = 3, - /obj/item/seeds/tower = 3, /obj/item/seeds/watermelon = 3, /obj/item/seeds/wheat = 3, /obj/item/seeds/whitebeet = 3) - contraband = list(/obj/item/seeds/amanita = 2, /obj/item/seeds/glowshroom = 2, /obj/item/seeds/liberty = 2, /obj/item/seeds/nettle = 2, - /obj/item/seeds/plump = 2, /obj/item/seeds/reishi = 2, /obj/item/seeds/cannabis = 3, /obj/item/seeds/starthistle = 2, - /obj/item/seeds/random = 2) - premium = list(/obj/item/reagent_containers/spray/waterflower = 1) - armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - -/obj/machinery/vending/magivend - name = "\improper MagiVend" - desc = "A magic vending machine." - icon_state = "MagiVend" - product_slogans = "Sling spells the proper way with MagiVend!;Be your own Houdini! Use MagiVend!" - vend_reply = "Have an enchanted evening!" - product_ads = "FJKLFJSD;AJKFLBJAKL;1234 LOONIES LOL!;>MFW;Kill them fuckers!;GET DAT FUKKEN DISK;HONK!;EI NATH;Destroy the station!;Admin conspiracies since forever!;Space-time bending hardware!" - products = list(/obj/item/clothing/head/wizard = 1, /obj/item/clothing/suit/wizrobe = 1, /obj/item/clothing/head/wizard/red = 1, /obj/item/clothing/suit/wizrobe/red = 1, /obj/item/clothing/head/wizard/yellow = 1, /obj/item/clothing/suit/wizrobe/yellow = 1, /obj/item/clothing/shoes/sandal/magic = 1, /obj/item/staff = 2) - contraband = list(/obj/item/reagent_containers/glass/bottle/wizarditis = 1) //No one can get to the machine to hack it anyways; for the lulz - Microwave - armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - -/obj/machinery/vending/autodrobe - name = "\improper AutoDrobe" - desc = "A vending machine for costumes." - icon_state = "theater" - icon_deny = "theater-deny" - req_access_txt = "46" //Theatre access needed, unless hacked. - product_slogans = "Dress for success!;Suited and booted!;It's show time!;Why leave style up to fate? Use AutoDrobe!" - vend_reply = "Thank you for using AutoDrobe!" - products = list(/obj/item/clothing/suit/chickensuit = 1, /obj/item/clothing/head/chicken = 1, /obj/item/clothing/under/gladiator = 1, - /obj/item/clothing/head/helmet/gladiator = 1, /obj/item/clothing/under/gimmick/rank/captain/suit = 1, /obj/item/clothing/head/flatcap = 1, - /obj/item/clothing/suit/toggle/labcoat/mad = 1, /obj/item/clothing/shoes/jackboots = 1, - /obj/item/clothing/under/schoolgirl = 1, /obj/item/clothing/under/schoolgirl/red = 1, /obj/item/clothing/under/schoolgirl/green = 1, /obj/item/clothing/under/schoolgirl/orange = 1, /obj/item/clothing/head/kitty = 1, /obj/item/clothing/under/skirt/black = 1, /obj/item/clothing/head/beret = 1, - /obj/item/clothing/accessory/waistcoat = 1, /obj/item/clothing/under/suit_jacket = 1, /obj/item/clothing/head/that =1, /obj/item/clothing/under/kilt = 1, /obj/item/clothing/head/beret = 1, /obj/item/clothing/accessory/waistcoat = 1, - /obj/item/clothing/glasses/monocle =1, /obj/item/clothing/head/bowler = 1, /obj/item/cane = 1, /obj/item/clothing/under/sl_suit = 1, - /obj/item/clothing/mask/fakemoustache = 1, /obj/item/clothing/suit/bio_suit/plaguedoctorsuit = 1, /obj/item/clothing/head/plaguedoctorhat = 1, /obj/item/clothing/mask/gas/plaguedoctor = 1, - /obj/item/clothing/suit/toggle/owlwings = 1, /obj/item/clothing/under/owl = 1, /obj/item/clothing/mask/gas/owl_mask = 1, - /obj/item/clothing/suit/toggle/owlwings/griffinwings = 1, /obj/item/clothing/under/griffin = 1, /obj/item/clothing/shoes/griffin = 1, /obj/item/clothing/head/griffin = 1, - /obj/item/clothing/suit/apron = 1, /obj/item/clothing/under/waiter = 1, /obj/item/clothing/suit/jacket/miljacket = 1, - /obj/item/clothing/under/pirate = 1, /obj/item/clothing/suit/pirate = 1, /obj/item/clothing/head/pirate = 1, /obj/item/clothing/head/bandana = 1, - /obj/item/clothing/head/bandana = 1, /obj/item/clothing/under/soviet = 1, /obj/item/clothing/head/ushanka = 1, /obj/item/clothing/suit/imperium_monk = 1, - /obj/item/clothing/mask/gas/cyborg = 1, /obj/item/clothing/suit/holidaypriest = 1, /obj/item/clothing/head/wizard/marisa/fake = 1, - /obj/item/clothing/suit/wizrobe/marisa/fake = 1, /obj/item/clothing/under/sundress = 1, /obj/item/clothing/head/witchwig = 1, /obj/item/staff/broom = 1, - /obj/item/clothing/suit/wizrobe/fake = 1, /obj/item/clothing/head/wizard/fake = 1, /obj/item/staff = 3, /obj/item/clothing/mask/gas/sexyclown = 1, - /obj/item/clothing/under/rank/clown/sexy = 1, /obj/item/clothing/mask/gas/sexymime = 1, /obj/item/clothing/under/sexymime = 1, /obj/item/clothing/mask/rat/bat = 1, /obj/item/clothing/mask/rat/bee = 1, /obj/item/clothing/mask/rat/bear = 1, /obj/item/clothing/mask/rat/raven = 1, /obj/item/clothing/mask/rat/jackal = 1, /obj/item/clothing/mask/rat/fox = 1, /obj/item/clothing/mask/frog = 1, /obj/item/clothing/mask/rat/tribal = 1, /obj/item/clothing/mask/rat = 1, - /obj/item/clothing/suit/apron/overalls = 1, /obj/item/clothing/head/rabbitears =1, /obj/item/clothing/head/sombrero = 1, /obj/item/clothing/head/sombrero/green = 1, /obj/item/clothing/suit/poncho = 1, - /obj/item/clothing/suit/poncho/green = 1, /obj/item/clothing/suit/poncho/red = 1, - /obj/item/clothing/under/maid = 1, /obj/item/clothing/under/janimaid = 1, /obj/item/clothing/glasses/cold=1, /obj/item/clothing/glasses/heat=1, - /obj/item/clothing/suit/whitedress = 1, - /obj/item/clothing/under/jester = 1, /obj/item/clothing/head/jester = 1, - /obj/item/clothing/under/villain = 1, - /obj/item/clothing/shoes/singery = 1, /obj/item/clothing/under/singery = 1, - /obj/item/clothing/shoes/singerb = 1, /obj/item/clothing/under/singerb = 1, - /obj/item/clothing/suit/hooded/carp_costume = 1, - /obj/item/clothing/suit/hooded/ian_costume = 1, - /obj/item/clothing/suit/hooded/bee_costume = 1, - /obj/item/clothing/suit/snowman = 1, - /obj/item/clothing/head/snowman = 1, - /obj/item/clothing/mask/joy = 1, - /obj/item/clothing/head/cueball = 1, - /obj/item/clothing/under/scratch = 1, - /obj/item/clothing/under/sailor = 1, - /obj/item/clothing/ears/headphones = 2, - /obj/item/clothing/head/wig/random = 3) - contraband = list(/obj/item/clothing/suit/judgerobe = 1, /obj/item/clothing/head/powdered_wig = 1, /obj/item/gun/magic/wand = 2, /obj/item/clothing/glasses/sunglasses/garb = 2, /obj/item/clothing/glasses/sunglasses/blindfold = 1, /obj/item/clothing/mask/muzzle = 2) - premium = list(/obj/item/clothing/suit/pirate/captain = 2, /obj/item/clothing/head/pirate/captain = 2, /obj/item/clothing/head/helmet/roman = 1, /obj/item/clothing/head/helmet/roman/legionaire = 1, /obj/item/clothing/under/roman = 1, /obj/item/clothing/shoes/roman = 1, /obj/item/shield/riot/roman = 1, /obj/item/skub = 1) - refill_canister = /obj/item/vending_refill/autodrobe - -/obj/machinery/vending/dinnerware - name = "\improper Plasteel Chef's Dinnerware Vendor" - desc = "A kitchen and restaurant equipment vendor." - product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..." - icon_state = "dinnerware" - products = list(/obj/item/storage/bag/tray = 8, /obj/item/kitchen/fork = 6, /obj/item/kitchen/knife = 6, /obj/item/kitchen/rollingpin = 2, /obj/item/reagent_containers/food/drinks/drinkingglass = 8, /obj/item/clothing/suit/apron/chef = 2, /obj/item/reagent_containers/food/condiment/pack/ketchup = 5, /obj/item/reagent_containers/food/condiment/pack/hotsauce = 5, /obj/item/reagent_containers/food/condiment/saltshaker = 5, /obj/item/reagent_containers/food/condiment/peppermill = 5, /obj/item/reagent_containers/glass/bowl = 20) - contraband = list(/obj/item/kitchen/rollingpin = 2, /obj/item/kitchen/knife/butcher = 2) - armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - -/obj/machinery/vending/sovietsoda - name = "\improper BODA" - desc = "Old sweet water vending machine." - icon_state = "sovietsoda" - product_ads = "For Tsar and Country.;Have you fulfilled your nutrition quota today?;Very nice!;We are simple people, for this is all we eat.;If there is a person, there is a problem. If there is no person, then there is no problem." - products = list(/obj/item/reagent_containers/food/drinks/drinkingglass/filled/soda = 30) - contraband = list(/obj/item/reagent_containers/food/drinks/drinkingglass/filled/cola = 20) - armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - -/obj/machinery/vending/tool - name = "\improper YouTool" - desc = "Tools for tools." - icon_state = "tool" - icon_deny = "tool-deny" - //req_access_txt = "12" //Maintenance access - products = list( - /obj/item/stack/cable_coil/random = 10, - /obj/item/crowbar = 5, - /obj/item/weldingtool = 3, - /obj/item/wirecutters = 5, - /obj/item/wrench = 5, - /obj/item/device/analyzer = 5, - /obj/item/device/t_scanner = 5, - /obj/item/screwdriver = 5, - /obj/item/device/flashlight/glowstick = 3, - /obj/item/device/flashlight/glowstick/red = 3, - /obj/item/device/flashlight = 5) - contraband = list( - /obj/item/weldingtool/hugetank = 2, - /obj/item/clothing/gloves/color/fyellow = 2) - premium = list( - /obj/item/clothing/gloves/color/yellow = 1) - armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) - resistance_flags = FIRE_PROOF - -/obj/machinery/vending/engivend - name = "\improper Engi-Vend" - desc = "Spare tool vending. What? Did you expect some witty description?" - icon_state = "engivend" - icon_deny = "engivend-deny" - req_access_txt = "11" //Engineering Equipment access - products = list(/obj/item/clothing/glasses/meson/engine = 2, - /obj/item/clothing/glasses/welding = 3, - /obj/item/device/multitool = 4, - /obj/item/construction/rcd/loaded = 3, - /obj/item/grenade/chem_grenade/smart_metal_foam = 10, - /obj/item/device/geiger_counter = 5, - /obj/item/stock_parts/cell/high = 10, - /obj/item/electronics/airlock = 10, - /obj/item/electronics/apc = 10, - /obj/item/electronics/airalarm = 10) - contraband = list(/obj/item/stock_parts/cell/potato = 3) - premium = list(/obj/item/storage/belt/utility = 3, /obj/item/storage/box/smart_metal_foam = 1) - armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - -//This one's from bay12 -/obj/machinery/vending/engineering - name = "\improper Robco Tool Maker" - desc = "Everything you need for do-it-yourself station repair." - icon_state = "engi" - icon_deny = "engi-deny" - req_access_txt = "11" - products = list(/obj/item/clothing/under/rank/chief_engineer = 4, /obj/item/clothing/under/rank/engineer = 4, /obj/item/clothing/shoes/sneakers/orange = 4, /obj/item/clothing/head/hardhat = 4, - /obj/item/storage/belt/utility = 4, /obj/item/clothing/glasses/meson/engine = 4, /obj/item/clothing/gloves/color/yellow = 4, /obj/item/screwdriver = 12, - /obj/item/crowbar = 12, /obj/item/wirecutters = 12, /obj/item/device/multitool = 12, /obj/item/wrench = 12, /obj/item/device/t_scanner = 12, - /obj/item/stock_parts/cell = 8, /obj/item/weldingtool = 8, /obj/item/clothing/head/welding = 8, - /obj/item/light/tube = 10, /obj/item/clothing/suit/fire = 4, /obj/item/stock_parts/scanning_module = 5, /obj/item/stock_parts/micro_laser = 5, - /obj/item/stock_parts/matter_bin = 5, /obj/item/stock_parts/manipulator = 5) - armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - -//This one's from bay12 -/obj/machinery/vending/robotics - name = "\improper Robotech Deluxe" - desc = "All the tools you need to create your own robot army." - icon_state = "robotics" - icon_deny = "robotics-deny" - req_access_txt = "29" - products = list(/obj/item/clothing/suit/toggle/labcoat = 4, /obj/item/clothing/under/rank/roboticist = 4, /obj/item/stack/cable_coil = 4, /obj/item/device/assembly/flash/handheld = 4, - /obj/item/stock_parts/cell/high = 12, /obj/item/device/assembly/prox_sensor = 3, /obj/item/device/assembly/signaler = 3, /obj/item/device/healthanalyzer = 3, - /obj/item/scalpel = 2, /obj/item/circular_saw = 2, /obj/item/tank/internals/anesthetic = 2, /obj/item/clothing/mask/breath/medical = 5, - /obj/item/screwdriver = 5, /obj/item/crowbar = 5) - armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - -//DON'T FORGET TO CHANGE THE REFILL SIZE IF YOU CHANGE THE MACHINE'S CONTENTS! -/obj/machinery/vending/clothing - name = "ClothesMate" //renamed to make the slogan rhyme - desc = "A vending machine for clothing." - icon_state = "clothes" - product_slogans = "Dress for success!;Prepare to look swagalicious!;Look at all this free swag!;Why leave style up to fate? Use the ClothesMate!" - vend_reply = "Thank you for using the ClothesMate!" - products = list(/obj/item/clothing/head/that=2, /obj/item/clothing/head/fedora=1, /obj/item/clothing/glasses/monocle=1, - /obj/item/clothing/suit/jacket=2, /obj/item/clothing/suit/jacket/puffer/vest=2, /obj/item/clothing/suit/jacket/puffer=2, - /obj/item/clothing/under/suit_jacket/navy=1, /obj/item/clothing/under/suit_jacket/really_black=1, /obj/item/clothing/under/suit_jacket/burgundy=1, - /obj/item/clothing/under/suit_jacket/charcoal=1, /obj/item/clothing/under/suit_jacket/white=1, /obj/item/clothing/under/kilt=1, /obj/item/clothing/under/overalls=1, - /obj/item/clothing/under/sl_suit=1, /obj/item/clothing/under/pants/jeans=3, /obj/item/clothing/under/pants/classicjeans=2, - /obj/item/clothing/under/pants/camo = 1, /obj/item/clothing/under/pants/blackjeans=2, /obj/item/clothing/under/pants/khaki=2, - /obj/item/clothing/under/pants/white=2, /obj/item/clothing/under/pants/red=1, /obj/item/clothing/under/pants/black=2, - /obj/item/clothing/under/pants/tan=2, /obj/item/clothing/under/pants/track=1, /obj/item/clothing/suit/jacket/miljacket = 1, - /obj/item/clothing/neck/tie/blue=1, /obj/item/clothing/neck/tie/red=1, /obj/item/clothing/neck/tie/black=1, /obj/item/clothing/neck/tie/horrible=1, - /obj/item/clothing/neck/scarf/red=1, /obj/item/clothing/neck/scarf/green=1, /obj/item/clothing/neck/scarf/darkblue=1, - /obj/item/clothing/neck/scarf/purple=1, /obj/item/clothing/neck/scarf/yellow=1, /obj/item/clothing/neck/scarf/orange=1, - /obj/item/clothing/neck/scarf/cyan=1, /obj/item/clothing/neck/scarf=1, /obj/item/clothing/neck/scarf/black=1, - /obj/item/clothing/neck/scarf/zebra=1, /obj/item/clothing/neck/scarf/christmas=1, /obj/item/clothing/neck/stripedredscarf=1, - /obj/item/clothing/neck/stripedbluescarf=1, /obj/item/clothing/neck/stripedgreenscarf=1, /obj/item/clothing/accessory/waistcoat=1, - /obj/item/clothing/under/skirt/black=1, /obj/item/clothing/under/skirt/blue=1, /obj/item/clothing/under/skirt/red=1, /obj/item/clothing/under/skirt/purple=1, - /obj/item/clothing/under/sundress=2, /obj/item/clothing/under/stripeddress=1, /obj/item/clothing/under/sailordress=1, /obj/item/clothing/under/redeveninggown=1, /obj/item/clothing/under/blacktango=1, - /obj/item/clothing/under/plaid_skirt=1, /obj/item/clothing/under/plaid_skirt/blue=1, /obj/item/clothing/under/plaid_skirt/purple=1, /obj/item/clothing/under/plaid_skirt/green=1, - /obj/item/clothing/glasses/regular=1, /obj/item/clothing/glasses/regular/jamjar=1, /obj/item/clothing/head/sombrero=1, /obj/item/clothing/suit/poncho=1, - /obj/item/clothing/suit/ianshirt=1, /obj/item/clothing/shoes/laceup=2, /obj/item/clothing/shoes/sneakers/black=4, - /obj/item/clothing/shoes/sandal=1, /obj/item/clothing/gloves/fingerless=2, /obj/item/clothing/glasses/orange=1, /obj/item/clothing/glasses/red=1, - /obj/item/storage/belt/fannypack=1, /obj/item/storage/belt/fannypack/blue=1, /obj/item/storage/belt/fannypack/red=1, /obj/item/clothing/suit/jacket/letterman=2, - /obj/item/clothing/head/beanie=1, /obj/item/clothing/head/beanie/black=1, /obj/item/clothing/head/beanie/red=1, /obj/item/clothing/head/beanie/green=1, /obj/item/clothing/head/beanie/darkblue=1, - /obj/item/clothing/head/beanie/purple=1, /obj/item/clothing/head/beanie/yellow=1, /obj/item/clothing/head/beanie/orange=1, /obj/item/clothing/head/beanie/cyan=1, /obj/item/clothing/head/beanie/christmas=1, - /obj/item/clothing/head/beanie/striped=1, /obj/item/clothing/head/beanie/stripedred=1, /obj/item/clothing/head/beanie/stripedblue=1, /obj/item/clothing/head/beanie/stripedgreen=1, - /obj/item/clothing/suit/jacket/letterman_red=1, - /obj/item/clothing/ears/headphones = 10, /obj/item/clothing/suit/apron/purple_bartender=2, /obj/item/clothing/under/rank/bartender/purple=2) - contraband = list(/obj/item/clothing/under/syndicate/tacticool=1, /obj/item/clothing/mask/balaclava=1, /obj/item/clothing/head/ushanka=1, /obj/item/clothing/under/soviet=1, /obj/item/storage/belt/fannypack/black=2, /obj/item/clothing/suit/jacket/letterman_syndie=1, /obj/item/clothing/under/jabroni=1, /obj/item/clothing/suit/vapeshirt=1, /obj/item/clothing/under/geisha=1) - premium = list(/obj/item/clothing/under/suit_jacket/checkered=1, /obj/item/clothing/head/mailman=1, /obj/item/clothing/under/rank/mailman=1, /obj/item/clothing/suit/jacket/leather=1, /obj/item/clothing/suit/jacket/leather/overcoat=1, /obj/item/clothing/under/pants/mustangjeans=1, /obj/item/clothing/neck/necklace/dope=3, /obj/item/clothing/suit/jacket/letterman_nanotrasen=1) - refill_canister = /obj/item/vending_refill/clothing - -/obj/machinery/vending/toyliberationstation - name = "\improper Syndicate Donksoft Toy Vendor" - desc = "An ages 8 and up approved vendor that dispenses toys. If you were to find the right wires, you can unlock the adult mode setting!" - icon_state = "syndi" - req_access_txt = "1" - product_slogans = "Get your cool toys today!;Trigger a valid hunter today!;Quality toy weapons for cheap prices!;Give them to HoPs for all access!;Give them to HoS to get perma briged!" - product_ads = "Feel robust with your toys!;Express your inner child today!;Toy weapons don't kill people, but valid hunters do!;Who needs responsibilities when you have toy weapons?;Make your next murder FUN!" - vend_reply = "Come back for more!" - products = list(/obj/item/gun/ballistic/automatic/toy/unrestricted = 10, - /obj/item/gun/ballistic/automatic/toy/pistol/unrestricted = 10, - /obj/item/gun/ballistic/shotgun/toy/unrestricted = 10, - /obj/item/toy/sword = 10, - /obj/item/ammo_box/foambox = 20, - /obj/item/toy/foamblade = 10, - /obj/item/toy/syndicateballoon = 10, - /obj/item/clothing/suit/syndicatefake = 5, - /obj/item/clothing/head/syndicatefake = 5) //OPS IN DORMS oh wait it's just an assistant - contraband = list(/obj/item/gun/ballistic/shotgun/toy/crossbow = 10, //Congrats, you unlocked the +18 setting! - /obj/item/gun/ballistic/automatic/c20r/toy/unrestricted/riot = 10, - /obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted/riot = 10, - /obj/item/ammo_box/foambox/riot = 20, - /obj/item/toy/katana = 10, - /obj/item/twohanded/dualsaber/toy = 5, - /obj/item/toy/cards/deck/syndicate = 10) //Gambling and it hurts, making it a +18 item - armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - refill_canister = /obj/item/vending_refill/donksoft - -/obj/machinery/vending/donksofttoyvendor - name = "\improper Donksoft Toy Vendor" - desc = "Ages 8 and up approved vendor that dispenses toys." - icon_state = "syndi" - product_slogans = "Get your cool toys today!;Trigger a valid hunter today!;Quality toy weapons for cheap prices!;Give them to HoPs for all access!;Give them to HoS to get perma briged!" - product_ads = "Feel robust with your toys!;Express your inner child today!;Toy weapons don't kill people, but valid hunters do!;Who needs responsibilities when you have toy weapons?;Make your next murder FUN!" - vend_reply = "Come back for more!" - products = list(/obj/item/gun/ballistic/automatic/toy/unrestricted = 10, - /obj/item/gun/ballistic/automatic/toy/pistol/unrestricted = 10, - /obj/item/gun/ballistic/shotgun/toy/unrestricted = 10, - /obj/item/toy/sword = 10, - /obj/item/ammo_box/foambox = 20, - /obj/item/toy/foamblade = 10, - /obj/item/toy/syndicateballoon = 10, - /obj/item/clothing/suit/syndicatefake = 5, - /obj/item/clothing/head/syndicatefake = 5) - contraband = list(/obj/item/gun/ballistic/shotgun/toy/crossbow = 10, - /obj/item/gun/ballistic/automatic/c20r/toy/unrestricted = 10, - /obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted = 10, - /obj/item/toy/katana = 10, - /obj/item/twohanded/dualsaber/toy = 5) - armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - refill_canister = /obj/item/vending_refill/donksoft - -/obj/machinery/vending/games - name = "\improper Good Clean Fun" - desc = "Vends things that the Captain and Head of Personnel are probably not going to appreciate you fiddling with instead of your job..." - product_ads = "Escape to a fantasy world!;Fuel your gambling addiction!;Ruin your friendships!;Roll for initative!;Elves and dwarves!;Paranoid computers!;Totally not satanic!;Fun times forever!" - icon_state = "games" - products = list( - /obj/item/toy/cards/deck = 5, - /obj/item/storage/pill_bottle/dice = 10, - /obj/item/toy/cards/deck/cas = 3, - /obj/item/toy/cards/deck/cas/black = 3) - contraband = list(/obj/item/dice/fudge = 9) - refill_canister = /obj/item/vending_refill/games - - -/obj/machinery/vending/onTransitZ() - return - -#undef STANDARD_CHARGE -#undef CONTRABAND_CHARGE -#undef COIN_CHARGE diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 8c371ada2f..78ee151581 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -1,8 +1,8 @@ -#define MECHA_INT_FIRE 1 -#define MECHA_INT_TEMP_CONTROL 2 -#define MECHA_INT_SHORT_CIRCUIT 4 -#define MECHA_INT_TANK_BREACH 8 -#define MECHA_INT_CONTROL_LOST 16 +#define MECHA_INT_FIRE (1<<0) +#define MECHA_INT_TEMP_CONTROL (1<<1) +#define MECHA_INT_SHORT_CIRCUIT (1<<2) +#define MECHA_INT_TANK_BREACH (1<<3) +#define MECHA_INT_CONTROL_LOST (1<<4) #define MELEE 1 #define RANGED 2 diff --git a/code/game/objects/effects/countdown.dm b/code/game/objects/effects/countdown.dm index 2ed2105db3..d62146be5e 100644 --- a/code/game/objects/effects/countdown.dm +++ b/code/game/objects/effects/countdown.dm @@ -116,7 +116,7 @@ color = "#00ff80" /obj/effect/countdown/supermatter/get_value() - var/obj/machinery/power/supermatter_shard/S = attached_to + var/obj/machinery/power/supermatter_crystal/S = attached_to if(!istype(S)) return return "
[round(S.get_integrity(), 1)]%
" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 50371aebe7..46a6d961d4 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -100,7 +100,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/force_string //string form of an item's force. Edit this var only to set a custom force string var/last_force_string_check = 0 var/tip_timer - + var/icon_override //CIT CHANGE - adds icon_override var. Will be removed with #4322 var/trigger_guard = TRIGGER_GUARD_NONE @@ -281,10 +281,8 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if(!(interaction_flags_item & INTERACT_ITEM_ATTACK_HAND_PICKUP)) //See if we're supposed to auto pickup. return - if(istype(loc, /obj/item/storage)) - //If the item is in a storage item, take it out - var/obj/item/storage/S = loc - S.remove_from_storage(src, user.loc) + //If the item is in a storage item, take it out + loc.SendSignal(COMSIG_TRY_STORAGE_TAKE, src, user.loc, TRUE) if(throwing) throwing.finalize(FALSE) @@ -297,15 +295,16 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if(!user.put_in_active_hand(src)) dropped(user) +/obj/item/proc/allow_attack_hand_drop(mob/user) + return TRUE + /obj/item/attack_paw(mob/user) if(!user) return if(anchored) return - if(istype(loc, /obj/item/storage)) - var/obj/item/storage/S = loc - S.remove_from_storage(src, user.loc) + loc.SendSignal(COMSIG_TRY_STORAGE_TAKE, src, user.loc, TRUE) if(throwing) throwing.finalize(FALSE) @@ -338,63 +337,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) R.activate_module(src) R.hud_used.update_robot_modules_display() -// Due to storage type consolidation this should get used more now. -// I have cleaned it up a little, but it could probably use more. -Sayu -// The lack of ..() is intentional, do not add one -// added one, fuck the police -/obj/item/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/storage)) - var/obj/item/storage/S = W - if(S.use_to_pickup) - if(S.collection_mode) //Mode is set to collect multiple items on a tile and we clicked on a valid one. - if(isturf(loc)) - var/list/rejections = list() - - var/list/things = loc.contents.Copy() - if (S.collection_mode == 2) - things = typecache_filter_list(things, typecacheof(type)) - - var/len = things.len - if(!len) - to_chat(user, "You failed to pick up anything with [S].") - return - var/datum/progressbar/progress = new(user, len, loc) - - while (do_after(user, 10, TRUE, S, FALSE, CALLBACK(src, .proc/handle_mass_pickup, S, things, loc, rejections, progress))) - stoplag(1) - - qdel(progress) - - to_chat(user, "You put everything you could [S.preposition] [S].") - return - - else if(S.can_be_inserted(src)) - S.handle_item_insertion(src) - return - return ..() - -/obj/item/proc/handle_mass_pickup(obj/item/storage/S, list/things, atom/thing_loc, list/rejections, datum/progressbar/progress) - for(var/obj/item/I in things) - things -= I - if(I.loc != thing_loc) - continue - if(I.type in rejections) // To limit bag spamming: any given type only complains once - continue - if(!S.can_be_inserted(I, stop_messages = TRUE)) // Note can_be_inserted still makes noise when the answer is no - if(S.contents.len >= S.storage_slots) - break - rejections += I.type // therefore full bags are still a little spammy - continue - - S.handle_item_insertion(I, TRUE) //The 1 stops the "You put the [src] into [S]" insertion message from being displayed. - - if (TICK_CHECK) - progress.update(progress.goal - things.len) - return TRUE - - progress.update(progress.goal - things.len) - return FALSE - /obj/item/proc/GetDeconstructableContents() return GetAllContents() - src @@ -424,17 +366,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) SendSignal(COMSIG_ITEM_PICKUP, user) item_flags |= IN_INVENTORY -/obj/item/proc/allow_attack_hand_drop(mob/user) - return TRUE - -// called when this item is removed from a storage item, which is passed on as S. The loc variable is already set to the new destination before this is called. -/obj/item/proc/on_exit_storage(obj/item/storage/S) - return - -// called when this item is added into a storage item, which is passed on as S. The loc variable is already set to the storage item. -/obj/item/proc/on_enter_storage(obj/item/storage/S) - return - // called when "found" in pockets and storage items. Returns 1 if the search should end. /obj/item/proc/on_found(mob/finder) return @@ -518,17 +449,17 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if(isbrain(M)) to_chat(user, "You cannot locate any organic eyes on this brain!") return - + if(user.getStaminaLoss() >= STAMINA_SOFTCRIT)//CIT CHANGE - makes eyestabbing impossible if you're in stamina softcrit to_chat(user, "You're too exhausted for that.")//CIT CHANGE - ditto return //CIT CHANGE - ditto - + src.add_fingerprint(user) playsound(loc, src.hitsound, 30, 1, -1) user.do_attack_animation(M) - + user.adjustStaminaLossBuffered(10)//CIT CHANGE - makes eyestabbing cost stamina if(M != user) @@ -605,12 +536,10 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) /obj/item/proc/remove_item_from_storage(atom/newLoc) //please use this if you're going to snowflake an item out of a obj/item/storage if(!newLoc) - return 0 - if(istype(loc, /obj/item/storage)) - var/obj/item/storage/S = loc - S.remove_from_storage(src,newLoc) - return 1 - return 0 + return FALSE + if(loc.SendSignal(COMSIG_CONTAINS_STORAGE)) + return loc.SendSignal(COMSIG_TRY_STORAGE_TAKE, src, newLoc, TRUE) + return FALSE /obj/item/proc/get_belt_overlay() //Returns the icon used for overlaying the object on a belt return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', icon_state) diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index 9edd19795c..a634f2a4ce 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -193,12 +193,11 @@ to_chat(usr, "The given name is too long. The area's name is unchanged.") return set_area_machinery_title(A,str,prevname) - for(var/area/RA in A.related) - RA.name = str - if(RA.firedoors) - for(var/D in RA.firedoors) - var/obj/machinery/door/firedoor/FD = D - FD.CalculateAffectingAreas() + A.name = str + if(A.firedoors) + for(var/D in A.firedoors) + var/obj/machinery/door/firedoor/FD = D + FD.CalculateAffectingAreas() to_chat(usr, "You rename the '[prevname]' to '[str]'.") log_game("[key_name(usr)] has renamed [prevname] to [str]") A.update_areasize() @@ -209,17 +208,16 @@ /obj/item/areaeditor/proc/set_area_machinery_title(area/A,title,oldtitle) if(!oldtitle) // or replacetext goes to infinite loop return - for(var/area/RA in A.related) - for(var/obj/machinery/airalarm/M in RA) - M.name = replacetext(M.name,oldtitle,title) - for(var/obj/machinery/power/apc/M in RA) - M.name = replacetext(M.name,oldtitle,title) - for(var/obj/machinery/atmospherics/components/unary/vent_scrubber/M in RA) - M.name = replacetext(M.name,oldtitle,title) - for(var/obj/machinery/atmospherics/components/unary/vent_pump/M in RA) - M.name = replacetext(M.name,oldtitle,title) - for(var/obj/machinery/door/M in RA) - M.name = replacetext(M.name,oldtitle,title) + for(var/obj/machinery/airalarm/M in A) + M.name = replacetext(M.name,oldtitle,title) + for(var/obj/machinery/power/apc/M in A) + M.name = replacetext(M.name,oldtitle,title) + for(var/obj/machinery/atmospherics/components/unary/vent_scrubber/M in A) + M.name = replacetext(M.name,oldtitle,title) + for(var/obj/machinery/atmospherics/components/unary/vent_pump/M in A) + M.name = replacetext(M.name,oldtitle,title) + for(var/obj/machinery/door/M in A) + M.name = replacetext(M.name,oldtitle,title) //TODO: much much more. Unnamed airlocks, cameras, etc. //Blueprint Subtypes diff --git a/code/game/objects/items/clown.dm b/code/game/objects/items/clown.dm deleted file mode 100644 index eb4c1a570e..0000000000 --- a/code/game/objects/items/clown.dm +++ /dev/null @@ -1,46 +0,0 @@ - -/obj/item/pie_cannon - name = "pie cannon" - desc = "Load cream pie for optimal results" - force = 10 - icon_state = "piecannon" - item_state = "powerfist" - var/obj/item/reagent_containers/food/snacks/pie/loaded = null - -/obj/item/pie_cannon/attackby(obj/item/I, mob/living/L) - if(istype(I, /obj/item/reagent_containers/food/snacks/pie)) - if(!loaded) - L.transferItemToLoc(I, src) - loaded = I - to_chat(L, "You load the [I] into the [src]!") - return - return ..() - -/obj/item/pie_cannon/afterattack(atom/target, mob/living/user, flag, params) - if(!loaded) - return ..() - var/obj/item/projectile/pie/launched = new /obj/item/projectile/pie(src) - launched.P = loaded - loaded.forceMove(launched) - launched.appearance = loaded.appearance - loaded = null - launched.preparePixelProjectile(target, get_turf(target), user, params, 0) - launched.forceMove(get_turf(src)) - launched.fire() - user.visible_message("[user] fires the [src] at [target]!") - -/obj/item/projectile/pie - name = "pie" - desc = "Think fast!" - var/obj/item/reagent_containers/food/snacks/pie/P = null - -/obj/item/projectile/pie/on_hit(atom/A) - . = ..() - if(P) - A.visible_message("[P] smashes into [A] at high velocity!") - P.forceMove(get_turf(A)) - P.throw_impact(A) - if(ismovableatom(A)) - var/atom/movable/AM = A - if(!AM.anchored) - AM.throw_at(get_edge_target_turf(get_dir(src, AM), 3, 2)) diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 0abdc9a7c4..7480f7b489 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -458,13 +458,14 @@ icon = 'icons/obj/crayons.dmi' icon_state = "crayonbox" w_class = WEIGHT_CLASS_SMALL - storage_slots = 7 - can_hold = list( - /obj/item/toy/crayon - ) -/obj/item/storage/crayons/New() - ..() +/obj/item/storage/crayons/Initialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 7 + STR.can_hold = typecacheof(list(/obj/item/toy/crayon)) + +/obj/item/storage/crayons/PopulateContents() new /obj/item/toy/crayon/red(src) new /obj/item/toy/crayon/orange(src) new /obj/item/toy/crayon/yellow(src) diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index 318aaa9e24..e7d9750a3b 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -1,18 +1,18 @@ -#define CART_SECURITY (1<<0) -#define CART_ENGINE (1<<1) -#define CART_ATMOS (1<<2) -#define CART_MEDICAL (1<<3) -#define CART_MANIFEST (1<<4) -#define CART_CLOWN (1<<5) -#define CART_MIME (1<<6) -#define CART_JANITOR (1<<7) +#define CART_SECURITY (1<<0) +#define CART_ENGINE (1<<1) +#define CART_ATMOS (1<<2) +#define CART_MEDICAL (1<<3) +#define CART_MANIFEST (1<<4) +#define CART_CLOWN (1<<5) +#define CART_MIME (1<<6) +#define CART_JANITOR (1<<7) #define CART_REAGENT_SCANNER (1<<8) -#define CART_NEWSCASTER (1<<9) -#define CART_REMOTE_DOOR (1<<10) -#define CART_STATUS_DISPLAY (1<<11) -#define CART_QUARTERMASTER (1<<12) -#define CART_HYDROPONICS (1<<13) -#define CART_DRONEPHONE (1<<14) +#define CART_NEWSCASTER (1<<9) +#define CART_REMOTE_DOOR (1<<10) +#define CART_STATUS_DISPLAY (1<<11) +#define CART_QUARTERMASTER (1<<12) +#define CART_HYDROPONICS (1<<13) +#define CART_DRONEPHONE (1<<14) /obj/item/cartridge diff --git a/code/game/objects/items/devices/dogborg_sleeper.dm b/code/game/objects/items/devices/dogborg_sleeper.dm index 8b51681f86..23d569c5f3 100644 --- a/code/game/objects/items/devices/dogborg_sleeper.dm +++ b/code/game/objects/items/devices/dogborg_sleeper.dm @@ -372,7 +372,10 @@ injection_chems = null //So they don't have all the same chems as the medihound! /obj/item/storage/attackby(obj/item/device/dogborg/sleeper/K9, mob/user, proximity) - K9.afterattack(src, user ,1) + if(istype(K9)) + K9.afterattack(src, user ,1) + else + . = ..() /obj/item/device/dogborg/sleeper/K9/afterattack(var/atom/movable/target, mob/living/silicon/user, proximity) hound = loc @@ -421,7 +424,10 @@ var/max_item_count = 30 /obj/item/storage/attackby(obj/item/device/dogborg/sleeper/compactor, mob/user, proximity) //GIT CIRCUMVENTED YO! - compactor.afterattack(src, user ,1) + if(istype(compactor)) + compactor.afterattack(src, user ,1) + else + . = ..() /obj/item/device/dogborg/sleeper/compactor/afterattack(var/atom/movable/target, mob/living/silicon/user, proximity)//GARBO NOMS hound = loc diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index 7c90f07115..cf11ac7640 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -59,8 +59,8 @@ return if(do_after(user,50, user)) to_chat(user, "You feel like you've got a good handle on [actionname]!") - reading = FALSE G.Grant(user) + reading = FALSE /obj/item/book/granter/action/drink_fling granted_action = /datum/action/innate/drink_fling @@ -121,10 +121,10 @@ return if(do_after(user,50, user)) to_chat(user, "You feel like you've experienced enough to cast [spellname]!") - reading = FALSE user.mind.AddSpell(S) user.log_message("learned the spell [spellname] ([S]).", INDIVIDUAL_ATTACK_LOG) onlearned(user) + reading = FALSE /obj/item/book/granter/spell/recoil(mob/user) user.visible_message("[src] glows in a black light!") @@ -328,10 +328,10 @@ return if(do_after(user,50, user)) to_chat(user, "[greet]") - reading = FALSE MA.teach(user) user.log_message("learned the martial art [martialname] ([MA]).", INDIVIDUAL_ATTACK_LOG) onlearned(user) + reading = FALSE /obj/item/book/granter/martial/cqc martial = /datum/martial_art/cqc diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index f2daf58b1a..4a9e136182 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -579,3 +579,7 @@ beakers += B1 beakers += B2 + +#undef READY +#undef WIRED +#undef EMPTY diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm index 3c4910abc0..6d15992d24 100644 --- a/code/game/objects/items/grenades/plastic.dm +++ b/code/game/objects/items/grenades/plastic.dm @@ -214,12 +214,8 @@ return if(loc == AM) return - if((istype(AM, /obj/item/storage/)) && !((istype(AM, /obj/item/storage/secure)) || (istype(AM, /obj/item/storage/lockbox)))) //If its storage but not secure storage OR a lockbox, then place it inside. + if(AM.SendSignal(COMSIG_CONTAINS_STORAGE) && !AM.SendSignal(COMSIG_IS_STORAGE_LOCKED)) return - if((istype(AM, /obj/item/storage/secure)) || (istype(AM, /obj/item/storage/lockbox))) - var/obj/item/storage/secure/S = AM - if(!S.locked) //Literal hacks, this works for lockboxes despite incorrect type casting, because they both share the locked var. But if its unlocked, place it inside, otherwise PLANTING C4! - return to_chat(user, "You start planting the bomb...") diff --git a/code/game/objects/items/implants/implant_storage.dm b/code/game/objects/items/implants/implant_storage.dm index 049635707e..787c246ddf 100644 --- a/code/game/objects/items/implants/implant_storage.dm +++ b/code/game/objects/items/implants/implant_storage.dm @@ -1,46 +1,30 @@ -/obj/item/storage/internal/implant - name = "bluespace pocket" - max_w_class = WEIGHT_CLASS_NORMAL - max_combined_w_class = 6 - cant_hold = list(/obj/item/disk/nuclear) - silent = TRUE - - /obj/item/implant/storage name = "storage implant" desc = "Stores up to two big items in a bluespace pocket." icon_state = "storage" item_color = "r" - var/obj/item/storage/internal/implant/storage - -/obj/item/implant/storage/New() - ..() - storage = new /obj/item/storage/internal/implant(src) + var/max_slot_stacking = 4 /obj/item/implant/storage/activate() - storage.MouseDrop(imp_in) + SendSignal(COMSIG_TRY_STORAGE_SHOW, imp_in, TRUE) /obj/item/implant/storage/removed(source, silent = FALSE, special = 0) - if(..()) + . = ..() + if(.) if(!special) - storage.close_all() - for(var/obj/item/I in storage) - storage.remove_from_storage(I, get_turf(source)) - return 1 + qdel(GetComponent(/datum/component/storage/concrete/implant)) /obj/item/implant/storage/implant(mob/living/target, mob/user, silent = FALSE) for(var/X in target.implants) if(istype(X, type)) var/obj/item/implant/storage/imp_e = X - imp_e.storage.storage_slots += storage.storage_slots - imp_e.storage.max_combined_w_class += storage.max_combined_w_class - imp_e.storage.contents += storage.contents - - storage.close_all() - storage.show_to(target) - - qdel(src) - return 1 + GET_COMPONENT_FROM(STR, /datum/component/storage, imp_e) + if(!STR || (STR && STR.max_items < max_slot_stacking)) + imp_e.AddComponent(/datum/component/storage/concrete/implant) + qdel(src) + return TRUE + return FALSE + AddComponent(/datum/component/storage/concrete/implant) return ..() diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 6ae43f4958..0016bf981f 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -216,13 +216,13 @@ w_class = WEIGHT_CLASS_BULKY force = 0.001 armour_penetration = 1000 - var/obj/machinery/power/supermatter_shard/shard + var/obj/machinery/power/supermatter_crystal/shard var/balanced = 1 force_string = "INFINITE" /obj/item/melee/supermatter_sword/Initialize() . = ..() - shard = new /obj/machinery/power/supermatter_shard(src) + shard = new /obj/machinery/power/supermatter_crystal(src) qdel(shard.countdown) shard.countdown = null START_PROCESSING(SSobj, src) @@ -339,7 +339,7 @@ /obj/item/melee/roastingstick/Initialize() . = ..() if (!ovens) - ovens = typecacheof(list(/obj/singularity, /obj/machinery/power/supermatter_shard/crystal, /obj/structure/bonfire, /obj/structure/destructible/clockwork/massive/ratvar)) + ovens = typecacheof(list(/obj/singularity, /obj/machinery/power/supermatter_crystal, /obj/structure/bonfire, /obj/structure/destructible/clockwork/massive/ratvar)) /obj/item/melee/roastingstick/attack_self(mob/user) on = !on diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm index 1a4c2f5674..0f926b4ee3 100644 --- a/code/game/objects/items/religion.dm +++ b/code/game/objects/items/religion.dm @@ -212,9 +212,13 @@ /obj/item/storage/backpack/bannerpack name = "nanotrasen banner backpack" desc = "It's a backpack with lots of extra room. A banner with Nanotrasen's logo is attached, that can't be removed." - max_combined_w_class = 27 //6 more then normal, for the tradeoff of declaring yourself an antag at all times. icon_state = "bannerpack" +/obj/item/storage/backpack/bannerpack/Initialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_combined_w_class = 27 //6 more then normal, for the tradeoff of declaring yourself an antag at all times. + /obj/item/storage/backpack/bannerpack/red name = "red banner backpack" desc = "It's a backpack with lots of extra room. A red banner is attached, that can't be removed." diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 63bfe6eeb3..854031b1f4 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -14,14 +14,20 @@ // if module is reset var/one_use = FALSE -/obj/item/borg/upgrade/proc/action(mob/living/silicon/robot/R) +/obj/item/borg/upgrade/proc/action(mob/living/silicon/robot/R, user = usr) if(R.stat == DEAD) - to_chat(usr, "[src] will not function on a deceased cyborg.") - return 1 + to_chat(user, "[src] will not function on a deceased cyborg.") + return FALSE if(module_type && !istype(R.module, module_type)) to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!") - to_chat(usr, "There's no mounting point for the module!") - return 1 + to_chat(user, "There's no mounting point for the module!") + return FALSE + return TRUE + +/obj/item/borg/upgrade/proc/deactivate(mob/living/silicon/robot/R, user = usr) + if (!(src in R.upgrades)) + return FALSE + return TRUE /obj/item/borg/upgrade/rename name = "cyborg reclassification board" @@ -34,18 +40,13 @@ heldname = stripped_input(user, "Enter new robot name", "Cyborg Reclassification", heldname, MAX_NAME_LEN) /obj/item/borg/upgrade/rename/action(mob/living/silicon/robot/R) - if(..()) - return - - var/oldname = R.real_name - - R.custom_name = heldname - R.updatename() - if(oldname == R.real_name) - R.notify_ai(RENAME, oldname, R.real_name) - - return 1 - + . = ..() + if(.) + var/oldname = R.real_name + R.custom_name = heldname + R.updatename() + if(oldname == R.real_name) + R.notify_ai(RENAME, oldname, R.real_name) /obj/item/borg/upgrade/restart name = "cyborg emergency reboot module" @@ -53,10 +54,10 @@ icon_state = "cyborg_upgrade1" one_use = TRUE -/obj/item/borg/upgrade/restart/action(mob/living/silicon/robot/R) +/obj/item/borg/upgrade/restart/action(mob/living/silicon/robot/R, user = usr) if(R.health < 0) - to_chat(usr, "You have to repair the cyborg before using this module!") - return 0 + to_chat(user, "You have to repair the cyborg before using this module!") + return FALSE if(R.mind) R.mind.grab_ghost() @@ -64,25 +65,26 @@ R.revive() - return 1 - /obj/item/borg/upgrade/vtec name = "cyborg VTEC module" desc = "Used to kick in a cyborg's VTEC systems, increasing their speed." icon_state = "cyborg_upgrade2" require_module = 1 -/obj/item/borg/upgrade/vtec/action(mob/living/silicon/robot/R) - if(..()) - return - if(R.speed < 0) - to_chat(R, "A VTEC unit is already installed!") - to_chat(usr, "There's no room for another VTEC unit!") - return +/obj/item/borg/upgrade/vtec/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) + if(R.speed < 0) + to_chat(R, "A VTEC unit is already installed!") + to_chat(user, "There's no room for another VTEC unit!") + return FALSE - R.speed = -2 // Gotta go fast. + R.speed = -2 // Gotta go fast. - return 1 +/obj/item/borg/upgrade/vtec/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + R.speed = initial(R.speed) /obj/item/borg/upgrade/disablercooler name = "cyborg rapid disabler cooling module" @@ -91,38 +93,46 @@ require_module = 1 module_type = /obj/item/robot_module/security -/obj/item/borg/upgrade/disablercooler/action(mob/living/silicon/robot/R) - if(..()) - return +/obj/item/borg/upgrade/disablercooler/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) + var/obj/item/gun/energy/disabler/cyborg/T = locate() in R.module.modules + if(!T) + to_chat(user, "There's no disabler in this unit!") + return FALSE + if(T.charge_delay <= 2) + to_chat(R, "A cooling unit is already installed!") + to_chat(user, "There's no room for another cooling unit!") + return FALSE - var/obj/item/gun/energy/disabler/cyborg/T = locate() in R.module.modules - if(!T) - to_chat(usr, "There's no disabler in this unit!") - return - if(T.charge_delay <= 2) - to_chat(R, "A cooling unit is already installed!") - to_chat(usr, "There's no room for another cooling unit!") - return + T.charge_delay = max(2 , T.charge_delay - 4) - T.charge_delay = max(2 , T.charge_delay - 4) - - return 1 +/obj/item/borg/upgrade/disablercooler/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + var/obj/item/gun/energy/disabler/cyborg/T = locate() in R.module.modules + if(!T) + return FALSE + T.charge_delay = initial(T.charge_delay) /obj/item/borg/upgrade/thrusters name = "ion thruster upgrade" desc = "An energy-operated thruster system for cyborgs." icon_state = "cyborg_upgrade3" -/obj/item/borg/upgrade/thrusters/action(mob/living/silicon/robot/R) - if(..()) - return +/obj/item/borg/upgrade/thrusters/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) + if(R.ionpulse) + to_chat(user, "This unit already has ion thrusters installed!") + return FALSE - if(R.ionpulse) - to_chat(usr, "This unit already has ion thrusters installed!") - return + R.ionpulse = TRUE - R.ionpulse = TRUE - return 1 +/obj/item/borg/upgrade/thrusters/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + R.ionpulse = FALSE /obj/item/borg/upgrade/ddrill name = "mining cyborg diamond drill" @@ -131,19 +141,30 @@ require_module = 1 module_type = /obj/item/robot_module/miner -/obj/item/borg/upgrade/ddrill/action(mob/living/silicon/robot/R) - if(..()) - return +/obj/item/borg/upgrade/ddrill/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) + for(var/obj/item/pickaxe/drill/cyborg/D in R.module) + R.module.remove_module(D, TRUE) + for(var/obj/item/shovel/S in R.module) + R.module.remove_module(S, TRUE) - for(var/obj/item/pickaxe/drill/cyborg/D in R.module) - R.module.remove_module(D, TRUE) - for(var/obj/item/shovel/S in R.module) - R.module.remove_module(S, TRUE) + var/obj/item/pickaxe/drill/cyborg/diamond/DD = new /obj/item/pickaxe/drill/cyborg/diamond(R.module) + R.module.basic_modules += DD + R.module.add_module(DD, FALSE, TRUE) - var/obj/item/pickaxe/drill/cyborg/diamond/DD = new /obj/item/pickaxe/drill/cyborg/diamond(R.module) - R.module.basic_modules += DD - R.module.add_module(DD, FALSE, TRUE) - return 1 +/obj/item/borg/upgrade/ddrill/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + for(var/obj/item/pickaxe/drill/cyborg/diamond/DD in R.module) + R.module.remove_module(DD, TRUE) + + var/obj/item/pickaxe/drill/cyborg/D = new (R.module) + R.module.basic_modules += D + R.module.add_module(D, FALSE, TRUE) + var/obj/item/shovel/S = new (R.module) + R.module.basic_modules += S + R.module.add_module(S, FALSE, TRUE) /obj/item/borg/upgrade/soh name = "mining cyborg satchel of holding" @@ -153,16 +174,24 @@ module_type = /obj/item/robot_module/miner /obj/item/borg/upgrade/soh/action(mob/living/silicon/robot/R) - if(..()) - return + . = ..() + if(.) + for(var/obj/item/storage/bag/ore/cyborg/S in R.module) + R.module.remove_module(S, TRUE) - for(var/obj/item/storage/bag/ore/cyborg/S in R.module) - R.module.remove_module(S, TRUE) + var/obj/item/storage/bag/ore/holding/H = new /obj/item/storage/bag/ore/holding(R.module) + R.module.basic_modules += H + R.module.add_module(H, FALSE, TRUE) - var/obj/item/storage/bag/ore/holding/H = new /obj/item/storage/bag/ore/holding(R.module) - R.module.basic_modules += H - R.module.add_module(H, FALSE, TRUE) - return 1 +/obj/item/borg/upgrade/soh/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + for(var/obj/item/storage/bag/ore/holding/H in R.module) + R.module.remove_module(H, TRUE) + + var/obj/item/storage/bag/ore/cyborg/S = new (R.module) + R.module.basic_modules += S + R.module.add_module(S, FALSE, TRUE) /obj/item/borg/upgrade/syndicate name = "illegal equipment module" @@ -170,16 +199,20 @@ icon_state = "cyborg_upgrade3" require_module = 1 -/obj/item/borg/upgrade/syndicate/action(mob/living/silicon/robot/R) - if(..()) - return +/obj/item/borg/upgrade/syndicate/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) + if(R.emagged) + return FALSE - if(R.emagged) - return + R.SetEmagged(1) - R.SetEmagged(1) + return TRUE - return 1 +/obj/item/borg/upgrade/syndicate/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + R.SetEmagged(FALSE) /obj/item/borg/upgrade/lavaproof name = "mining cyborg lavaproof tracks" @@ -189,11 +222,15 @@ require_module = 1 module_type = /obj/item/robot_module/miner -/obj/item/borg/upgrade/lavaproof/action(mob/living/silicon/robot/R) - if(..()) - return - R.weather_immunities += "lava" - return 1 +/obj/item/borg/upgrade/lavaproof/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) + R.weather_immunities += "lava" + +/obj/item/borg/upgrade/lavaproof/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + R.weather_immunities -= "lava" /obj/item/borg/upgrade/selfrepair name = "self-repair module" @@ -208,20 +245,26 @@ var/mob/living/silicon/robot/cyborg var/datum/action/toggle_action -/obj/item/borg/upgrade/selfrepair/action(mob/living/silicon/robot/R) - if(..()) - return +/obj/item/borg/upgrade/selfrepair/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) + var/obj/item/borg/upgrade/selfrepair/U = locate() in R + if(U) + to_chat(user, "This unit is already equipped with a self-repair module.") + return FALSE - var/obj/item/borg/upgrade/selfrepair/U = locate() in R - if(U) - to_chat(usr, "This unit is already equipped with a self-repair module.") - return 0 + cyborg = R + icon_state = "selfrepair_off" + toggle_action = new /datum/action/item_action/toggle(src) + toggle_action.Grant(R) - cyborg = R - icon_state = "selfrepair_off" - toggle_action = new /datum/action/item_action/toggle(src) - toggle_action.Grant(R) - return 1 +/obj/item/borg/upgrade/selfrepair/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + toggle_action.Remove(cyborg) + QDEL_NULL(toggle_action) + cyborg = null + deactivate_sr() /obj/item/borg/upgrade/selfrepair/dropped() addtimer(CALLBACK(src, .proc/check_dropped), 1) @@ -231,7 +274,7 @@ toggle_action.Remove(cyborg) QDEL_NULL(toggle_action) cyborg = null - deactivate() + deactivate_sr() /obj/item/borg/upgrade/selfrepair/ui_action_click() on = !on @@ -252,7 +295,7 @@ else icon_state = "cyborg_upgrade5" -/obj/item/borg/upgrade/selfrepair/proc/deactivate() +/obj/item/borg/upgrade/selfrepair/proc/deactivate_sr() STOP_PROCESSING(SSobj, src) on = FALSE update_icon() @@ -265,12 +308,12 @@ if(cyborg && (cyborg.stat != DEAD) && on) if(!cyborg.cell) to_chat(cyborg, "Self-repair module deactivated. Please, insert the power cell.") - deactivate() + deactivate_sr() return if(cyborg.cell.charge < powercost * 2) to_chat(cyborg, "Self-repair module deactivated. Please recharge.") - deactivate() + deactivate_sr() return if(cyborg.health < cyborg.maxHealth) @@ -297,7 +340,7 @@ to_chat(cyborg, "Self-repair is active in [msgmode] mode.") msg_cooldown = world.time else - deactivate() + deactivate_sr() /obj/item/borg/upgrade/hypospray name = "medical cyborg hypospray advanced synthesiser" @@ -308,15 +351,21 @@ module_type = /obj/item/robot_module/medical var/list/additional_reagents = list() -/obj/item/borg/upgrade/hypospray/action(mob/living/silicon/robot/R) - if(..()) - return - for(var/obj/item/reagent_containers/borghypo/H in R.module.modules) - if(H.accepts_reagent_upgrades) - for(var/re in additional_reagents) - H.add_reagent(re) +/obj/item/borg/upgrade/hypospray/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) + for(var/obj/item/reagent_containers/borghypo/H in R.module.modules) + if(H.accepts_reagent_upgrades) + for(var/re in additional_reagents) + H.add_reagent(re) - return 1 +/obj/item/borg/upgrade/hypospray/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + for(var/obj/item/reagent_containers/borghypo/H in R.module.modules) + if(H.accepts_reagent_upgrades) + for(var/re in additional_reagents) + H.del_reagent(re) /obj/item/borg/upgrade/hypospray/expanded name = "medical cyborg expanded hypospray" @@ -338,19 +387,22 @@ pierce armor and thick material." icon_state = "cyborg_upgrade3" -/obj/item/borg/upgrade/piercing_hypospray/action(mob/living/silicon/robot/R) - if(..()) - return +/obj/item/borg/upgrade/piercing_hypospray/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) + var/found_hypo = FALSE + for(var/obj/item/reagent_containers/borghypo/H in R.module.modules) + H.bypass_protection = TRUE + found_hypo = TRUE - var/found_hypo = FALSE - for(var/obj/item/reagent_containers/borghypo/H in R.module.modules) - H.bypass_protection = TRUE - found_hypo = TRUE + if(!found_hypo) + return FALSE - if(!found_hypo) - return - - return 1 +/obj/item/borg/upgrade/piercing_hypospray/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + for(var/obj/item/reagent_containers/borghypo/H in R.module.modules) + H.bypass_protection = initial(H.bypass_protection) /obj/item/borg/upgrade/defib name = "medical cyborg defibrillator" @@ -360,66 +412,81 @@ require_module = 1 module_type = /obj/item/robot_module/medical -/obj/item/borg/upgrade/defib/action(mob/living/silicon/robot/R) - if(..()) - return +/obj/item/borg/upgrade/defib/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) + var/obj/item/twohanded/shockpaddles/cyborg/S = new(R.module) + R.module.basic_modules += S + R.module.add_module(S, FALSE, TRUE) - var/obj/item/twohanded/shockpaddles/cyborg/S = new(R.module) - R.module.basic_modules += S - R.module.add_module(S, FALSE, TRUE) - - return 1 +/obj/item/borg/upgrade/defib/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + var/obj/item/twohanded/shockpaddles/cyborg/S = locate() in R.module + R.module.remove_module(S, TRUE) /obj/item/borg/upgrade/ai name = "B.O.R.I.S. module" desc = "Bluespace Optimized Remote Intelligence Synchronization. An uplink device which takes the place of an MMI in cyborg endoskeletons, creating a robotic shell controlled by an AI." icon_state = "boris" -/obj/item/borg/upgrade/ai/action(mob/living/silicon/robot/R) - if(..()) - return - if(R.shell) - to_chat(usr, "This unit is already an AI shell!") - return - if(R.key) //You cannot replace a player unless the key is completely removed. - to_chat(usr, "Intelligence patterns detected in this [R.braintype]. Aborting.") - return +/obj/item/borg/upgrade/ai/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) + if(R.shell) + to_chat(user, "This unit is already an AI shell!") + return FALSE + if(R.key) //You cannot replace a player unless the key is completely removed. + to_chat(user, "Intelligence patterns detected in this [R.braintype]. Aborting.") + return FALSE - R.make_shell(src) - return TRUE + R.make_shell(src) + +/obj/item/borg/upgrade/ai/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + if(R.shell) + R.undeploy() + R.notify_ai(AI_SHELL) /obj/item/borg/upgrade/expand name = "borg expander" desc = "A cyborg resizer, it makes a cyborg huge." icon_state = "cyborg_upgrade3" -/obj/item/borg/upgrade/expand/action(mob/living/silicon/robot/R) - if(..()) - return +/obj/item/borg/upgrade/expand/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) - if(R.hasExpanded) - to_chat(usr, "This unit already has an expand module installed!") - return + if(R.hasExpanded) + to_chat(usr, "This unit already has an expand module installed!") + return FALSE - R.notransform = TRUE - var/prev_lockcharge = R.lockcharge - R.SetLockdown(1) - R.anchored = TRUE - var/datum/effect_system/smoke_spread/smoke = new - smoke.set_up(1, R.loc) - smoke.start() - sleep(2) - for(var/i in 1 to 4) - playsound(R, pick('sound/items/drill_use.ogg', 'sound/items/jaws_cut.ogg', 'sound/items/jaws_pry.ogg', 'sound/items/welder.ogg', 'sound/items/ratchet.ogg'), 80, 1, -1) - sleep(12) - if(!prev_lockcharge) - R.SetLockdown(0) - R.anchored = FALSE - R.notransform = FALSE - R.resize = 2 - R.hasExpanded = TRUE - R.update_transform() - return TRUE + R.notransform = TRUE + var/prev_lockcharge = R.lockcharge + R.SetLockdown(1) + R.anchored = TRUE + var/datum/effect_system/smoke_spread/smoke = new + smoke.set_up(1, R.loc) + smoke.start() + sleep(2) + for(var/i in 1 to 4) + playsound(R, pick('sound/items/drill_use.ogg', 'sound/items/jaws_cut.ogg', 'sound/items/jaws_pry.ogg', 'sound/items/welder.ogg', 'sound/items/ratchet.ogg'), 80, 1, -1) + sleep(12) + if(!prev_lockcharge) + R.SetLockdown(0) + R.anchored = FALSE + R.notransform = FALSE + R.resize = 2 + R.hasExpanded = TRUE + R.update_transform() + +/obj/item/borg/upgrade/expand/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + R.resize = 0.5 + R.hasExpanded = FALSE + R.update_transform() /obj/item/borg/upgrade/rped name = "engineering cyborg RPED" @@ -429,19 +496,25 @@ require_module = TRUE module_type = /obj/item/robot_module/engineering -/obj/item/borg/upgrade/rped/action(mob/living/silicon/robot/R) - if(..()) - return +/obj/item/borg/upgrade/rped/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) - var/obj/item/storage/part_replacer/cyborg/RPED = locate() in R - if(RPED) - to_chat(usr, "This unit is already equipped with a RPED module.") - return FALSE + var/obj/item/storage/part_replacer/cyborg/RPED = locate() in R + if(RPED) + to_chat(user, "This unit is already equipped with a RPED module.") + return FALSE - RPED = new(R.module) - R.module.basic_modules += RPED - R.module.add_module(RPED, FALSE, TRUE) - return TRUE + RPED = new(R.module) + R.module.basic_modules += RPED + R.module.add_module(RPED, FALSE, TRUE) + +/obj/item/borg/upgrade/rped/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + var/obj/item/storage/part_replacer/cyborg/RPED = locate() in R.module + if (RPED) + R.module.remove_module(RPED, TRUE) /obj/item/borg/upgrade/pinpointer name = "medical cyborg crew pinpointer" @@ -451,16 +524,22 @@ require_module = TRUE module_type = /obj/item/robot_module/medical -/obj/item/borg/upgrade/pinpointer/action(mob/living/silicon/robot/R) - if(..()) - return +/obj/item/borg/upgrade/pinpointer/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) - var/obj/item/pinpointer/crew/PP = locate() in R - if(PP) - to_chat(usr, "This unit is already equipped with a pinpointer module.") - return FALSE + var/obj/item/pinpointer/crew/PP = locate() in R + if(PP) + to_chat(user, "This unit is already equipped with a pinpointer module.") + return FALSE - PP = new(R.module) - R.module.basic_modules += PP - R.module.add_module(PP, FALSE, TRUE) - return TRUE + PP = new(R.module) + R.module.basic_modules += PP + R.module.add_module(PP, FALSE, TRUE) + +/obj/item/borg/upgrade/pinpointer/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + var/obj/item/pinpointer/crew/PP = locate() in R.module + if (PP) + R.module.remove_module(PP, TRUE) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 6bf32210bd..b1afc7bd18 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -415,4 +415,4 @@ /datum/stack_recipe_list/New(title, recipes) src.title = title - src.recipes = recipes \ No newline at end of file + src.recipes = recipes diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 26c2c0b9db..a236ebeff6 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -18,32 +18,42 @@ righthand_file = 'icons/mob/inhands/equipment/backpack_righthand.dmi' w_class = WEIGHT_CLASS_BULKY slot_flags = SLOT_BACK //ERROOOOO - max_w_class = WEIGHT_CLASS_NORMAL - max_combined_w_class = 21 - storage_slots = 21 resistance_flags = NONE max_integrity = 300 +/obj/item/storage/backpack/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_combined_w_class = 21 + STR.max_w_class = WEIGHT_CLASS_NORMAL + STR.max_items = 21 + + /* * Backpack Types */ -/obj/item/storage/backpack/old - max_combined_w_class = 12 +/obj/item/storage/backpack/old/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_combined_w_class = 12 /obj/item/storage/backpack/holding name = "bag of holding" desc = "A backpack that opens into a localized pocket of Blue Space." icon_state = "holdingpack" item_state = "holdingpack" - max_w_class = WEIGHT_CLASS_GIGANTIC - max_combined_w_class = 35 resistance_flags = FIRE_PROOF flags_2 = NO_MAT_REDEMPTION_2 - var/pshoom = 'sound/items/pshoom.ogg' - var/alt_sound = 'sound/items/pshoom_2.ogg' armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 50) + component_type = /datum/component/storage/concrete/bluespace/bag_of_holding +/obj/item/storage/backpack/holding/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.allow_big_nesting = TRUE + STR.max_w_class = WEIGHT_CLASS_GIGANTIC + STR.max_combined_w_class = 35 /obj/item/storage/backpack/holding/suicide_act(mob/living/user) user.visible_message("[user] is jumping into [src]! It looks like [user.p_theyre()] trying to commit suicide.") @@ -54,57 +64,23 @@ qdel(user) return -/obj/item/storage/backpack/holding/dump_content_at(atom/dest_object, mob/user) - if(Adjacent(user)) - var/atom/dumping_location = dest_object.get_dumping_location() - if(get_dist(user, dumping_location) < 8) - if(dumping_location.storage_contents_dump_act(src, user)) - if(alt_sound && prob(1)) - playsound(src, alt_sound, 40, 1) - else - playsound(src, pshoom, 40, 1) - user.Beam(dumping_location,icon_state="rped_upgrade",time=5) - return 1 - to_chat(user, "The [src.name] buzzes.") - playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) - return 0 - -/obj/item/storage/backpack/holding/handle_item_insertion(obj/item/W, prevent_warning = 0, mob/living/user) - if((istype(W, /obj/item/storage/backpack/holding) || count_by_type(W.GetAllContents(), /obj/item/storage/backpack/holding))) - var/turf/loccheck = get_turf(src) - if(is_reebe(loccheck.z)) - user.visible_message("An unseen force knocks [user] to the ground!", "\"I think not!\"") - user.Knockdown(60) - return - var/safety = alert(user, "Doing this will have extremely dire consequences for the station and its crew. Be sure you know what you're doing.", "Put in [name]?", "Proceed", "Abort") - if(safety == "Abort" || !in_range(src, user) || !src || !W || user.incapacitated()) - return - investigate_log("has become a singularity. Caused by [user.key]", INVESTIGATE_SINGULO) - to_chat(user, "The Bluespace interfaces of the two devices catastrophically malfunction!") - qdel(W) - var/obj/singularity/singulo = new /obj/singularity (get_turf(src)) - singulo.energy = 300 //should make it a bit bigger~ - message_admins("[key_name_admin(user)] detonated a bag of holding") - log_game("[key_name(user)] detonated a bag of holding") - qdel(src) - singulo.process() - return - . = ..() - /obj/item/storage/backpack/holding/singularity_act(current_size) var/dist = max((current_size - 2),1) explosion(src.loc,(dist),(dist*2),(dist*4)) return - /obj/item/storage/backpack/santabag name = "Santa's Gift Bag" desc = "Space Santa uses this to deliver toys to all the nice children in space in Christmas! Wow, it's pretty big!" icon_state = "giftbag0" item_state = "giftbag" w_class = WEIGHT_CLASS_BULKY - max_w_class = WEIGHT_CLASS_NORMAL - max_combined_w_class = 60 + +/obj/item/storage/backpack/santabag/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_w_class = WEIGHT_CLASS_NORMAL + STR.max_combined_w_class = 60 /obj/item/storage/backpack/santabag/suicide_act(mob/user) user.visible_message("[user] places [src] over their head and pulls it tight! It looks like they aren't in the Christmas spirit...") @@ -151,7 +127,6 @@ desc = "It's a special backpack made exclusively for Nanotrasen officers." icon_state = "captainpack" item_state = "captainpack" - resistance_flags = NONE /obj/item/storage/backpack/industrial name = "industrial backpack" @@ -183,7 +158,6 @@ desc = "A specially designed backpack. It's fire resistant and smells vaguely of plasma." icon_state = "toxpack" item_state = "toxpack" - resistance_flags = NONE /obj/item/storage/backpack/virology name = "virology backpack" @@ -191,7 +165,6 @@ icon_state = "viropack" item_state = "viropack" - /* * Satchel Types */ @@ -206,7 +179,6 @@ name = "leather satchel" desc = "It's a very fancy satchel made with fine leather." icon_state = "satchel" - resistance_flags = NONE /obj/item/storage/backpack/satchel/leather/withwallet/PopulateContents() new /obj/item/storage/wallet/random(src) @@ -216,7 +188,6 @@ desc = "A tough satchel with extra pockets." icon_state = "satchel-eng" item_state = "engiepack" - resistance_flags = NONE /obj/item/storage/backpack/satchel/med name = "medical satchel" @@ -247,7 +218,6 @@ desc = "Useful for holding research materials." icon_state = "satchel-tox" item_state = "satchel-tox" - resistance_flags = NONE /obj/item/storage/backpack/satchel/hyd name = "botanist satchel" @@ -272,18 +242,26 @@ desc = "An exclusive satchel for Nanotrasen officers." icon_state = "satchel-cap" item_state = "captainpack" - resistance_flags = NONE /obj/item/storage/backpack/satchel/flat name = "smuggler's satchel" desc = "A very slim satchel that can easily fit into tight spaces." icon_state = "satchel-flat" w_class = WEIGHT_CLASS_NORMAL //Can fit in backpacks itself. - max_combined_w_class = 15 level = 1 - cant_hold = list(/obj/item/storage/backpack/satchel/flat) //muh recursive backpacks + component_type = /datum/component/storage/concrete/secret_satchel -/obj/item/storage/backpack/satchel/flat/hide(var/intact) +/obj/item/storage/backpack/stachel/flat/Initialize() + . = ..() + SSpersistence.new_secret_satchels += src + +/obj/item/storage/backpack/satchel/flat/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_combined_w_class = 15 + STR.cant_hold = typecacheof(list(/obj/item/storage/backpack/satchel/flat)) //muh recursive backpacks + +/obj/item/storage/backpack/satchel/flat/hide(intact) if(intact) invisibility = INVISIBILITY_MAXIMUM anchored = TRUE //otherwise you can start pulling, cover it, and drag around an invisible backpack. @@ -293,10 +271,6 @@ anchored = FALSE icon_state = initial(icon_state) -/obj/item/storage/backpack/satchel/flat/Initialize(mapload) - . = ..() - SSpersistence.new_secret_satchels += src - /obj/item/storage/backpack/satchel/flat/PopulateContents() new /obj/item/stack/tile/plasteel(src) new /obj/item/crowbar(src) @@ -308,7 +282,7 @@ /obj/item/storage/backpack/satchel/flat/secret var/list/reward_one_of_these = list() //Intended for map editing var/list/reward_all_of_these = list() //use paths! - var/revealed = 0 + var/revealed = FALSE /obj/item/storage/backpack/satchel/flat/secret/Initialize() . = ..() @@ -324,13 +298,7 @@ new reward(src) for(var/R in reward_all_of_these) new R(src) - revealed = 1 - -/obj/item/storage/backpack/satchel/flat/can_be_inserted(obj/item/W, stop_messages = 0, mob/user) - if(SSpersistence.spawned_objects[W]) - to_chat(user, "[W] is unstable after its journey through space and time, it wouldn't survive another trip.") - return FALSE - return ..() + revealed = TRUE /obj/item/storage/backpack/duffelbag name = "duffel bag" @@ -338,14 +306,17 @@ icon_state = "duffel" item_state = "duffel" slowdown = 1 - max_combined_w_class = 30 + +/obj/item/storage/backpack/duffelbag/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_combined_w_class = 30 /obj/item/storage/backpack/duffelbag/captain name = "captain's duffel bag" desc = "A large duffel bag for holding extra captainly goods." icon_state = "duffel-captain" item_state = "duffel-captain" - resistance_flags = NONE /obj/item/storage/backpack/duffelbag/med name = "medical duffel bag" @@ -393,7 +364,6 @@ desc = "A large duffel bag for holding extra tools and supplies." icon_state = "duffel-eng" item_state = "duffel-eng" - resistance_flags = NONE /obj/item/storage/backpack/duffelbag/drone name = "drone duffel bag" @@ -426,9 +396,13 @@ desc = "A large duffel bag for holding extra tactical supplies." icon_state = "duffel-syndie" item_state = "duffel-syndieammo" - silent = 1 slowdown = 0 +/obj/item/storage/backpack/duffelbag/syndie/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.silent = TRUE + /obj/item/storage/backpack/duffelbag/syndie/hitman desc = "A large duffel bag for holding extra things. There is a Nanotrasen logo on the back." icon_state = "duffel-syndieammo" @@ -561,9 +535,11 @@ new /obj/item/grenade/syndieminibomb(src) // For ClownOps. -/obj/item/storage/backpack/duffelbag/clown/syndie +/obj/item/storage/backpack/duffelbag/clown/syndie/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) slowdown = 0 - silent = TRUE + STR.silent = TRUE /obj/item/storage/backpack/duffelbag/clown/syndie/PopulateContents() new /obj/item/device/pda/clown(src) diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index c8f6a9ff13..5c6a354356 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -17,12 +17,16 @@ // Generic non-item /obj/item/storage/bag - allow_quick_gather = 1 - allow_quick_empty = 1 - display_contents_with_number = 1 // should work fine now - use_to_pickup = 1 slot_flags = SLOT_BELT +/obj/item/storage/bag/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.allow_quick_gather = TRUE + STR.allow_quick_empty = TRUE + STR.display_numerical_stacking = TRUE + STR.click_gather = TRUE + // ----------------------------- // Trash bag // ----------------------------- @@ -36,11 +40,14 @@ righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi' w_class = WEIGHT_CLASS_BULKY - max_w_class = WEIGHT_CLASS_SMALL - max_combined_w_class = 30 - storage_slots = 30 - can_hold = list() // any - cant_hold = list(/obj/item/disk/nuclear) + +/obj/item/storage/bag/trash/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_w_class = WEIGHT_CLASS_SMALL + STR.max_combined_w_class = 30 + STR.max_items = 30 + STR.cant_hold = typecacheof(list(/obj/item/disk/nuclear)) /obj/item/storage/bag/trash/suicide_act(mob/user) user.visible_message("[user] puts [src] over [user.p_their()] head and starts chomping at the insides! Disgusting!") @@ -70,10 +77,14 @@ name = "trash bag of holding" desc = "The latest and greatest in custodial convenience, a trashbag that is capable of holding vast quantities of garbage." icon_state = "bluetrashbag" - max_combined_w_class = 60 - storage_slots = 60 flags_2 = NO_MAT_REDEMPTION_2 +/obj/item/storage/bag/trash/bluespace/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_combined_w_class = 60 + STR.max_items = 60 + // ----------------------------- // Mining Satchel // ----------------------------- @@ -85,13 +96,18 @@ icon_state = "satchel" slot_flags = SLOT_BELT | SLOT_POCKET w_class = WEIGHT_CLASS_NORMAL - storage_slots = 8 - max_combined_w_class = 16 //Doesn't matter what this is, so long as it's more or equal to storage_slots * ore.w_class - max_w_class = WEIGHT_CLASS_HUGE - can_hold = list(/obj/item/stack/ore) + component_type = /datum/component/storage/concrete/stack var/spam_protection = FALSE //If this is TRUE, the holder won't receive any messages when they fail to pick up ore through crossing it var/datum/component/mobhook +/obj/item/storage/bag/ore/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage/concrete/stack) + STR.allow_quick_empty = TRUE + STR.can_hold = typecacheof(list(/obj/item/stack/ore)) + STR.max_w_class = WEIGHT_CLASS_HUGE + STR.max_combined_stack_amount = 50 + /obj/item/storage/bag/ore/equipped(mob/user) . = ..() if (mobhook && mobhook.parent != user) @@ -112,20 +128,21 @@ return if (istype(user.pulling, /obj/structure/ore_box)) box = user.pulling - for(var/A in tile) - if (!is_type_in_typecache(A, can_hold)) - continue - if (box) - user.transferItemToLoc(A, box) - show_message = TRUE - else if(can_be_inserted(A, TRUE, user)) - handle_item_insertion(A, TRUE, user) - show_message = TRUE - else - if(!spam_protection) - to_chat(user, "Your [name] is full and can't hold any more!") - spam_protection = TRUE + GET_COMPONENT(STR, /datum/component/storage) + if(STR) + for(var/A in tile) + if (!is_type_in_typecache(A, STR.can_hold)) continue + if (box) + user.transferItemToLoc(A, box) + show_message = TRUE + else if(SendSignal(COMSIG_TRY_STORAGE_INSERT, A, user, TRUE)) + show_message = TRUE + else + if(!spam_protection) + to_chat(user, "Your [name] is full and can't hold any more!") + spam_protection = TRUE + continue if(show_message) playsound(user, "rustle", 50, TRUE) if (box) @@ -142,10 +159,15 @@ /obj/item/storage/bag/ore/holding //miners, your messiah has arrived name = "mining satchel of holding" desc = "A revolution in convenience, this satchel allows for huge amounts of ore storage. It's been outfitted with anti-malfunction safety measures." - storage_slots = INFINITY - max_combined_w_class = INFINITY icon_state = "satchel_bspace" +/obj/item/storage/bag/ore/holding/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage/concrete/stack) + STR.max_items = INFINITY + STR.max_combined_w_class = INFINITY + STR.max_combined_stack_amount = INFINITY + // ----------------------------- // Plant bag // ----------------------------- @@ -154,13 +176,17 @@ name = "plant bag" icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "plantbag" - storage_slots = 100; //the number of plant pieces it can carry. - max_combined_w_class = 100 //Doesn't matter what this is, so long as it's more or equal to storage_slots * plants.w_class - max_w_class = WEIGHT_CLASS_NORMAL w_class = WEIGHT_CLASS_TINY - can_hold = list(/obj/item/reagent_containers/food/snacks/grown, /obj/item/seeds, /obj/item/grown, /obj/item/reagent_containers/honeycomb) resistance_flags = FLAMMABLE +/obj/item/storage/bag/plants/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_w_class = WEIGHT_CLASS_NORMAL + STR.max_combined_w_class = 100 + STR.max_items = 100 + STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/grown, /obj/item/seeds, /obj/item/grown, /obj/item/reagent_containers/honeycomb)) + //////// /obj/item/storage/bag/plants/portaseeder @@ -176,8 +202,6 @@ return for(var/obj/item/O in contents) seedify(O, 1) - close_all() - // ----------------------------- // Sheet Snatcher @@ -193,123 +217,15 @@ var/capacity = 300; //the number of sheets it can carry. w_class = WEIGHT_CLASS_NORMAL + component_type = /datum/component/storage/concrete/stack - allow_quick_empty = 1 // this function is superceded - -/obj/item/storage/bag/sheetsnatcher/can_be_inserted(obj/item/W, stop_messages = 0) - if(!istype(W, /obj/item/stack/sheet) || istype(W, /obj/item/stack/sheet/mineral/sandstone) || istype(W, /obj/item/stack/sheet/mineral/wood)) - if(!stop_messages) - to_chat(usr, "The snatcher does not accept [W].") - return 0 //I don't care, but the existing code rejects them for not being "sheets" *shrug* -Sayu - var/current = 0 - for(var/obj/item/stack/sheet/S in contents) - current += S.amount - if(capacity == current)//If it's full, you're done - if(!stop_messages) - to_chat(usr, "The snatcher is full.") - return 0 - return 1 - - -// Modified handle_item_insertion. Would prefer not to, but... -/obj/item/storage/bag/sheetsnatcher/handle_item_insertion(obj/item/W, prevent_warning = 0) - var/obj/item/stack/sheet/S = W - if(!istype(S)) - return 0 - - var/amount - var/inserted = 0 - var/current = 0 - for(var/obj/item/stack/sheet/S2 in contents) - current += S2.amount - if(capacity < current + S.amount)//If the stack will fill it up - amount = capacity - current - else - amount = S.amount - - for(var/obj/item/stack/sheet/sheet in contents) - if(S.type == sheet.type) // we are violating the amount limitation because these are not sane objects - sheet.amount += amount // they should only be removed through procs in this file, which split them up. - S.amount -= amount - inserted = 1 - break - - if(!inserted || !S.amount) - usr.dropItemToGround(S) - if (usr.client && usr.s_active != src) - usr.client.screen -= S - S.dropped(usr) - if(!S.amount) - qdel(S) - else - if(S.pulledby) - S.pulledby.stop_pulling() - S.forceMove(src) - - orient2hud(usr) - if(usr.s_active) - usr.s_active.show_to(usr) - update_icon() - return 1 - - -// Sets up numbered display to show the stack size of each stored mineral -// NOTE: numbered display is turned off currently because it's broken -/obj/item/storage/bag/sheetsnatcher/orient2hud(mob/user) - var/adjusted_contents = contents.len - - //Numbered contents display - var/list/datum/numbered_display/numbered_contents - if(display_contents_with_number) - numbered_contents = list() - adjusted_contents = 0 - for(var/obj/item/stack/sheet/I in contents) - adjusted_contents++ - var/datum/numbered_display/D = new/datum/numbered_display(I) - D.number = I.amount - numbered_contents.Add( D ) - - var/row_num = 0 - var/col_count = min(7,storage_slots) -1 - if (adjusted_contents > 7) - row_num = round((adjusted_contents-1) / 7) // 7 is the maximum allowed width. - standard_orient_objs(row_num, col_count, numbered_contents) - return - - -// Modified quick_empty verb drops appropriate sized stacks -/obj/item/storage/bag/sheetsnatcher/quick_empty() - var/location = get_turf(src) - for(var/obj/item/stack/sheet/S in contents) - while(S.amount) - var/obj/item/stack/sheet/N = new S.type(location) - var/stacksize = min(S.amount,N.max_amount) - N.amount = stacksize - S.amount -= stacksize - if(!S.amount) - qdel(S)// todo: there's probably something missing here - orient2hud(usr) - if(usr.s_active) - usr.s_active.show_to(usr) - update_icon() - -// Instead of removing -/obj/item/storage/bag/sheetsnatcher/remove_from_storage(obj/item/W, atom/new_location) - var/obj/item/stack/sheet/S = W - if(!istype(S)) - return 0 - - //I would prefer to drop a new stack, but the item/attack_hand code - // that calls this can't recieve a different object than you clicked on. - //Therefore, make a new stack internally that has the remainder. - // -Sayu - - if(S.amount > S.max_amount) - var/obj/item/stack/sheet/temp = new S.type(src) - temp.amount = S.amount - S.max_amount - S.amount = S.max_amount - - return ..(S,new_location) +/obj/item/storage/bag/sheetsnatcher/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage/concrete/stack) + STR.allow_quick_empty = TRUE + STR.can_hold = typecacheof(list(/obj/item/stack/sheet)) + STR.cant_hold = typecacheof(list(/obj/item/stack/sheet/mineral/sandstone, /obj/item/stack/sheet/mineral/wood)) + STR.max_combined_stack_amount = 300 // ----------------------------- // Sheet Snatcher (Cyborg) @@ -320,6 +236,10 @@ desc = "" capacity = 500//Borgs get more because >specialization +/obj/item/storage/bag/sheetsnatcher/borg/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage/concrete/stack) + STR.max_combined_stack_amount = 500 // ----------------------------- // Book bag @@ -330,14 +250,18 @@ desc = "A bag for books." icon = 'icons/obj/library.dmi' icon_state = "bookbag" - display_contents_with_number = 0 //This would look really stupid otherwise - storage_slots = 7 - max_combined_w_class = 21 - max_w_class = WEIGHT_CLASS_NORMAL w_class = WEIGHT_CLASS_BULKY //Bigger than a book because physics - can_hold = list(/obj/item/book, /obj/item/storage/book, /obj/item/spellbook) resistance_flags = FLAMMABLE +/obj/item/storage/bag/books/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_w_class = WEIGHT_CLASS_NORMAL + STR.max_combined_w_class = 21 + STR.max_items = 7 + STR.display_numerical_stacking = FALSE + STR.can_hold = typecacheof(list(/obj/item/book, /obj/item/storage/book, /obj/item/spellbook)) + /* * Trays - Agouri */ @@ -353,14 +277,18 @@ w_class = WEIGHT_CLASS_BULKY flags_1 = CONDUCT_1 materials = list(MAT_METAL=3000) - preposition = "on" + +/obj/item/storage/bag/tray/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.insert_preposition = "on" /obj/item/storage/bag/tray/attack(mob/living/M, mob/living/user) - ..() + . = ..() // Drop all the things. All of them. var/list/obj/item/oldContents = contents.Copy() - quick_empty() - + GET_COMPONENT(STR, /datum/component/storage) + STR.quick_empty() // Make each item scatter a bit for(var/obj/item/I in oldContents) spawn() @@ -377,20 +305,20 @@ if(ishuman(M) || ismonkey(M)) if(prob(10)) M.Knockdown(40) + update_icon() -/obj/item/storage/bag/tray/proc/rebuild_overlays() +/obj/item/storage/bag/tray/update_icon() cut_overlays() for(var/obj/item/I in contents) add_overlay(mutable_appearance(I.icon, I.icon_state)) -/obj/item/storage/bag/tray/remove_from_storage(obj/item/W as obj, atom/new_location) - ..() - rebuild_overlays() - -/obj/item/storage/bag/tray/handle_item_insertion(obj/item/I, prevent_warning = 0) - add_overlay(mutable_appearance(I.icon, I.icon_state)) +/obj/item/storage/bag/tray/Entered() . = ..() + update_icon() +/obj/item/storage/bag/tray/Exited() + . = ..() + update_icon() /* * Chemistry bag @@ -401,12 +329,17 @@ icon = 'icons/obj/chemical.dmi' icon_state = "bag" desc = "A bag for storing pills, patches, and bottles." - storage_slots = 50 - max_combined_w_class = 200 w_class = WEIGHT_CLASS_TINY - can_hold = list(/obj/item/reagent_containers/pill, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/glass/bottle) resistance_flags = FLAMMABLE +/obj/item/storage/bag/chemistry/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_combined_w_class = 200 + STR.max_items = 50 + STR.insert_preposition = "in" + STR.can_hold = typecacheof(list(/obj/item/reagent_containers/pill, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/glass/bottle)) + /* * Biowaste bag (mostly for xenobiologists) */ @@ -416,8 +349,13 @@ icon = 'icons/obj/chemical.dmi' icon_state = "biobag" desc = "A bag for the safe transportation and disposal of biowaste and other biological materials." - storage_slots = 25 - max_combined_w_class = 200 w_class = WEIGHT_CLASS_TINY - can_hold = list(/obj/item/slime_extract, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/blood, /obj/item/reagent_containers/hypospray/medipen, /obj/item/reagent_containers/food/snacks/deadmouse, /obj/item/reagent_containers/food/snacks/monkeycube) resistance_flags = FLAMMABLE + +/obj/item/storage/bag/bio/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_combined_w_class = 200 + STR.max_items = 25 + STR.insert_preposition = "in" + STR.can_hold = typecacheof(list(/obj/item/slime_extract, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/blood, /obj/item/reagent_containers/hypospray/medipen, /obj/item/reagent_containers/food/snacks/deadmouse, /obj/item/reagent_containers/food/snacks/monkeycube)) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index d0b3480f04..a4cd9cc739 100755 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -32,7 +32,12 @@ desc = "Holds tools." icon_state = "utilitybelt" item_state = "utility" - can_hold = list( + content_overlays = TRUE + +/obj/item/storage/belt/ulility/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.can_hold = typecacheof(list( /obj/item/crowbar, /obj/item/screwdriver, /obj/item/weldingtool, @@ -49,8 +54,7 @@ /obj/item/clothing/gloves, /obj/item/holosign_creator, /obj/item/device/assembly/signaler - ) - content_overlays = TRUE + )) /obj/item/storage/belt/utility/chief name = "\improper Chief Engineer's toolbelt" //"the Chief Engineer's toolbelt", because "Chief Engineer's toolbelt" is not a proper noun @@ -68,7 +72,6 @@ new /obj/item/device/analyzer(src) //much roomier now that we've managed to remove two tools - /obj/item/storage/belt/utility/full/PopulateContents() new /obj/item/screwdriver(src) new /obj/item/wrench(src) @@ -106,16 +109,17 @@ new /obj/item/device/multitool(src) new /obj/item/stack/cable_coil(src, 30, "yellow") - - - /obj/item/storage/belt/medical name = "medical belt" desc = "Can hold various medical equipment." icon_state = "medicalbelt" item_state = "medical" - max_w_class = WEIGHT_CLASS_BULKY - can_hold = list( + +/obj/item/storage/belt/medical/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_w_class = WEIGHT_CLASS_BULKY + STR.can_hold = typecacheof(list( /obj/item/device/healthanalyzer, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, @@ -156,23 +160,26 @@ /obj/item/storage/bag/bio, /obj/item/reagent_containers/blood, /obj/item/tank/internals/emergency_oxygen, - /obj/item/pinpointer/crew, /obj/item/gun/syringe/syndicate, /obj/item/implantcase, /obj/item/implant, /obj/item/implanter, - /obj/item/hypospray - ) - // CIT CHANGE added hypospray mk IIs to belt /obj/item/hypospray + /obj/item/pinpointer/crew + )) /obj/item/storage/belt/security name = "security belt" desc = "Can hold security gear like handcuffs and flashes." icon_state = "securitybelt" item_state = "security"//Could likely use a better one. - storage_slots = 5 - max_w_class = WEIGHT_CLASS_NORMAL //Because the baton wouldn't fit otherwise. - Neerti - can_hold = list( + content_overlays = TRUE + +/obj/item/storage/belt/security/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 5 + STR.max_w_class = WEIGHT_CLASS_NORMAL + STR.can_hold = typecacheof(list( /obj/item/melee/baton, /obj/item/melee/classic_baton, /obj/item/grenade, @@ -188,10 +195,8 @@ /obj/item/melee/classic_baton/telescopic, /obj/item/device/radio, /obj/item/clothing/gloves, - /obj/item/restraints/legcuffs/bola, - /obj/item/holosign_creator/security - ) - content_overlays = TRUE + /obj/item/restraints/legcuffs/bola + )) /obj/item/storage/belt/security/full/PopulateContents() new /obj/item/reagent_containers/spray/pepper(src) @@ -201,17 +206,20 @@ new /obj/item/melee/baton/loaded(src) update_icon() - /obj/item/storage/belt/mining name = "explorer's webbing" desc = "A versatile chest rig, cherished by miners and hunters alike." icon_state = "explorer1" item_state = "explorer1" - storage_slots = 6 w_class = WEIGHT_CLASS_BULKY - max_w_class = WEIGHT_CLASS_BULKY //Pickaxes are big. - max_combined_w_class = 20 //Not an issue with this whitelist, probably. - can_hold = list( + +/obj/item/storage/belt/mining/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 6 + STR.max_w_class = WEIGHT_CLASS_BULKY + STR.max_combined_w_class = 20 + STR.can_hold = typecacheof(list( /obj/item/crowbar, /obj/item/screwdriver, /obj/item/weldingtool, @@ -248,7 +256,7 @@ /obj/item/device/wormhole_jaunter, /obj/item/storage/bag/plants, /obj/item/stack/marker_beacon - ) + )) /obj/item/storage/belt/mining/vendor @@ -261,19 +269,27 @@ /obj/item/storage/belt/mining/primitive name = "hunter's belt" desc = "A versatile belt, woven from sinew." - storage_slots = 5 icon_state = "ebelt" item_state = "ebelt" +/obj/item/storage/belt/mining/primitive/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 5 + /obj/item/storage/belt/soulstone name = "soul stone belt" desc = "Designed for ease of access to the shards during a fight, as to not let a single enemy spirit slip away." icon_state = "soulstonebelt" item_state = "soulstonebelt" - storage_slots = 6 - can_hold = list( + +/obj/item/storage/belt/soulstone/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 6 + STR.can_hold = typecacheof(list( /obj/item/device/soulstone - ) + )) /obj/item/storage/belt/soulstone/full/PopulateContents() for(var/i in 1 to 6) @@ -289,8 +305,12 @@ icon_state = "championbelt" item_state = "champion" materials = list(MAT_GOLD=400) - storage_slots = 1 - can_hold = list( + +/obj/item/storage/belt/champion/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 1 + STR.can_hold = list( /obj/item/clothing/mask/luchador ) @@ -299,7 +319,11 @@ desc = "A set of tactical webbing worn by Syndicate boarding parties." icon_state = "militarywebbing" item_state = "militarywebbing" - max_w_class = WEIGHT_CLASS_SMALL + +/obj/item/storage/belt/military/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_w_class = WEIGHT_CLASS_SMALL /obj/item/storage/belt/military/abductor name = "agent belt" @@ -317,7 +341,6 @@ new /obj/item/device/multitool/abductor(src) new /obj/item/stack/cable_coil(src,30,"white") - /obj/item/storage/belt/military/army name = "army belt" desc = "A belt used by military forces." @@ -329,25 +352,34 @@ desc = "A tactical assault belt." icon_state = "assaultbelt" item_state = "security" - storage_slots = 6 + +/obj/item/storage/belt/military/assault/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 6 /obj/item/storage/belt/grenade name = "grenadier belt" desc = "A belt for holding grenades." icon_state = "grenadebeltnew" item_state = "security" - max_w_class = WEIGHT_CLASS_BULKY - display_contents_with_number = TRUE - storage_slots = 30 - max_combined_w_class = 60 //needs to be this high - can_hold = list( + +/obj/item/storage/belt/grenade/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 30 + STR.display_numerical_stacking = TRUE + STR.max_combined_w_class = 60 + STR.max_w_class = WEIGHT_CLASS_BULKY + STR.can_hold = typecacheof(list( /obj/item/grenade, /obj/item/screwdriver, /obj/item/lighter, /obj/item/device/multitool, /obj/item/reagent_containers/food/drinks/bottle/molotov, /obj/item/grenade/plastic/c4, - ) + )) + /obj/item/storage/belt/grenade/full/PopulateContents() new /obj/item/grenade/flashbang(src) new /obj/item/grenade/smokebomb(src) @@ -383,10 +415,14 @@ desc = "A belt designed to hold various rods of power. A veritable fanny pack of exotic magic." icon_state = "soulstonebelt" item_state = "soulstonebelt" - storage_slots = 6 - can_hold = list( + +/obj/item/storage/belt/wands/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 6 + STR.can_hold = typecacheof(list( /obj/item/gun/magic/wand - ) + )) /obj/item/storage/belt/wands/full/PopulateContents() new /obj/item/gun/magic/wand/death(src) @@ -405,9 +441,13 @@ desc = "A belt used to hold most janitorial supplies." icon_state = "janibelt" item_state = "janibelt" - storage_slots = 6 - max_w_class = WEIGHT_CLASS_BULKY // Set to this so the light replacer can fit. - can_hold = list( + +/obj/item/storage/belt/janitor/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 6 + STR.max_w_class = WEIGHT_CLASS_BULKY // Set to this so the light replacer can fit. + STR.can_hold = typecacheof(list( /obj/item/grenade/chem_grenade, /obj/item/device/lightreplacer, /obj/item/device/flashlight, @@ -418,32 +458,40 @@ /obj/item/clothing/gloves, /obj/item/melee/flyswatter, /obj/item/device/assembly/mousetrap - ) + )) /obj/item/storage/belt/bandolier name = "bandolier" desc = "A bandolier for holding shotgun ammunition." icon_state = "bandolier" item_state = "bandolier" - storage_slots = 18 - display_contents_with_number = TRUE - can_hold = list( + +/obj/item/storage/belt/bandolier/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 18 + STR.display_numerical_stacking = TRUE + STR.can_hold = typecacheof(list( /obj/item/ammo_casing/shotgun - ) + )) /obj/item/storage/belt/holster name = "shoulder holster" desc = "A holster to carry a handgun and ammo. WARNING: Badasses only." icon_state = "holster" item_state = "holster" - storage_slots = 3 - max_w_class = WEIGHT_CLASS_NORMAL - can_hold = list( + alternate_worn_layer = UNDER_SUIT_LAYER + +/obj/item/storage/belt/holster/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 3 + STR.max_w_class = WEIGHT_CLASS_NORMAL + STR.can_hold = typecacheof(list( /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/ammo_box, - ) - alternate_worn_layer = UNDER_SUIT_LAYER + )) /obj/item/storage/belt/holster/full/PopulateContents() new /obj/item/gun/ballistic/revolver/detective(src) @@ -455,8 +503,12 @@ desc = "A dorky fannypack for keeping small items in." icon_state = "fannypack_leather" item_state = "fannypack_leather" - storage_slots = 3 - max_w_class = WEIGHT_CLASS_SMALL + +/obj/item/storage/belt/fannypack/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 3 + STR.max_w_class = WEIGHT_CLASS_SMALL /obj/item/storage/belt/fannypack/black name = "black fannypack" @@ -513,26 +565,29 @@ desc = "An ornate sheath designed to hold an officer's blade." icon_state = "sheath" item_state = "sheath" - storage_slots = 1 - rustle_jimmies = FALSE w_class = WEIGHT_CLASS_BULKY - max_w_class = WEIGHT_CLASS_BULKY - can_hold = list( + +/obj/item/storage/belt/sabre/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 1 + STR.rustle_sound = FALSE + STR.max_w_class = WEIGHT_CLASS_BULKY + STR.can_hold = typecacheof(list( /obj/item/melee/sabre - ) + )) /obj/item/storage/belt/sabre/examine(mob/user) ..() - if(contents.len) + if(length(contents)) to_chat(user, "Alt-click it to quickly draw the blade.") /obj/item/storage/belt/sabre/AltClick(mob/user) if(!iscarbon(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) return - if(contents.len) + if(length(contents)) var/obj/item/I = contents[1] - user.visible_message("[user] takes [I] out of [src].", "You take [I] out of [src].",\ - ) + user.visible_message("[user] takes [I] out of [src].", "You take [I] out of [src].") user.put_in_hands(I) update_icon() else @@ -549,7 +604,6 @@ L.regenerate_icons() ..() - /obj/item/storage/belt/sabre/PopulateContents() new /obj/item/melee/sabre(src) update_icon() diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index 10b28e12f6..41f2a4bf47 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -5,11 +5,15 @@ icon_state ="book" throw_speed = 2 throw_range = 5 - storage_slots = 1 w_class = WEIGHT_CLASS_NORMAL resistance_flags = FLAMMABLE var/title = "book" +/obj/item/storage/book/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 1 + /obj/item/storage/book/attack_self(mob/user) to_chat(user, "The pages of [title] have been cut out!") @@ -205,8 +209,6 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", attack_verb = list("attacked", "burned", "blessed", "damned", "scorched") var/uses = 1 - - /obj/item/storage/book/bible/syndicate/attack_self(mob/living/carbon/human/H) if (uses) H.mind.isholy = TRUE diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 90251832bf..d244e512c3 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -64,9 +64,6 @@ if(!ispath(foldable)) return - //Close any open UI windows first - close_all() - to_chat(user, "You fold [src] flat.") var/obj/item/I = new foldable qdel(src) @@ -360,7 +357,11 @@ desc = "Instructions: Heat in microwave. Product will cool if not eaten within seven minutes." icon_state = "donkpocketbox" illustration=null - can_hold = list(/obj/item/reagent_containers/food/snacks/donkpocket) + +/obj/item/storage/box/donkpockets/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/donkpocket)) /obj/item/storage/box/donkpockets/PopulateContents() for(var/i in 1 to 6) @@ -370,10 +371,14 @@ name = "monkey cube box" desc = "Drymate brand monkey cubes. Just add water!" icon_state = "monkeycubebox" - storage_slots = 7 - can_hold = list(/obj/item/reagent_containers/food/snacks/monkeycube) illustration = null +/obj/item/storage/box/monkeycubes/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 7 + STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/monkeycube)) + /obj/item/storage/box/monkeycubes/PopulateContents() for(var/i in 1 to 5) new /obj/item/reagent_containers/food/snacks/monkeycube(src) @@ -522,12 +527,15 @@ desc = "Eight wrappers of fun! Ages 8 and up. Not suitable for children." icon = 'icons/obj/toy.dmi' icon_state = "spbox" - storage_slots = 8 - can_hold = list(/obj/item/toy/snappop) + +/obj/item/storage/box/snappops/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.can_hold = typecacheof(list(/obj/item/toy/snappop)) + STR.max_items = 8 /obj/item/storage/box/snappops/PopulateContents() - for(var/i in 1 to storage_slots) - new /obj/item/toy/snappop(src) + SendSignal(COMSIG_TRY_STORAGE_FILL_TYPE, /obj/item/toy/snappop) /obj/item/storage/box/matches name = "matchbox" @@ -535,14 +543,17 @@ icon = 'icons/obj/cigarettes.dmi' icon_state = "matchbox" item_state = "zippo" - storage_slots = 10 w_class = WEIGHT_CLASS_TINY slot_flags = SLOT_BELT - can_hold = list(/obj/item/match) + +/obj/item/storage/box/matches/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 10 + STR.can_hold = typecacheof(list(/obj/item/match)) /obj/item/storage/box/matches/PopulateContents() - for(var/i in 1 to storage_slots) - new /obj/item/match(src) + SendSignal(COMSIG_TRY_STORAGE_FILL_TYPE, /obj/item/match) /obj/item/storage/box/matches/attackby(obj/item/match/W as obj, mob/user as mob, params) if(istype(W, /obj/item/match)) @@ -557,10 +568,14 @@ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' foldable = /obj/item/stack/sheet/cardboard //BubbleWrap - storage_slots=21 - can_hold = list(/obj/item/light/tube, /obj/item/light/bulb) - max_combined_w_class = 21 - use_to_pickup = 1 // for picking up broken bulbs, not that most people will try + +/obj/item/storage/box/lights/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 21 + STR.can_hold = typecacheof(list(/obj/item/light/tube, /obj/item/light/bulb)) + STR.max_combined_w_class = 21 + STR.click_gather = TRUE /obj/item/storage/box/lights/bulbs/PopulateContents() for(var/i in 1 to 21) diff --git a/code/game/objects/items/storage/briefcase.dm b/code/game/objects/items/storage/briefcase.dm index 0703eba47a..5fdf94c1f3 100644 --- a/code/game/objects/items/storage/briefcase.dm +++ b/code/game/objects/items/storage/briefcase.dm @@ -10,13 +10,17 @@ throw_speed = 2 throw_range = 4 w_class = WEIGHT_CLASS_BULKY - max_w_class = WEIGHT_CLASS_NORMAL - max_combined_w_class = 21 attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") resistance_flags = FLAMMABLE max_integrity = 150 var/folder_path = /obj/item/folder //this is the path of the folder that gets spawned in New() +/obj/item/storage/briefcase/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_w_class = WEIGHT_CLASS_NORMAL + STR.max_combined_w_class = 21 + /obj/item/storage/briefcase/PopulateContents() new /obj/item/pen(src) var/obj/item/folder/folder = new folder_path(src) @@ -31,20 +35,8 @@ ..() /obj/item/storage/briefcase/sniperbundle - name = "briefcase" desc = "It's label reads genuine hardened Captain leather, but suspiciously has no other tags or branding. Smells like L'Air du Temps." - icon_state = "briefcase" - flags_1 = CONDUCT_1 force = 10 - hitsound = "swing_hit" - throw_speed = 2 - throw_range = 4 - w_class = WEIGHT_CLASS_BULKY - max_w_class = WEIGHT_CLASS_NORMAL - max_combined_w_class = 21 - attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") - resistance_flags = FLAMMABLE - max_integrity = 150 /obj/item/storage/briefcase/sniperbundle/PopulateContents() ..() // in case you need any paperwork done after your rampage diff --git a/code/game/objects/items/storage/dakis.dm b/code/game/objects/items/storage/dakis.dm index 0b7308deb6..08748bf37e 100644 --- a/code/game/objects/items/storage/dakis.dm +++ b/code/game/objects/items/storage/dakis.dm @@ -3,22 +3,26 @@ ////////////////////////////////// /obj/item/storage/daki - name = "dakimakura" + name = "dakimakura" desc = "A large pillow depicting a girl in a compromising position. Featuring as many dimensions as you." icon = 'icons/obj/daki.dmi' icon_state = "daki_base" slot_flags = SLOT_BACK - storage_slots = 3 - w_class = 4 - max_w_class = 3 - max_combined_w_class = 21 var/cooldowntime = 20 var/static/list/dakimakura_options = list("Callie","Casca","Chaika","Elisabeth","Foxy Grandpa","Haruko","Holo","Ian","Jolyne","Kurisu","Marie","Mugi","Nar'Sie","Patchouli","Plutia","Rei","Reisen","Naga","Squid","Squigly","Tomoko","Toriel","Umaru","Yaranaika","Yoko") //Kurisu is the ideal girl." - Me, Logos. +/obj/item/storage/daki/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_w_class = WEIGHT_CLASS_SMALL + STR.max_combined_w_class = 21 + STR.max_items = 3 + STR.cant_hold = typecacheof(list(/obj/item/disk/nuclear)) + /obj/item/storage/daki/attack_self(mob/living/user) var/body_choice var/custom_name - + if(icon_state == "daki_base") body_choice = input("Pick a body.") in dakimakura_options icon_state = "daki_[body_choice]" diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index b574855f10..d669431be5 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -25,7 +25,8 @@ var/fancy_open = FALSE /obj/item/storage/fancy/PopulateContents() - for(var/i = 1 to storage_slots) + GET_COMPONENT(STR, /datum/component/storage) + for(var/i = 1 to STR.max_items) new spawn_type(src) /obj/item/storage/fancy/update_icon() @@ -37,7 +38,7 @@ /obj/item/storage/fancy/examine(mob/user) ..() if(fancy_open) - if(contents.len == 1) + if(length(contents) == 1) to_chat(user, "There is one [icon_type] left.") else to_chat(user, "There are [contents.len <= 0 ? "no" : "[contents.len]"] [icon_type]s left.") @@ -45,20 +46,17 @@ /obj/item/storage/fancy/attack_self(mob/user) fancy_open = !fancy_open update_icon() - -/obj/item/storage/fancy/dump_content_at(atom/dest_object, mob/user) . = ..() - if(.) - fancy_open = TRUE - update_icon() -/obj/item/storage/fancy/handle_item_insertion(obj/item/W, prevent_warning = 0, mob/user) +/obj/item/storage/fancy/Exited() + . = ..() fancy_open = TRUE - return ..() + update_icon() -/obj/item/storage/fancy/remove_from_storage(obj/item/W, atom/new_location, burn = 0) +/obj/item/storage/fancy/Entered() + . = ..() fancy_open = TRUE - return ..() + update_icon() /* * Donut Box @@ -69,11 +67,15 @@ icon_state = "donutbox6" icon_type = "donut" name = "donut box" - storage_slots = 6 - can_hold = list(/obj/item/reagent_containers/food/snacks/donut) spawn_type = /obj/item/reagent_containers/food/snacks/donut fancy_open = TRUE +/obj/item/storage/fancy/donut_box/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 6 + STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/donut)) + /* * Egg Box */ @@ -87,10 +89,14 @@ righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi' name = "egg box" desc = "A carton for containing eggs." - storage_slots = 12 - can_hold = list(/obj/item/reagent_containers/food/snacks/egg) spawn_type = /obj/item/reagent_containers/food/snacks/egg +/obj/item/storage/fancy/egg_box/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 12 + STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/egg)) + /* * Candle Box */ @@ -102,12 +108,16 @@ icon_state = "candlebox5" icon_type = "candle" item_state = "candlebox5" - storage_slots = 5 throwforce = 2 slot_flags = SLOT_BELT spawn_type = /obj/item/candle fancy_open = TRUE +/obj/item/storage/fancy/candle_box/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 5 + /obj/item/storage/fancy/candle_box/attack_self(mob_user) return @@ -123,11 +133,15 @@ w_class = WEIGHT_CLASS_TINY throwforce = 0 slot_flags = SLOT_BELT - storage_slots = 6 - can_hold = list(/obj/item/clothing/mask/cigarette, /obj/item/lighter) icon_type = "cigarette" spawn_type = /obj/item/clothing/mask/cigarette/space_cigarette +/obj/item/storage/fancy/cigarettes/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 6 + STR.can_hold = typecacheof(list(/obj/item/clothing/mask/cigarette, /obj/item/lighter)) + /obj/item/storage/fancy/cigarettes/examine(mob/user) ..() to_chat(user, "Alt-click to extract contents.") @@ -137,7 +151,7 @@ return var/obj/item/clothing/mask/cigarette/W = locate(/obj/item/clothing/mask/cigarette) in contents if(W && contents.len > 0) - remove_from_storage(W, user) + SendSignal(COMSIG_TRY_STORAGE_TAKE, W, user) user.put_in_hands(W) contents -= W to_chat(user, "You take a [icon_type] out of the pack.") @@ -174,7 +188,7 @@ if(cig) if(M == user && contents.len > 0 && !user.wear_mask) var/obj/item/clothing/mask/cigarette/W = cig - remove_from_storage(W, M) + SendSignal(COMSIG_TRY_STORAGE_TAKE, W, M) M.equip_to_slot_if_possible(W, slot_wear_mask) contents -= W to_chat(user, "You take a [icon_type] out of the pack.") @@ -243,11 +257,15 @@ w_class = WEIGHT_CLASS_TINY icon = 'icons/obj/cigarettes.dmi' icon_state = "cig_paper_pack" - storage_slots = 10 icon_type = "rolling paper" - can_hold = list(/obj/item/rollingpaper) spawn_type = /obj/item/rollingpaper +/obj/item/storage/fancy/rollingpapers/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 10 + STR.can_hold = typecacheof(list(/obj/item/rollingpaper)) + /obj/item/storage/fancy/rollingpapers/update_icon() cut_overlays() if(!contents.len) @@ -263,11 +281,15 @@ icon = 'icons/obj/cigarettes.dmi' icon_state = "cigarcase" w_class = WEIGHT_CLASS_NORMAL - storage_slots = 5 - can_hold = list(/obj/item/clothing/mask/cigarette/cigar) icon_type = "premium cigar" spawn_type = /obj/item/clothing/mask/cigarette/cigar +/obj/item/storage/fancy/cigarettes/cigars/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 5 + STR.can_hold = typecacheof(list(/obj/item/clothing/mask/cigarette/cigar)) + /obj/item/storage/fancy/cigarettes/cigars/update_icon() cut_overlays() if(fancy_open) @@ -302,6 +324,10 @@ icon_type = "chocolate" lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi' - storage_slots = 8 - can_hold = list(/obj/item/reagent_containers/food/snacks/tinychocolate) spawn_type = /obj/item/reagent_containers/food/snacks/tinychocolate + +/obj/item/storage/fancy/heart_box/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 8 + STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/tinychocolate)) diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm index 335ba2b211..d5548ee95c 100644 --- a/code/game/objects/items/storage/firstaid.dm +++ b/code/game/objects/items/storage/firstaid.dm @@ -16,7 +16,7 @@ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' throw_speed = 3 throw_range = 7 - var/empty = 0 + var/empty = FALSE /obj/item/storage/firstaid/regular icon_state = "firstaid" @@ -41,7 +41,6 @@ icon_state = "firstaid" desc = "A first aid kit with the ability to heal common types of injuries." - /obj/item/storage/firstaid/ancient/PopulateContents() if(empty) return @@ -142,7 +141,11 @@ name = "combat medical kit" desc = "I hope you've got insurance." icon_state = "bezerk" - max_w_class = WEIGHT_CLASS_NORMAL + +/obj/item/storage/firstaid/tactical/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_w_class = WEIGHT_CLASS_NORMAL /obj/item/storage/firstaid/tactical/PopulateContents() if(empty) @@ -155,10 +158,10 @@ new /obj/item/reagent_containers/syringe/lethal/choral(src) new /obj/item/clothing/glasses/hud/health/night(src) - /* * Pill Bottles */ + /obj/item/storage/pill_bottle name = "pill bottle" desc = "It's an airtight container for storing medication." @@ -168,24 +171,13 @@ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' w_class = WEIGHT_CLASS_SMALL - can_hold = list(/obj/item/reagent_containers/pill, /obj/item/dice) - allow_quick_gather = 1 - use_to_pickup = 1 -/obj/item/storage/pill_bottle/MouseDrop(obj/over_object) //Quick pillbottle fix. -Agouri - - if(ishuman(usr) || ismonkey(usr)) //Can monkeys even place items in the pocket slots? Leaving this in just in case~ - var/mob/M = usr - if(!istype(over_object, /obj/screen) || !Adjacent(M)) - return ..() - if(!M.incapacitated() && istype(over_object, /obj/screen/inventory/hand)) - var/obj/screen/inventory/hand/H = over_object - if(M.putItemFromInventoryInHandIfPossible(src, H.held_index)) - add_fingerprint(usr) - if(over_object == usr && in_range(src, usr) || usr.contents.Find(src)) - if(usr.s_active) - usr.s_active.close(usr) - src.show_to(usr) +/obj/item/storage/pill_bottle/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.allow_quick_gather = TRUE + STR.click_gather = TRUE + STR.can_hold = typecacheof(list(/obj/item/reagent_containers/pill, /obj/item/dice)) /obj/item/storage/pill_bottle/suicide_act(mob/user) user.visible_message("[user] is trying to get the cap off [src]! It looks like [user.p_theyre()] trying to commit suicide!") diff --git a/code/game/objects/items/storage/internal.dm b/code/game/objects/items/storage/internal.dm deleted file mode 100644 index 2c44f3b306..0000000000 --- a/code/game/objects/items/storage/internal.dm +++ /dev/null @@ -1,88 +0,0 @@ -/obj/item/storage/internal - storage_slots = 2 - max_w_class = WEIGHT_CLASS_SMALL - max_combined_w_class = 50 // Limited by slots, not combined weight class - w_class = WEIGHT_CLASS_BULKY - rustle_jimmies = FALSE - -/obj/item/storage/internal/Adjacent(A) - if(loc) - return loc.Adjacent(A) - -/obj/item/storage/internal/pocket - var/priority = TRUE - // TRUE if opens when clicked, like a backpack. - // FALSE if opens only when dragged on mob's icon (hidden pocket) - var/quickdraw = FALSE - // TRUE if you can quickdraw items from it with alt-click. - -/obj/item/storage/internal/pocket/New() - ..() - if(loc) - name = loc.name - -/obj/item/storage/internal/pocket/handle_item_insertion(obj/item/W, prevent_warning = 0, mob/user) - . = ..() - if(. && silent && !prevent_warning) - if(quickdraw) - to_chat(user, "You discreetly slip [W] into [src]. Alt-click [src] to remove it.") - else - to_chat(user, "You discreetly slip [W] into [src].") - -/obj/item/storage/internal/pocket/big - max_w_class = WEIGHT_CLASS_NORMAL - -/obj/item/storage/internal/pocket/small - storage_slots = 1 - -/obj/item/storage/internal/pocket/tiny - storage_slots = 1 - max_w_class = WEIGHT_CLASS_TINY - priority = FALSE - -/obj/item/storage/internal/pocket/shoes - can_hold = list( - /obj/item/kitchen/knife, /obj/item/switchblade, /obj/item/pen, - /obj/item/scalpel, /obj/item/reagent_containers/syringe, /obj/item/dnainjector, - /obj/item/reagent_containers/hypospray/medipen, /obj/item/reagent_containers/dropper, - /obj/item/implanter, /obj/item/screwdriver, /obj/item/weldingtool/mini, - /obj/item/device/firing_pin - ) - //can hold both regular pens and energy daggers. made for your every-day tactical curators/murderers. - priority = FALSE - quickdraw = TRUE - silent = TRUE - - -/obj/item/storage/internal/pocket/shoes/clown - can_hold = list( - /obj/item/kitchen/knife, /obj/item/switchblade, /obj/item/pen, - /obj/item/scalpel, /obj/item/reagent_containers/syringe, /obj/item/dnainjector, - /obj/item/reagent_containers/hypospray/medipen, /obj/item/reagent_containers/dropper, - /obj/item/implanter, /obj/item/screwdriver, /obj/item/weldingtool/mini, - /obj/item/device/firing_pin, /obj/item/bikehorn) - -/obj/item/storage/internal/pocket/small/detective - priority = TRUE // so the detectives would discover pockets in their hats - -/obj/item/storage/internal/pocket/small/detective/PopulateContents() - new /obj/item/reagent_containers/food/drinks/flask/det(src) - -/obj/item/storage/internal/pocket/pocketprotector - storage_slots = 3 - max_w_class = WEIGHT_CLASS_TINY - can_hold = list( //Same items as a PDA - /obj/item/pen, - /obj/item/toy/crayon, - /obj/item/lipstick, - /obj/item/device/flashlight/pen, - /obj/item/clothing/mask/cigarette) - -/obj/item/storage/internal/pocket/pocketprotector/cosmetology/PopulateContents() - for(var/i in 1 to 3) - new /obj/item/lipstick/random(src) - -/obj/item/storage/internal/pocket/pocketprotector/full/PopulateContents() - new /obj/item/pen/red(src) - new /obj/item/pen(src) - new /obj/item/pen/blue(src) diff --git a/code/game/objects/items/storage/lockbox.dm b/code/game/objects/items/storage/lockbox.dm index 51a0d476c3..3f8c3b24e7 100644 --- a/code/game/objects/items/storage/lockbox.dm +++ b/code/game/objects/items/storage/lockbox.dm @@ -6,29 +6,33 @@ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' w_class = WEIGHT_CLASS_BULKY - max_w_class = WEIGHT_CLASS_NORMAL - max_combined_w_class = 14 //The sum of the w_classes of all the items in this storage item. - storage_slots = 4 req_access = list(ACCESS_ARMORY) - var/locked = TRUE var/broken = FALSE var/open = FALSE var/icon_locked = "lockbox+l" var/icon_closed = "lockbox" var/icon_broken = "lockbox+b" +/obj/item/storage/lockbox/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_w_class = WEIGHT_CLASS_NORMAL + STR.max_combined_w_class = 14 + STR.max_items = 4 /obj/item/storage/lockbox/attackby(obj/item/W, mob/user, params) + var/locked = SendSignal(COMSIG_IS_STORAGE_LOCKED) if(W.GetID()) if(broken) to_chat(user, "It appears to be broken.") return if(allowed(user)) - locked = !locked + SendSignal(COMSIG_TRY_STORAGE_SET_LOCKSTATE, !locked) + locked = SendSignal(COMSIG_IS_STORAGE_LOCKED) if(locked) icon_state = icon_locked to_chat(user, "You lock the [src.name]!") - close_all() + SendSignal(COMSIG_TRY_STORAGE_HIDE_ALL) return else icon_state = icon_closed @@ -42,51 +46,25 @@ else to_chat(user, "It's locked!") -/obj/item/storage/lockbox/MouseDrop(over_object, src_location, over_location) - if (locked) - src.add_fingerprint(usr) - to_chat(usr, "It's locked!") - return 0 - ..() - /obj/item/storage/lockbox/emag_act(mob/user) if(!broken) broken = TRUE - locked = FALSE + SendSignal(COMSIG_TRY_STORAGE_SET_LOCKSTATE, FALSE) desc += "It appears to be broken." icon_state = src.icon_broken if(user) visible_message("\The [src] has been broken by [user] with an electromagnetic card!") return -/obj/item/storage/lockbox/show_to(mob/user) - if(locked) - to_chat(user, "It's locked!") - else - ..() - return - -//Check the destination item type for contentto. -/obj/item/storage/lockbox/storage_contents_dump_act(obj/item/storage/src_object, mob/user) - if(locked) - to_chat(user, "It's locked!") - return null - open = TRUE - return ..() - -/obj/item/storage/lockbox/can_be_inserted(obj/item/W, stop_messages = 0) - if(locked) - return 0 - return ..() - -/obj/item/storage/lockbox/handle_item_insertion(obj/item/W, prevent_warning = 0, mob/user) +/obj/item/storage/lockbox/Entered() + . = ..() open = TRUE update_icon() - return ..() -/obj/item/storage/lockbox/remove_from_storage(obj/item/W, atom/new_location, burn = 0) + +/obj/item/storage/lockbox/Exited() + . = ..() open = TRUE update_icon() - return ..() /obj/item/storage/lockbox/loyalty name = "lockbox of mindshield implants" @@ -97,7 +75,6 @@ new /obj/item/implantcase/mindshield(src) new /obj/item/implanter/mindshield(src) - /obj/item/storage/lockbox/clusterbang name = "lockbox of clusterbangs" desc = "You have a bad feeling about opening this." @@ -114,23 +91,28 @@ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' w_class = WEIGHT_CLASS_NORMAL - max_w_class = WEIGHT_CLASS_SMALL - storage_slots = 10 - max_combined_w_class = 20 req_access = list(ACCESS_CAPTAIN) icon_locked = "medalbox+l" icon_closed = "medalbox" icon_broken = "medalbox+b" - can_hold = list(/obj/item/clothing/accessory/medal) + +/obj/item/storage/lockbox/medal/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_w_class = WEIGHT_CLASS_SMALL + STR.max_items = 10 + STR.max_combined_w_class = 20 + STR.can_hold = typecacheof(list(/obj/item/clothing/accessory/medal)) /obj/item/storage/lockbox/medal/examine(mob/user) ..() + var/locked = SendSignal(COMSIG_IS_STORAGE_LOCKED) if(!locked) to_chat(user, "Alt-click to [open ? "close":"open"] it.") /obj/item/storage/lockbox/medal/AltClick(mob/user) if(user.canUseTopic(src, BE_CLOSE)) - if(!locked) + if(!SendSignal(COMSIG_IS_STORAGE_LOCKED)) open = (open ? FALSE : TRUE) update_icon() ..() @@ -148,6 +130,7 @@ /obj/item/storage/lockbox/medal/update_icon() cut_overlays() + var/locked = SendSignal(COMSIG_IS_STORAGE_LOCKED) if(locked) icon_state = "medalbox+l" open = FALSE diff --git a/code/game/objects/items/storage/secure.dm b/code/game/objects/items/storage/secure.dm index 1a0474b94d..73e178af3f 100644 --- a/code/game/objects/items/storage/secure.dm +++ b/code/game/objects/items/storage/secure.dm @@ -15,7 +15,6 @@ var/icon_locking = "secureb" var/icon_sparking = "securespark" var/icon_opened = "secure0" - var/locked = TRUE var/code = "" var/l_code = null var/l_set = 0 @@ -23,16 +22,20 @@ var/l_hacking = 0 var/open = FALSE w_class = WEIGHT_CLASS_NORMAL - max_w_class = WEIGHT_CLASS_SMALL - max_combined_w_class = 14 desc = "This shouldn't exist. If it does, create an issue report." +/obj/item/storage/secure/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_w_class = WEIGHT_CLASS_SMALL + STR.max_combined_w_class = 14 + /obj/item/storage/secure/examine(mob/user) ..() to_chat(user, text("The service panel is currently [open ? "unscrewed" : "screwed shut"].")) /obj/item/storage/secure/attackby(obj/item/W, mob/user, params) - if(locked) + if(SendSignal(COMSIG_IS_STORAGE_LOCKED)) if (istype(W, /obj/item/screwdriver)) if (W.use_tool(src, user, 20)) open =! open @@ -41,15 +44,15 @@ if (istype(W, /obj/item/wirecutters)) to_chat(user, "[src] is protected from this sort of tampering, yet it appears the internal memory wires can still be pulsed.") if ((istype(W, /obj/item/device/multitool)) && (!l_hacking)) - if(src.open == 1) + if(open == 1) to_chat(user, "Now attempting to reset internal memory, please hold.") - src.l_hacking = 1 + l_hacking = 1 if (W.use_tool(src, user, 400)) to_chat(user, "Internal memory reset - lock has been disengaged.") - src.l_set = 0 - src.l_hacking = 0 + l_set = 0 + l_hacking = 0 else - src.l_hacking = 0 + l_hacking = 0 else to_chat(user, "You must unscrew the service panel before you can pulse the wiring.") return @@ -60,23 +63,17 @@ // -> storage/attackby() what with handle insertion, etc return ..() -/obj/item/storage/secure/MouseDrop(over_object, src_location, over_location) - if (locked) - src.add_fingerprint(usr) - to_chat(usr, "It's locked!") - return 0 - ..() - /obj/item/storage/secure/attack_self(mob/user) + var/locked = SendSignal(COMSIG_IS_STORAGE_LOCKED) user.set_machine(src) - var/dat = text("[]
\n\nLock Status: []",src, (src.locked ? "LOCKED" : "UNLOCKED")) + var/dat = text("[]
\n\nLock Status: []",src, (locked ? "LOCKED" : "UNLOCKED")) var/message = "Code" - if ((src.l_set == 0) && (!src.l_setshort)) + if ((l_set == 0) && (!l_setshort)) dat += text("

\n5-DIGIT PASSCODE NOT SET.
ENTER NEW PASSCODE.
") - if (src.l_setshort) + if (l_setshort) dat += text("

\nALERT: MEMORY SYSTEM ERROR - 6040 201") - message = text("[]", src.code) - if (!src.locked) + message = text("[]", code) + if (!locked) message = "*****" dat += text("


\n>[]
\n1-2-3
\n4-5-6
\n7-8-9
\nR-0-E
\n
", message) user << browse(dat, "window=caselock;size=300x280") @@ -87,44 +84,33 @@ return if (href_list["type"]) if (href_list["type"] == "E") - if ((src.l_set == 0) && (length(src.code) == 5) && (!src.l_setshort) && (src.code != "ERROR")) - src.l_code = src.code - src.l_set = 1 - else if ((src.code == src.l_code) && (src.l_set == 1)) - src.locked = FALSE + if ((l_set == 0) && (length(code) == 5) && (!l_setshort) && (code != "ERROR")) + l_code = code + l_set = 1 + else if ((code == l_code) && (l_set == 1)) + SendSignal(COMSIG_TRY_STORAGE_SET_LOCKSTATE, FALSE) cut_overlays() add_overlay(icon_opened) - src.code = null + code = null else - src.code = "ERROR" + code = "ERROR" else - if ((href_list["type"] == "R") && (!src.l_setshort)) - src.locked = TRUE + if ((href_list["type"] == "R") && (!l_setshort)) + SendSignal(COMSIG_TRY_STORAGE_SET_LOCKSTATE, TRUE) cut_overlays() - src.code = null - src.close(usr) + code = null + SendSignal(COMSIG_TRY_STORAGE_HIDE_FROM, usr) else - src.code += text("[]", sanitize_text(href_list["type"])) - if (length(src.code) > 5) - src.code = "ERROR" - src.add_fingerprint(usr) - for(var/mob/M in viewers(1, src.loc)) + code += text("[]", sanitize_text(href_list["type"])) + if (length(code) > 5) + code = "ERROR" + add_fingerprint(usr) + for(var/mob/M in viewers(1, loc)) if ((M.client && M.machine == src)) - src.attack_self(M) + attack_self(M) return return -/obj/item/storage/secure/storage_contents_dump_act(obj/item/storage/src_object, mob/user) - if(locked) - to_chat(user, "It's locked!") - return null - return ..() - -/obj/item/storage/secure/can_be_inserted(obj/item/W, stop_messages = 0) - if(locked) - return 0 - return ..() - // ----------------------------- // Secure Briefcase @@ -142,20 +128,17 @@ throw_speed = 2 throw_range = 4 w_class = WEIGHT_CLASS_BULKY - max_w_class = WEIGHT_CLASS_NORMAL - max_combined_w_class = 21 attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") /obj/item/storage/secure/briefcase/PopulateContents() new /obj/item/paper(src) new /obj/item/pen(src) -/obj/item/storage/secure/briefcase/attack_hand(mob/user) - if ((src.loc == user) && (src.locked == 1)) - to_chat(usr, "[src] is locked and cannot be opened!") - add_fingerprint(user) - else - ..() +/obj/item/storage/secure/briefcase/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_combined_w_class = 21 + STR.max_w_class = WEIGHT_CLASS_NORMAL //Syndie variant of Secure Briefcase. Contains space cash, slightly more robust. /obj/item/storage/secure/briefcase/syndie @@ -163,7 +146,8 @@ /obj/item/storage/secure/briefcase/syndie/PopulateContents() ..() - for(var/i = 0, i < storage_slots - 2, i++) + GET_COMPONENT(STR, /datum/component/storage) + for(var/i = 0, i < STR.max_items - 2, i++) new /obj/item/stack/spacecash/c1000(src) @@ -181,16 +165,23 @@ desc = "Excellent for securing things away from grubby hands." force = 8 w_class = WEIGHT_CLASS_GIGANTIC - max_w_class = 8 anchored = TRUE density = FALSE - cant_hold = list(/obj/item/storage/secure/briefcase) + +/obj/item/storage/secure/safe/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.cant_hold = typecacheof(list(/obj/item/storage/secure/briefcase)) + STR.max_w_class = 8 //?? /obj/item/storage/secure/safe/PopulateContents() new /obj/item/paper(src) new /obj/item/pen(src) /obj/item/storage/secure/safe/attack_hand(mob/user) + . = ..() + if(.) + return return attack_self(user) /obj/item/storage/secure/safe/HoS diff --git a/code/game/objects/items/storage/storage.dm b/code/game/objects/items/storage/storage.dm index ff1c1331e2..7c2694016b 100644 --- a/code/game/objects/items/storage/storage.dm +++ b/code/game/objects/items/storage/storage.dm @@ -1,583 +1,23 @@ -// External storage-related logic: -// /mob/proc/ClickOn() in /_onclick/click.dm - clicking items in storages -// /mob/living/Move() in /modules/mob/living/living.dm - hiding storage boxes on mob movement -// /item/attackby() in /game/objects/items.dm - use_to_pickup and allow_quick_gather functionality -// -- c0 - /obj/item/storage name = "storage" icon = 'icons/obj/storage.dmi' w_class = WEIGHT_CLASS_NORMAL - var/silent = 0 // No message on putting items in - var/list/can_hold = new/list() //Typecache of objects which this item can store (if set, it can't store anything else) - var/list/cant_hold = new/list() //Typecache of objects which this item can't store - var/list/is_seeing = new/list() //List of mobs which are currently seeing the contents of this item's storage - var/max_w_class = WEIGHT_CLASS_SMALL //Max size of objects that this object can store (in effect only if can_hold isn't set) - var/max_combined_w_class = 14 //The sum of the w_classes of all the items in this storage item. - var/storage_slots = 7 //The number of storage slots in this container. - var/obj/screen/storage/boxes = null - var/obj/screen/close/closer = null - var/use_to_pickup //Set this to make it possible to use this item in an inverse way, so you can have the item in your hand and click items on the floor to pick them up. - var/display_contents_with_number //Set this to make the storage item group contents of the same type and display them as a number. - var/allow_quick_empty //Set this variable to allow the object to have the 'empty' verb, which dumps all the contents on the floor. - var/allow_quick_gather //Set this variable to allow the object to have the 'toggle mode' verb, which quickly collects all items from a tile. - var/collection_mode = 1; //0 = pick one at a time, 1 = pick all on tile, 2 = pick all of a type - var/preposition = "in" // You put things 'in' a bag, but trays need 'on'. - var/rustle_jimmies = TRUE //Play the rustle sound on insertion - - -/obj/item/storage/MouseDrop(atom/over_object) - if(ismob(usr)) //all the check for item manipulation are in other places, you can safely open any storages as anything and its not buggy, i checked - var/mob/M = usr - - if(!over_object) - return - - if (ismecha(M.loc)) // stops inventory actions in a mech - return - - // this must come before the screen objects only block, dunno why it wasn't before - if(over_object == M && M.CanReach(src,view_only = TRUE)) - orient2hud(M) - if(M.s_active) - M.s_active.close(M) - show_to(M) - return - - if(!M.incapacitated()) - if(!istype(over_object, /obj/screen)) - return dump_content_at(over_object, M) - - if(loc != usr || (loc && loc.loc == usr)) - return - - playsound(loc, "rustle", 50, 1, -5) - - if(istype(over_object, /obj/screen/inventory/hand)) - var/obj/screen/inventory/hand/H = over_object - M.putItemFromInventoryInHandIfPossible(src, H.held_index) - - add_fingerprint(usr) - - -/obj/item/storage/MouseDrop_T(atom/movable/O, mob/user) - if(isitem(O)) - var/obj/item/I = O - if(iscarbon(user) || isdrone(user)) - var/mob/living/L = user - if(!L.incapacitated() && I == L.get_active_held_item()) - if(can_be_inserted(I, 0)) - handle_item_insertion(I, 0 , L) - + var/component_type = /datum/component/storage/concrete /obj/item/storage/get_dumping_location(obj/item/storage/source,mob/user) return src -//Tries to dump content -/obj/item/storage/proc/dump_content_at(atom/dest_object, mob/user) - var/atom/dump_destination = dest_object.get_dumping_location() - if(Adjacent(user) && dump_destination && user.Adjacent(dump_destination)) - if(dump_destination.storage_contents_dump_act(src, user)) - playsound(loc, "rustle", 50, 1, -5) - return 1 - return 0 +/obj/item/storage/Initialize() + . = ..() + PopulateContents() -//Object behaviour on storage dump -/obj/item/storage/storage_contents_dump_act(obj/item/storage/src_object, mob/user) - var/list/things = src_object.contents.Copy() - var/datum/progressbar/progress = new(user, things.len, src) - while (do_after(user, 10, TRUE, src, FALSE, CALLBACK(src, .proc/handle_mass_item_insertion, things, src_object, user, progress))) - stoplag(1) - qdel(progress) - orient2hud(user) - src_object.orient2hud(user) - if(user.s_active) //refresh the HUD to show the transfered contents - user.s_active.close(user) - user.s_active.show_to(user) - return 1 - -/obj/item/storage/proc/handle_mass_item_insertion(list/things, obj/item/storage/src_object, mob/user, datum/progressbar/progress) - for(var/obj/item/I in things) - things -= I - if(I.loc != src_object) - continue - if(user.s_active != src_object) - if(I.on_found(user)) - break - if(can_be_inserted(I,0,user)) - handle_item_insertion(I, TRUE, user) - if (TICK_CHECK) - progress.update(progress.goal - things.len) - return TRUE - - progress.update(progress.goal - things.len) - return FALSE - -/obj/item/storage/proc/return_inv() - var/list/L = list() - L += contents - - for(var/obj/item/storage/S in src) - L += S.return_inv() - return L - - -/obj/item/storage/proc/show_to(mob/user) - if(!user.client) - return - if(user.s_active != src && (user.stat == CONSCIOUS)) - for(var/obj/item/I in src) - if(I.on_found(user)) - return - if(user.s_active) - user.s_active.hide_from(user) - user.client.screen |= boxes - user.client.screen |= closer - user.client.screen |= contents - user.s_active = src - is_seeing |= user - - -/obj/item/storage/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback) - close_all() - return ..() - -/obj/item/storage/proc/hide_from(mob/user) - if(!user.client) - return - user.client.screen -= boxes - user.client.screen -= closer - user.client.screen -= contents - if(user.s_active == src) - user.s_active = null - is_seeing -= user - - -/obj/item/storage/proc/can_see_contents() - var/list/cansee = list() - for(var/mob/M in is_seeing) - if(M.s_active == src && M.client) - cansee |= M - else - is_seeing -= M - return cansee - - -/obj/item/storage/proc/close(mob/user) - hide_from(user) - user.s_active = null - - -/obj/item/storage/proc/close_all() - for(var/mob/M in can_see_contents()) - close(M) - . = 1 //returns 1 if any mobs actually got a close(M) call - - -//This proc draws out the inventory and places the items on it. tx and ty are the upper left tile and mx, my are the bottm right. -//The numbers are calculated from the bottom-left The bottom-left slot being 1,1. -/obj/item/storage/proc/orient_objs(tx, ty, mx, my) - var/cx = tx - var/cy = ty - boxes.screen_loc = "[tx]:,[ty] to [mx],[my]" - for(var/obj/O in contents) - if(QDELETED(O)) - continue - O.screen_loc = "[cx],[cy]" - O.layer = ABOVE_HUD_LAYER - O.plane = ABOVE_HUD_PLANE - cx++ - if(cx > mx) - cx = tx - cy-- - closer.screen_loc = "[mx+1],[my]" - - -//This proc draws out the inventory and places the items on it. It uses the standard position. -/obj/item/storage/proc/standard_orient_objs(rows, cols, list/obj/item/display_contents) - var/cx = 4 - var/cy = 2+rows - boxes.screen_loc = "4:16,2:16 to [4+cols]:16,[2+rows]:16" - - if(display_contents_with_number) - for(var/datum/numbered_display/ND in display_contents) - ND.sample_object.mouse_opacity = MOUSE_OPACITY_OPAQUE - ND.sample_object.screen_loc = "[cx]:16,[cy]:16" - ND.sample_object.maptext = "[(ND.number > 1)? "[ND.number]" : ""]" - ND.sample_object.layer = ABOVE_HUD_LAYER - ND.sample_object.plane = ABOVE_HUD_PLANE - cx++ - if(cx > (4+cols)) - cx = 4 - cy-- - else - for(var/obj/O in contents) - if(QDELETED(O)) - continue - O.mouse_opacity = MOUSE_OPACITY_OPAQUE //This is here so storage items that spawn with contents correctly have the "click around item to equip" - O.screen_loc = "[cx]:16,[cy]:16" - O.maptext = "" - O.layer = ABOVE_HUD_LAYER - O.plane = ABOVE_HUD_PLANE - cx++ - if(cx > (4+cols)) - cx = 4 - cy-- - closer.screen_loc = "[4+cols+1]:16,2:16" - - -/datum/numbered_display - var/obj/item/sample_object - var/number - -/datum/numbered_display/New(obj/item/sample) - if(!istype(sample)) - qdel(src) - sample_object = sample - number = 1 - - -//This proc determines the size of the inventory to be displayed. Please touch it only if you know what you're doing. -/obj/item/storage/proc/orient2hud(mob/user) - var/adjusted_contents = contents.len - - //Numbered contents display - var/list/datum/numbered_display/numbered_contents - if(display_contents_with_number) - numbered_contents = list() - adjusted_contents = 0 - for(var/obj/item/I in contents) - if(QDELETED(I)) - continue - var/found = 0 - for(var/datum/numbered_display/ND in numbered_contents) - if(ND.sample_object.type == I.type) - ND.number++ - found = 1 - break - if(!found) - adjusted_contents++ - numbered_contents.Add( new/datum/numbered_display(I) ) - - var/row_num = 0 - var/col_count = min(7,storage_slots) -1 - if(adjusted_contents > 7) - row_num = round((adjusted_contents-1) / 7) // 7 is the maximum allowed width. - standard_orient_objs(row_num, col_count, numbered_contents) - - -//This proc return 1 if the item can be picked up and 0 if it can't. -//Set the stop_messages to stop it from printing messages -/obj/item/storage/proc/can_be_inserted(obj/item/W, stop_messages = 0, mob/user) - if(!istype(W) || (W.flags_1 & ABSTRACT_1)) - return //Not an item - - if(loc == W) - return 0 //Means the item is already in the storage item - if(contents.len >= storage_slots) - if(!stop_messages) - to_chat(usr, "[src] is full, make some space!") - return 0 //Storage item is full - - if(can_hold.len) - if(!is_type_in_typecache(W, can_hold)) - if(!stop_messages) - to_chat(usr, "[src] cannot hold [W]!") - return 0 - - if(is_type_in_typecache(W, cant_hold)) //Check for specific items which this container can't hold. - if(!stop_messages) - to_chat(usr, "[src] cannot hold [W]!") - return 0 - - if(W.w_class > max_w_class) - if(!stop_messages) - to_chat(usr, "[W] is too big for [src]!") - return 0 - - var/sum_w_class = W.w_class - for(var/obj/item/I in contents) - sum_w_class += I.w_class //Adds up the combined w_classes which will be in the storage item if the item is added to it. - - if(sum_w_class > max_combined_w_class) - if(!stop_messages) - to_chat(usr, "[W] won't fit in [src], make some space!") - return 0 - - if(W.w_class >= w_class && (istype(W, /obj/item/storage))) - if(!istype(src, /obj/item/storage/backpack/holding)) //bohs should be able to hold backpacks again. The override for putting a boh in a boh is in backpack.dm. - if(!stop_messages) - to_chat(usr, "[src] cannot hold [W] as it's a storage item of the same size!") - return 0 //To prevent the stacking of same sized storage items. - - if(W.flags_1 & NODROP_1) //SHOULD be handled in unEquip, but better safe than sorry. - to_chat(usr, "\the [W] is stuck to your hand, you can't put it in \the [src]!") - return 0 - - return 1 - - -//This proc handles items being inserted. It does not perform any checks of whether an item can or can't be inserted. That's done by can_be_inserted() -//The stop_warning parameter will stop the insertion message from being displayed. It is intended for cases where you are inserting multiple items at once, -//such as when picking up all the items on a tile with one click. -/obj/item/storage/proc/handle_item_insertion(obj/item/W, prevent_warning = 0, mob/user) - if(!istype(W)) - return 0 - if(usr) - if(!usr.transferItemToLoc(W, src)) - return 0 - else - W.forceMove(src) - if(silent) - prevent_warning = 1 - if(W.pulledby) - W.pulledby.stop_pulling() - W.on_enter_storage(src) - if(usr) - if(usr.client && usr.s_active != src) - usr.client.screen -= W - if(usr.observers && usr.observers.len) - for(var/M in usr.observers) - var/mob/dead/observe = M - if(observe.client && observe.s_active != src) - observe.client.screen -= W - - add_fingerprint(usr) - if(rustle_jimmies && !prevent_warning) - playsound(src.loc, "rustle", 50, 1, -5) - - if(!prevent_warning) - for(var/mob/M in viewers(usr, null)) - if(M == usr) - to_chat(usr, "You put [W] [preposition]to [src].") - else if(in_range(M, usr)) //If someone is standing close enough, they can tell what it is... - M.show_message("[usr] puts [W] [preposition]to [src].", 1) - else if(W && W.w_class >= 3) //Otherwise they can only see large or normal items from a distance... - M.show_message("[usr] puts [W] [preposition]to [src].", 1) - - orient2hud(usr) - for(var/mob/M in can_see_contents()) - show_to(M) - W.mouse_opacity = MOUSE_OPACITY_OPAQUE //So you can click on the area around the item to equip it, instead of having to pixel hunt - update_icon() - return 1 - - -//Call this proc to handle the removal of an item from the storage item. The item will be moved to the new_location target, if that is null it's being deleted -/obj/item/storage/proc/remove_from_storage(obj/item/W, atom/new_location) - if(!istype(W)) - return 0 - - //Cache this as it should be reusable down the bottom, will not apply if anyone adds a sleep to dropped - //or moving objects, things that should never happen - var/list/seeing_mobs = can_see_contents() - for(var/mob/M in seeing_mobs) - M.client.screen -= W - - if(ismob(loc)) - var/mob/M = loc - W.dropped(M) - - - if(new_location) - W.forceMove(new_location) - //Reset the items values - W.layer = initial(W.layer) - W.plane = initial(W.plane) - W.mouse_opacity = initial(W.mouse_opacity) - if(W.maptext) - W.maptext = "" - //We don't want to call this if the item is being destroyed - W.on_exit_storage(src) - - else - //Being destroyed, just move to nullspace now (so it's not in contents for the icon update) - W.moveToNullspace() - - - for(var/mob/M in seeing_mobs) - orient2hud(M) - show_to(M) - - update_icon() - return 1 - -/obj/item/storage/deconstruct(disassembled = TRUE) - var/drop_loc = loc - if(ismob(loc)) - drop_loc = get_turf(src) - for(var/obj/item/I in contents) - remove_from_storage(I, drop_loc) - qdel(src) - -//This proc is called when you want to place an item into the storage item. -/obj/item/storage/attackby(obj/item/W, mob/user, params) - ..() - if(istype(W, /obj/item/hand_labeler)) - var/obj/item/hand_labeler/labeler = W - if(labeler.mode) - return 0 - . = 1 //no afterattack - if(iscyborg(user)) - return //Robots can't interact with storage items. - - if(!can_be_inserted(W, 0 , user)) - return 1 - - handle_item_insertion(W, 0 , user) +/obj/item/storage/ComponentInitialize() + AddComponent(component_type) /obj/item/storage/AllowDrop() return TRUE -/obj/item/storage/attack_hand(mob/user) - if(user.s_active == src && loc == user) //if you're already looking inside the storage item - user.s_active.close(user) - close(user) - return - - if(rustle_jimmies) - playsound(loc, "rustle", 50, 1, -5) - - if(ishuman(user)) - var/mob/living/carbon/human/H = user - if(H.l_store == src && !H.get_active_held_item()) //Prevents opening if it's in a pocket. - H.put_in_hands(src) - H.l_store = null - return - if(H.r_store == src && !H.get_active_held_item()) - H.put_in_hands(src) - H.r_store = null - return - - orient2hud(user) - if(loc == user) - if(user.s_active) - user.s_active.close(user) - show_to(user) - else - ..() - for(var/mob/M in range(1)) - if(M.s_active == src) - close(M) - add_fingerprint(user) - -/obj/item/storage/attack_paw(mob/user) - return attack_hand(user) - -/obj/item/storage/verb/toggle_gathering_mode() - set name = "Switch Gathering Method" - set category = "Object" - - if(usr.stat || !usr.canmove || usr.restrained()) - return - - collection_mode = (collection_mode+1)%3 - switch (collection_mode) - if(2) - to_chat(usr, "[src] now picks up all items of a single type at once.") - if(1) - to_chat(usr, "[src] now picks up all items in a tile at once.") - if(0) - to_chat(usr, "[src] now picks up one item at a time.") - -// Empty all the contents onto the current turf -/obj/item/storage/verb/quick_empty() - set name = "Empty Contents" - set category = "Object" - - if((!ishuman(usr) && (loc != usr)) || usr.stat || usr.restrained() ||!usr.canmove) - return - var/turf/T = get_turf(src) - var/list/things = contents.Copy() - var/datum/progressbar/progress = new(usr, things.len, T) - while (do_after(usr, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress))) - stoplag(1) - qdel(progress) - -/obj/item/storage/proc/mass_remove_from_storage(atom/target, list/things, datum/progressbar/progress) - for(var/obj/item/I in things) - things -= I - if (I.loc != src) - continue - remove_from_storage(I, target) - if (TICK_CHECK) - progress.update(progress.goal - things.len) - return TRUE - - progress.update(progress.goal - things.len) - return FALSE - -// Empty all the contents onto the current turf, without checking the user's status. -/obj/item/storage/proc/do_quick_empty() - var/turf/T = get_turf(src) - if(usr) - hide_from(usr) - for(var/obj/item/I in contents) - remove_from_storage(I, T) - - -/obj/item/storage/Initialize(mapload) - . = ..() - - can_hold = typecacheof(can_hold) - cant_hold = typecacheof(cant_hold) - - if(allow_quick_empty) - verbs += /obj/item/storage/verb/quick_empty - else - verbs -= /obj/item/storage/verb/quick_empty - - if(allow_quick_gather) - verbs += /obj/item/storage/verb/toggle_gathering_mode - else - verbs -= /obj/item/storage/verb/toggle_gathering_mode - - boxes = new /obj/screen/storage() - boxes.name = "storage" - boxes.master = src - boxes.icon_state = "block" - boxes.screen_loc = "7,7 to 10,8" - boxes.layer = HUD_LAYER - boxes.plane = HUD_PLANE - closer = new /obj/screen/close() - closer.master = src - closer.icon_state = "backpack_close" - closer.layer = ABOVE_HUD_LAYER - closer.plane = ABOVE_HUD_PLANE - orient2hud() - - PopulateContents() - - -/obj/item/storage/Destroy() - for(var/obj/O in contents) - O.mouse_opacity = initial(O.mouse_opacity) - - close_all() - qdel(boxes) - qdel(closer) - return ..() - - -/obj/item/storage/emp_act(severity) - if(!isliving(loc)) - for(var/obj/O in contents) - O.emp_act(severity) - ..() - - -/obj/item/storage/attack_self(mob/user) - //Clicking on itself will empty it, if it has the verb to do that. - if(user.get_active_held_item() == src) - if(verbs.Find(/obj/item/storage/verb/quick_empty)) - quick_empty() - -/obj/item/storage/handle_atom_del(atom/A) - if(A in contents) - usr = null - remove_from_storage(A, null) - /obj/item/storage/contents_explosion(severity, target) for(var/atom/A in contents) A.ex_act(severity, target) diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index 74c559117f..bea6b6de47 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -109,10 +109,14 @@ name = "suspicious looking toolbox" icon_state = "syndicate" item_state = "toolbox_syndi" - silent = 1 force = 15 throwforce = 18 +/obj/item/storage/toolbox/syndicate/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.silent = TRUE + /obj/item/storage/toolbox/syndicate/PopulateContents() new /obj/item/screwdriver/nuke(src) new /obj/item/wrench(src) @@ -145,12 +149,16 @@ has_latches = FALSE resistance_flags = FIRE_PROOF | ACID_PROOF w_class = WEIGHT_CLASS_HUGE - max_w_class = WEIGHT_CLASS_NORMAL - max_combined_w_class = 28 - storage_slots = 28 attack_verb = list("robusted", "crushed", "smashed") var/fabricator_type = /obj/item/clockwork/replica_fabricator/scarab +/obj/item/storage/toolbox/brass/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_w_class = WEIGHT_CLASS_NORMAL + STR.max_combined_w_class = 28 + STR.max_items = 28 + /obj/item/storage/toolbox/brass/prefilled/PopulateContents() new fabricator_type(src) new /obj/item/screwdriver/brass(src) @@ -180,10 +188,14 @@ desc = "A toolbox painted bright green. Why anyone would store art supplies in a toolbox is beyond you, but it has plenty of extra space." icon_state = "green" item_state = "artistic_toolbox" - max_combined_w_class = 20 - storage_slots = 10 w_class = WEIGHT_CLASS_GIGANTIC //Holds more than a regular toolbox! +/obj/item/storage/toolbox/artistic/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_combined_w_class = 20 + STR.max_items = 10 + /obj/item/storage/toolbox/artistic/PopulateContents() new/obj/item/storage/crayons(src) new/obj/item/crowbar(src) diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 62aebeda12..6c4d16f994 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -192,8 +192,12 @@ /obj/item/storage/box/syndie_kit/space name = "boxed space suit and helmet" - can_hold = list(/obj/item/clothing/suit/space/syndicate, /obj/item/clothing/head/helmet/space/syndicate) - max_w_class = WEIGHT_CLASS_NORMAL + +/obj/item/storage/box/syndie_kit/space/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_w_class = WEIGHT_CLASS_NORMAL + STR.can_hold = typecacheof(list(/obj/item/clothing/suit/space/syndicate, /obj/item/clothing/head/helmet/space/syndicate)) /obj/item/storage/box/syndie_kit/space/PopulateContents() new /obj/item/clothing/suit/space/syndicate/black/red(src) // Black and red is so in right now @@ -212,7 +216,11 @@ /obj/item/storage/box/syndie_kit/chemical name = "boxed chemical kit" - storage_slots = 14 + +/obj/item/storage/box/syndie_kit/chemical/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 14 /obj/item/storage/box/syndie_kit/chemical/PopulateContents() new /obj/item/reagent_containers/glass/bottle/polonium(src) diff --git a/code/game/objects/items/storage/wallets.dm b/code/game/objects/items/storage/wallets.dm index 885dbc3830..fa649fddc6 100644 --- a/code/game/objects/items/storage/wallets.dm +++ b/code/game/objects/items/storage/wallets.dm @@ -1,11 +1,19 @@ /obj/item/storage/wallet name = "wallet" desc = "It can hold a few small and personal things." - storage_slots = 4 icon_state = "wallet" w_class = WEIGHT_CLASS_SMALL resistance_flags = FLAMMABLE - can_hold = list( + slot_flags = SLOT_ID + + var/obj/item/card/id/front_id = null + var/list/combined_access + +/obj/item/storage/wallet/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 4 + STR.can_hold = typecacheof(list( /obj/item/stack/spacecash, /obj/item/card, /obj/item/clothing/mask/cigarette, @@ -26,48 +34,39 @@ /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/screwdriver, - /obj/item/stamp) - slot_flags = SLOT_ID + /obj/item/stamp)) - var/obj/item/card/id/front_id = null - var/list/combined_access = list() - - -/obj/item/storage/wallet/remove_from_storage(obj/item/W, atom/new_location) - . = ..(W, new_location) - if(.) - if(istype(W, /obj/item/card/id)) - if(W == front_id) - front_id = null - refreshID() - update_icon() +/obj/item/storage/wallet/Exited(atom/movable/AM) + . = ..() + refreshID() /obj/item/storage/wallet/proc/refreshID() - combined_access.Cut() + if(!(front_id in src)) + front_id = null for(var/obj/item/card/id/I in contents) + LAZYINITLIST(combined_access) + LAZYCLEARLIST(combined_access) if(!front_id) front_id = I - update_icon() combined_access |= I.access + update_icon() -/obj/item/storage/wallet/handle_item_insertion(obj/item/W, prevent_warning = 0) +/obj/item/storage/wallet/Entered(atom/movable/AM) . = ..() - if(.) - if(istype(W, /obj/item/card/id)) - refreshID() + refreshID() /obj/item/storage/wallet/update_icon() - icon_state = "wallet" + var/new_state = "wallet" if(front_id) - icon_state = "wallet_[front_id.icon_state]" - - + new_state = "wallet_[front_id.icon_state]" + if(new_state != icon_state) //avoid so many icon state changes. + icon_state = new_state /obj/item/storage/wallet/GetID() return front_id /obj/item/storage/wallet/GetAccess() - if(combined_access.len) + if(LAZYLEN(combined_access)) return combined_access else return ..() diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index 6bae2af476..dc496187bc 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -28,6 +28,7 @@ var/change_icons = 1 var/can_off_process = 0 var/light_intensity = 2 //how powerful the emitted light is when used. + var/progress_flash_divisor = 10 var/burned_fuel_for = 0 //when fuel was last removed heat = 3800 tool_behaviour = TOOL_WELDER @@ -234,6 +235,16 @@ if(. && user) user.flash_act(light_intensity) +// Flash the user during welding progress +/obj/item/weldingtool/tool_check_callback(mob/living/user, amount, datum/callback/extra_checks) + . = ..() + if(. && user) + if (progress_flash_divisor == 0) + user.flash_act(min(light_intensity,1)) + progress_flash_divisor = initial(progress_flash_divisor) + else + progress_flash_divisor-- + // If welding tool ran out of fuel during a construction task, construction fails. /obj/item/weldingtool/tool_use_check(mob/living/user, amount) if(!isOn() || !check_fuel()) @@ -358,4 +369,4 @@ nextrefueltick = world.time + 10 reagents.add_reagent("welding_fuel", 1) -#undef WELDER_FUEL_BURN_INTERVAL \ No newline at end of file +#undef WELDER_FUEL_BURN_INTERVAL diff --git a/code/game/objects/structures/crates_lockers/crates/bins.dm b/code/game/objects/structures/crates_lockers/crates/bins.dm index 5767995712..9f14fff8d0 100644 --- a/code/game/objects/structures/crates_lockers/crates/bins.dm +++ b/code/game/objects/structures/crates_lockers/crates/bins.dm @@ -27,8 +27,7 @@ var/obj/item/storage/bag/trash/T = W to_chat(user, "You fill the bag.") for(var/obj/item/O in src) - if(T.can_be_inserted(O, 1)) - O.forceMove(T) + T.SendSignal(COMSIG_TRY_STORAGE_INSERT, O, user, TRUE) T.update_icon() do_animate() return TRUE diff --git a/code/game/objects/structures/fence.dm b/code/game/objects/structures/fence.dm index 8d7d946647..19103c71ec 100644 --- a/code/game/objects/structures/fence.dm +++ b/code/game/objects/structures/fence.dm @@ -155,7 +155,6 @@ #undef CLIMB_TIME #undef NO_HOLE -#undef SMALL_HOLE #undef MEDIUM_HOLE #undef LARGE_HOLE #undef MAX_HOLE_SIZE \ No newline at end of file diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index cceed2ef17..c20168f52c 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -135,11 +135,7 @@ if(istype(I, /obj/item/storage/bag/tray)) var/obj/item/storage/bag/tray/T = I if(T.contents.len > 0) // If the tray isn't empty - var/list/obj/item/oldContents = T.contents.Copy() - T.quick_empty() - for(var/obj/item/C in oldContents) - C.forceMove(drop_location()) - + I.SendSignal(COMSIG_TRY_STORAGE_QUICK_EMPTY, drop_location()) user.visible_message("[user] empties [I] on [src].") return // If the tray IS empty, continue on (tray will be placed on the table like other items) diff --git a/code/game/turfs/baseturf_skipover.dm b/code/game/turfs/baseturf_skipover.dm new file mode 100644 index 0000000000..644714f8ed --- /dev/null +++ b/code/game/turfs/baseturf_skipover.dm @@ -0,0 +1,13 @@ +// This is a typepath to just sit in baseturfs and act as a marker for other things. +/turf/baseturf_skipover + name = "Baseturf skipover placeholder" + desc = "This shouldn't exist" + +/turf/baseturf_skipover/Initialize() + . = ..() + stack_trace("[src]([type]) was instanced which should never happen. Changing into the next baseturf down...") + ScrapeAway() + +/turf/baseturf_skipover/shuttle + name = "Shuttle baseturf skipover" + desc = "Acts as the bottom of the shuttle, if this isn't here the shuttle floor is broken through." \ No newline at end of file diff --git a/code/game/turfs/ChangeTurf.dm b/code/game/turfs/change_turf.dm similarity index 81% rename from code/game/turfs/ChangeTurf.dm rename to code/game/turfs/change_turf.dm index 7394592c08..253ceb29ac 100644 --- a/code/game/turfs/ChangeTurf.dm +++ b/code/game/turfs/change_turf.dm @@ -12,11 +12,11 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( var/thing = allowed_contents[i] qdel(thing, force=TRUE) - var/turf/newT = ChangeTurf(turf_type, baseturf_type, flags) - - SSair.remove_from_active(newT) - newT.CalculateAdjacentTurfs() - SSair.add_to_active(newT,1) + if(turf_type) + var/turf/newT = ChangeTurf(turf_type, baseturf_type, flags) + SSair.remove_from_active(newT) + newT.CalculateAdjacentTurfs() + SSair.add_to_active(newT,1) /turf/proc/copyTurf(turf/T) if(T.type != type) @@ -106,24 +106,26 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( return W // Take off the top layer turf and replace it with the next baseturf down -/turf/proc/ScrapeAway() +/turf/proc/ScrapeAway(amount=1, flags) + if(!amount) + return if(length(baseturfs)) - var/list/new_baseturfs = baseturfs - var/turf_type = new_baseturfs[new_baseturfs.len] - new_baseturfs.len-- - switch(new_baseturfs.len) - if(1) - new_baseturfs = new_baseturfs[1] - if(0) - new_baseturfs = turf_type - // We must never end up with a situation where there is no baseturf - WARNING("turf of type [type] had a baseturfs length 1 still in list form.") - return ChangeTurf(turf_type, new_baseturfs) + var/list/new_baseturfs = baseturfs.Copy() + var/turf_type = new_baseturfs[max(1, new_baseturfs.len - amount + 1)] + while(ispath(turf_type, /turf/baseturf_skipover)) + amount++ + if(amount > new_baseturfs.len) + CRASH("The bottomost baseturf of a turf is a skipover [src]([type])") + turf_type = new_baseturfs[max(1, new_baseturfs.len - amount + 1)] + new_baseturfs.len -= min(amount, new_baseturfs.len - 1) // No removing the very bottom + if(new_baseturfs.len == 1) + new_baseturfs = new_baseturfs[1] + return ChangeTurf(turf_type, new_baseturfs, flags) if(baseturfs == type) return src - return ChangeTurf(baseturfs, baseturfs) // The bottom baseturf will never go away + return ChangeTurf(baseturfs, baseturfs, flags) // The bottom baseturf will never go away // Take the input as baseturfs and put it underneath the current baseturfs // If fake_turf_type is provided and new_baseturfs is not the baseturfs list will be created identical to the turf type's @@ -153,6 +155,11 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( // Things placed on top of closed turfs will ignore the topmost closed turf // Returns the new turf /turf/proc/PlaceOnTop(list/new_baseturfs, turf/fake_turf_type, flags) + var/area/turf_area = loc + if(new_baseturfs && !length(new_baseturfs)) + new_baseturfs = list(new_baseturfs) + flags = turf_area.PlaceOnTopReact(new_baseturfs, fake_turf_type, flags) // A hook so areas can modify the incoming args + var/turf/newT if(flags & CHANGETURF_SKIP) // We haven't been initialized if(initialized) @@ -200,17 +207,16 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( new_baseturfs += type if(depth) - var/list/target_baseturfs = copytarget.baseturfs - target_baseturfs -= target_baseturfs & GLOB.blacklisted_automated_baseturfs - var/base_len = length(target_baseturfs) - if(!base_len) - if(!ignore_bottom) - new_baseturfs += target_baseturfs - else if(base_len > ignore_bottom) - if(base_len - ignore_bottom <= depth) - new_baseturfs += target_baseturfs.Copy(ignore_bottom + 1) - else - new_baseturfs += target_baseturfs.Copy(base_len - depth) + var/list/target_baseturfs + if(length(copytarget.baseturfs)) + // with default inputs this would be Copy(CLAMP(2, -INFINITY, baseturfs.len)) + // Don't forget a lower index is lower in the baseturfs stack, the bottom is baseturfs[1] + target_baseturfs = copytarget.baseturfs.Copy(CLAMP(1 + ignore_bottom, 1 + copytarget.baseturfs.len - depth, copytarget.baseturfs.len)) + else if(!ignore_bottom) + target_baseturfs = list(copytarget.baseturfs) + if(target_baseturfs) + target_baseturfs -= new_baseturfs & GLOB.blacklisted_automated_baseturfs + new_baseturfs += target_baseturfs var/turf/newT = copytarget.copyTurf(src) newT.baseturfs = new_baseturfs diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index c73dd50e44..3515527bfd 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -4,6 +4,7 @@ //- floor_tile is now a path, and not a tile obj name = "floor" icon = 'icons/turf/floors.dmi' + baseturfs = /turf/open/floor/plating var/icon_regular_floor = "floor" //used to remember what icon the tile should have by default var/icon_plating = "plating" @@ -59,21 +60,25 @@ switch(severity) if(1) - ScrapeAway() + ScrapeAway(2) if(2) switch(pick(1,2;75,3)) if(1) - src.ReplaceWithLattice() + if(!length(baseturfs) || !ispath(baseturfs[baseturfs.len-1], /turf/open/floor)) + ScrapeAway() + ReplaceWithLattice() + else + ScrapeAway(2) if(prob(33)) new /obj/item/stack/sheet/metal(src) if(2) - ScrapeAway() + ScrapeAway(2) if(3) if(prob(80)) - src.break_tile_to_plating() + ScrapeAway() else - src.break_tile() - src.hotspot_expose(1000,CELL_VOLUME) + break_tile() + hotspot_expose(1000,CELL_VOLUME) if(prob(33)) new /obj/item/stack/sheet/metal(src) if(3) @@ -94,13 +99,15 @@ return 1 /turf/open/floor/attack_paw(mob/user) - return src.attack_hand(user) + return attack_hand(user) /turf/open/floor/proc/gets_drilled() return /turf/open/floor/proc/break_tile_to_plating() var/turf/open/floor/plating/T = make_plating() + if(!istype(T)) + return T.break_tile() /turf/open/floor/proc/break_tile() @@ -119,7 +126,7 @@ burnt = 1 /turf/open/floor/proc/make_plating() - return ChangeTurf(/turf/open/floor/plating) + return ScrapeAway() /turf/open/floor/ChangeTurf(path, new_baseturf, flags) if(!isfloorturf(src)) diff --git a/code/game/turfs/simulated/floor/mineral_floor.dm b/code/game/turfs/simulated/floor/mineral_floor.dm index 07e324bb02..e2e3356684 100644 --- a/code/game/turfs/simulated/floor/mineral_floor.dm +++ b/code/game/turfs/simulated/floor/mineral_floor.dm @@ -219,6 +219,7 @@ icon_state = "alienpod1" floor_tile = /obj/item/stack/tile/mineral/abductor icons = list("alienpod1", "alienpod2", "alienpod3", "alienpod4", "alienpod5", "alienpod6", "alienpod7", "alienpod8", "alienpod9") + baseturfs = /turf/open/floor/plating/abductor2 /turf/open/floor/mineral/abductor/Initialize() . = ..() @@ -229,6 +230,3 @@ /turf/open/floor/mineral/abductor/burn_tile() return //unburnable - -/turf/open/floor/mineral/abductor/make_plating() - return ChangeTurf(/turf/open/floor/plating/abductor2) diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm index c2322fd594..eeed31bd9f 100644 --- a/code/game/turfs/simulated/floor/plating.dm +++ b/code/game/turfs/simulated/floor/plating.dm @@ -11,6 +11,7 @@ name = "plating" icon_state = "plating" intact = FALSE + baseturfs = /turf/open/space var/attachment_holes = TRUE /turf/open/floor/plating/examine(mob/user) @@ -55,7 +56,7 @@ to_chat(user, "You begin reinforcing the floor...") if(do_after(user, 30, target = src)) if (R.get_amount() >= 2 && !istype(src, /turf/open/floor/engine)) - ChangeTurf(/turf/open/floor/engine) + PlaceOnTop(/turf/open/floor/engine) playsound(src, 'sound/items/deconstruct.ogg', 80, 1) R.use(2) to_chat(user, "You reinforce the floor.") @@ -70,7 +71,7 @@ var/obj/item/stack/tile/W = C if(!W.use(1)) return - var/turf/open/floor/T = ChangeTurf(W.turf_type) + var/turf/open/floor/T = PlaceOnTop(W.turf_type) if(istype(W, /obj/item/stack/tile/light)) //TODO: get rid of this ugly check somehow var/obj/item/stack/tile/light/L = W var/turf/open/floor/light/F = T @@ -88,6 +89,9 @@ return TRUE +/turf/open/floor/plating/make_plating() + return + /turf/open/floor/plating/foam name = "metal foam plating" desc = "Thin, fragile flooring created with metal foam." diff --git a/code/game/turfs/simulated/floor/plating/asteroid.dm b/code/game/turfs/simulated/floor/plating/asteroid.dm index 1c174524bb..8cc61700d3 100644 --- a/code/game/turfs/simulated/floor/plating/asteroid.dm +++ b/code/game/turfs/simulated/floor/plating/asteroid.dm @@ -1,6 +1,4 @@ - - /**********************Asteroid**************************/ /turf/open/floor/plating/asteroid //floor piece @@ -43,12 +41,9 @@ if(..()) return TRUE if(istype(W, /obj/item/storage/bag/ore)) - var/obj/item/storage/bag/ore/S = W - if(S.collection_mode == 1) - for(var/obj/item/stack/ore/O in contents) - O.attackby(W,user) - return - + for(var/obj/item/stack/ore/O in src) + W.SendSignal(COMSIG_PARENT_ATTACKBY, O) + /turf/open/floor/plating/asteroid/singularity_act() if(is_planet_level(z)) return ..() @@ -198,6 +193,9 @@ if(istype(tunnel)) // Small chance to have forks in our tunnel; otherwise dig our tunnel. if(i > 3 && prob(20)) + if(istype(tunnel.loc, /area/mine/explored) || (istype(tunnel.loc, /area/lavaland/surface/outdoors) && !istype(tunnel.loc, /area/lavaland/surface/outdoors/unexplored))) + sanity = 0 + break var/turf/open/floor/plating/asteroid/airless/cave/C = tunnel.ChangeTurf(data_having_type, null, CHANGETURF_IGNORE_AIR) C.going_backwards = FALSE C.produce_tunnel_from_data(rand(10, 15), dir) @@ -216,7 +214,7 @@ /turf/open/floor/plating/asteroid/airless/cave/proc/SpawnFloor(turf/T) for(var/S in RANGE_TURFS(1, src)) var/turf/NT = S - if(!NT || isspaceturf(NT) || istype(NT.loc, /area/mine/explored) || istype(NT.loc, /area/lavaland/surface/outdoors/explored)) + if(!NT || isspaceturf(NT) || istype(NT.loc, /area/mine/explored) || (istype(NT.loc, /area/lavaland/surface/outdoors) && !istype(NT.loc, /area/lavaland/surface/outdoors/unexplored))) sanity = 0 break if(!sanity) diff --git a/code/game/turfs/simulated/floor/reinf_floor.dm b/code/game/turfs/simulated/floor/reinf_floor.dm index bdce6535ba..78fe2b1bde 100644 --- a/code/game/turfs/simulated/floor/reinf_floor.dm +++ b/code/game/turfs/simulated/floor/reinf_floor.dm @@ -37,7 +37,7 @@ if(!istype(src, /turf/open/floor/engine)) return TRUE new /obj/item/stack/rods(src, 2) - ChangeTurf(/turf/open/floor/plating) + ScrapeAway() return TRUE /turf/open/floor/engine/acid_act(acidpwr, acid_volume) @@ -55,14 +55,18 @@ switch(severity) if(1) if(prob(80)) - ReplaceWithLattice() + if(!length(baseturfs) || !ispath(baseturfs[baseturfs.len-1], /turf/open/floor)) + ScrapeAway() + ReplaceWithLattice() + else + ScrapeAway(2) else if(prob(50)) - ScrapeAway() + ScrapeAway(2) else - make_plating(1) + ScrapeAway() if(2) if(prob(50)) - make_plating(1) + ScrapeAway() /turf/open/floor/engine/singularity_pull(S, current_size) ..() diff --git a/code/game/turfs/simulated/lava.dm b/code/game/turfs/simulated/lava.dm index a70f44ac3f..f8ab060853 100644 --- a/code/game/turfs/simulated/lava.dm +++ b/code/game/turfs/simulated/lava.dm @@ -48,7 +48,7 @@ switch(passed_mode) if(RCD_FLOORWALL) to_chat(user, "You build a floor.") - ChangeTurf(/turf/open/floor/plating) + PlaceOnTop(/turf/open/floor/plating) return TRUE return FALSE diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm index ee407926d8..09710e30a2 100644 --- a/code/game/turfs/simulated/minerals.dm +++ b/code/game/turfs/simulated/minerals.dm @@ -78,7 +78,7 @@ var/flags = NONE if(defer_change) // TODO: make the defer change var a var for any changeturf flag flags = CHANGETURF_DEFER_CHANGE - ChangeTurf(turf_type, null, flags) + ScrapeAway(null, flags) addtimer(CALLBACK(src, .proc/AfterChange), 1, TIMER_UNIQUE) playsound(src, 'sound/effects/break_stone.ogg', 50, 1) //beautiful destruction @@ -513,7 +513,7 @@ var/flags = NONE if(defer_change) flags = CHANGETURF_DEFER_CHANGE - ChangeTurf(turf_type, null, flags) + ScrapeAway(null, flags) addtimer(CALLBACK(src, .proc/AfterChange), 1, TIMER_UNIQUE) diff --git a/code/game/turfs/simulated/river.dm b/code/game/turfs/simulated/river.dm index 73640f99e0..e451fe4892 100644 --- a/code/game/turfs/simulated/river.dm +++ b/code/game/turfs/simulated/river.dm @@ -4,7 +4,7 @@ #define RANDOM_LOWER_X 50 #define RANDOM_LOWER_Y 50 -/proc/spawn_rivers(target_z, nodes = 4, turf_type = /turf/open/lava/smooth/lava_land_surface, whitelist_area = /area/lavaland/surface/outdoors, min_x = RANDOM_LOWER_X, min_y = RANDOM_LOWER_Y, max_x = RANDOM_UPPER_X, max_y = RANDOM_UPPER_Y) +/proc/spawn_rivers(target_z, nodes = 4, turf_type = /turf/open/lava/smooth/lava_land_surface, whitelist_area = /area/lavaland/surface/outdoors/unexplored, min_x = RANDOM_LOWER_X, min_y = RANDOM_LOWER_Y, max_x = RANDOM_UPPER_X, max_y = RANDOM_UPPER_Y) var/list/river_nodes = list() var/num_spawned = 0 var/list/possible_locs = block(locate(min_x, min_y, target_z), locate(max_x, max_y, target_z)) diff --git a/code/game/turfs/simulated/wall/mineral_walls.dm b/code/game/turfs/simulated/wall/mineral_walls.dm index 6cfa6a2f23..4f85d45d58 100644 --- a/code/game/turfs/simulated/wall/mineral_walls.dm +++ b/code/game/turfs/simulated/wall/mineral_walls.dm @@ -102,7 +102,7 @@ /turf/closed/wall/mineral/plasma/proc/PlasmaBurn(temperature) new girder_type(src) - src.ChangeTurf(/turf/open/floor/plasteel) + ScrapeAway() var/turf/open/T = src T.atmos_spawn_air("plasma=400;TEMP=[temperature]") diff --git a/code/game/turfs/simulated/wall/reinf_walls.dm b/code/game/turfs/simulated/wall/reinf_walls.dm index 6a68a894cf..c667714273 100644 --- a/code/game/turfs/simulated/wall/reinf_walls.dm +++ b/code/game/turfs/simulated/wall/reinf_walls.dm @@ -27,7 +27,7 @@ to_chat(user, "The support lines have been unscrewed, and the metal cover is welded firmly in place.") if(CUT_COVER) to_chat(user, "The metal cover has been sliced through, and is connected loosely to the girder.") - if(BOLTS) + if(ANCHOR_BOLTS) to_chat(user, "The outer cover has been pried away, and the bolts anchoring the support rods are wrenched in place.") if(SUPPORT_RODS) to_chat(user, "The bolts anchoring the support rods have been loosened, but are still welded firmly to the girder.") @@ -120,7 +120,7 @@ if(W.use_tool(src, user, 100, volume=100)) if(!istype(src, /turf/closed/wall/r_wall) || d_state != CUT_COVER) return 1 - d_state = BOLTS + d_state = ANCHOR_BOLTS update_icon() to_chat(user, "You pry off the cover.") return 1 @@ -137,11 +137,11 @@ to_chat(user, "The metal cover has been welded securely to the frame.") return 1 - if(BOLTS) + if(ANCHOR_BOLTS) if(istype(W, /obj/item/wrench)) to_chat(user, "You start loosening the anchoring bolts which secure the support rods to their frame...") if(W.use_tool(src, user, 40, volume=100)) - if(!istype(src, /turf/closed/wall/r_wall) || d_state != BOLTS) + if(!istype(src, /turf/closed/wall/r_wall) || d_state != ANCHOR_BOLTS) return 1 d_state = SUPPORT_RODS update_icon() @@ -151,7 +151,7 @@ if(istype(W, /obj/item/crowbar)) to_chat(user, "You start to pry the cover back into place...") if(W.use_tool(src, user, 20, volume=100)) - if(!istype(src, /turf/closed/wall/r_wall) || d_state != BOLTS) + if(!istype(src, /turf/closed/wall/r_wall) || d_state != ANCHOR_BOLTS) return 1 d_state = CUT_COVER update_icon() @@ -177,7 +177,7 @@ if(W.use_tool(src, user, 40)) if(!istype(src, /turf/closed/wall/r_wall) || d_state != SUPPORT_RODS) return 1 - d_state = BOLTS + d_state = ANCHOR_BOLTS update_icon() to_chat(user, "You tighten the bolts anchoring the support rods.") return 1 diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 0cb72716fb..a40991b954 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -93,6 +93,9 @@ ..() /turf/attack_hand(mob/user) + . = ..() + if(.) + return user.Move_Pulled(src) /turf/proc/handleRCL(obj/item/twohanded/rcl/C, mob/user) @@ -265,15 +268,18 @@ /turf/proc/Bless() new /obj/effect/blessing(src) -/turf/storage_contents_dump_act(obj/item/storage/src_object, mob/user) - if(src_object.contents.len) +/turf/storage_contents_dump_act(datum/component/storage/src_object, mob/user) + . = ..() + if(.) + return + if(length(src_object.contents())) to_chat(usr, "You start dumping out the contents...") - if(!do_after(usr,20,target=src_object)) + if(!do_after(usr,20,target=src_object.parent)) return FALSE - var/list/things = src_object.contents.Copy() + var/list/things = src_object.contents() var/datum/progressbar/progress = new(user, things.len, src) - while (do_after(usr, 10, TRUE, src, FALSE, CALLBACK(src_object, /obj/item/storage.proc/mass_remove_from_storage, src, things, progress))) + while (do_after(usr, 10, TRUE, src, FALSE, CALLBACK(src_object, /datum/component/storage.proc/mass_remove_from_storage, src, things, progress))) stoplag(1) qdel(progress) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 3d22385513..577cca303b 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -43,7 +43,6 @@ body += "

Show related accounts by: " body += "\[ CID | " body += "IP \]" - var/rep = 0 rep += SSpersistence.antag_rep[M.ckey] body += "

Antagonist reputation: [rep]" @@ -52,12 +51,15 @@ body += "\[set\] " body += "\[zero\]" + body += "

\[ " body += "VV - " if(M.mind) body += "TP - " else body += "Init Mind - " + if (iscyborg(M)) + body += "BP - " body += "PM - " body += "SM - " body += "FLW - " @@ -177,9 +179,9 @@ body += "Thunderdome 2 | " body += "Thunderdome Admin | " body += "Thunderdome Observer | " - + body += usr.client.citaPPoptions(M) // CITADEL - + body += "
" body += "" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index c99f568086..eb4d102914 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -1,4 +1,5 @@ //admin verb groups - They can overlap if you so wish. Only one of each verb will exist in the verbs list regardless +//admin verb groups - They can overlap if you so wish. Only one of each verb will exist in the verbs list regardless //the procs are cause you can't put the comments in the GLOB var define GLOBAL_PROTECT(admin_verbs_default) GLOBAL_LIST_INIT(admin_verbs_default, world.AVerbsDefault()) @@ -6,7 +7,6 @@ GLOBAL_LIST_INIT(admin_verbs_default, world.AVerbsDefault()) return list( /client/proc/deadmin, /*destroys our own admin datum so we can play as a regular player*/ /client/proc/cmd_admin_say, /*admin-only ooc chat*/ - /client/proc/cmd_admin_ticket_panel, /client/proc/dsay, /*talk in deadchat using our ckey/fakekey*/ /client/proc/deadchat, /client/proc/investigate_show, /*various admintools for investigation. Such as a singulo grief-log*/ @@ -39,6 +39,7 @@ GLOBAL_LIST_INIT(admin_verbs_admin, world.AVerbsAdmin()) /client/proc/check_antagonists, /*shows all antags*/ /datum/admins/proc/access_news_network, /*allows access of newscasters*/ /client/proc/jumptocoord, /*we ghost and jump to a coordinate*/ + /client/proc/getcurrentlogs, /*for accessing server logs for the current round*/ /client/proc/Getmob, /*teleports a mob to our location*/ /client/proc/Getkey, /*teleports a mob with a certain ckey to our location*/ // /client/proc/sendmob, /*sends a mob somewhere*/ -Removed due to it needing two sorting procs to work, which were executed every time an admin right-clicked. ~Errorage @@ -56,7 +57,6 @@ GLOBAL_LIST_INIT(admin_verbs_admin, world.AVerbsAdmin()) /client/proc/cmd_admin_create_centcom_report, /client/proc/cmd_change_command_name, /client/proc/cmd_admin_check_player_exp, /* shows players by playtime */ - /client/proc/toggle_antag_hud, /*toggle display of the admin antag hud*/ /client/proc/toggle_combo_hud, // toggle display of the combination pizza antag and taco sci/med/eng hud /client/proc/toggle_AI_interact, /*toggle admin ability to interact with machines as an AI*/ /client/proc/open_shuttle_manipulator, /* Opens shuttle manipulator UI */ @@ -228,7 +228,6 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( /client/proc/admin_change_sec_level, /client/proc/toggle_nuke, /client/proc/cmd_display_del_log, - /client/proc/toggle_antag_hud, /client/proc/toggle_combo_hud, /client/proc/debug_huds, /client/proc/cmd_admin_man_up, //CIT CHANGE - adds man up verb @@ -622,7 +621,7 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( return if(has_antag_hud()) - toggle_antag_hud() + toggle_combo_hud() holder.deactivate() diff --git a/code/modules/admin/fun_balloon.dm b/code/modules/admin/fun_balloon.dm index 6ce6188590..b5dfbf7817 100644 --- a/code/modules/admin/fun_balloon.dm +++ b/code/modules/admin/fun_balloon.dm @@ -119,21 +119,13 @@ /obj/effect/forcefield/arena_shuttle name = "portal" + timeleft = 0 var/list/warp_points /obj/effect/forcefield/arena_shuttle/Initialize() . = ..() - warp_points = get_area_turfs(/area/shuttle/escape) - for(var/thing in warp_points) - CHECK_TICK - var/turf/T = thing - if(istype(T.loc, /area/shuttle/escape/backup)) - warp_points -= T - continue - for(var/atom/movable/TAM in T) - if(TAM.density && TAM.anchored) - warp_points -= T - break + for(var/obj/effect/landmark/shuttle_arena_safe/exit in GLOB.landmarks_list) + warp_points += exit /obj/effect/forcefield/arena_shuttle/CollidedWith(atom/movable/AM) if(!isliving(AM)) @@ -143,7 +135,7 @@ if(L.pulling && istype(L.pulling, /obj/item/bodypart/head)) to_chat(L, "Your offering is accepted. You may pass.") qdel(L.pulling) - var/turf/LA = pick(warp_points) + var/turf/LA = get_turf(pick(warp_points)) L.forceMove(LA) L.hallucination = 0 to_chat(L, "The battle is won. Your bloodlust subsides.") @@ -163,6 +155,7 @@ /obj/effect/forcefield/arena_shuttle_entrance name = "portal" + timeleft = 0 var/list/warp_points = list() /obj/effect/forcefield/arena_shuttle_entrance/CollidedWith(atom/movable/AM) diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index 8ddcc1b593..03bd08f750 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -80,6 +80,8 @@ body += "N - " body += "VV - " body += "TP - " + if (job == "Cyborg") + body += "BP - " body += "PM - " body += "SM - " body += "FLW - " diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index eaa8ea908c..fb5c6eb2b6 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -21,9 +21,9 @@ if(!CheckAdminHref(href, href_list)) return - + citaTopic(href, href_list) //CITADEL EDIT, MENTORS - + if(href_list["ahelp"]) if(!check_rights(R_ADMIN, TRUE)) return @@ -1921,6 +1921,16 @@ else show_traitor_panel(M) + else if(href_list["borgpanel"]) + if(!check_rights(R_ADMIN)) + return + + var/mob/M = locate(href_list["borgpanel"]) + if(!iscyborg(M)) + to_chat(usr, "This can only be used on cyborgs") + else + open_borgopanel(M) + else if(href_list["initmind"]) if(!check_rights(R_ADMIN)) return diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index a7cddae2d5..2a6b4448d2 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -398,7 +398,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) message_admins(msg) log_admin_private(msg) AddInteraction("Being handled by [key_name]") - + //Show the ticket panel /datum/admin_help/proc/TicketPanel() var/list/dat = list("Ticket #[id]") @@ -534,28 +534,6 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) new /datum/admin_help(msg, src, FALSE) -//admin proc -/client/proc/cmd_admin_ticket_panel() - set name = "Show Ticket List" - set category = "Admin" - - if(!check_rights(R_ADMIN, TRUE)) - return - - var/browse_to - - switch(input("Display which ticket list?") as null|anything in list("Active Tickets", "Closed Tickets", "Resolved Tickets")) - if("Active Tickets") - browse_to = AHELP_ACTIVE - if("Closed Tickets") - browse_to = AHELP_CLOSED - if("Resolved Tickets") - browse_to = AHELP_RESOLVED - else - return - - GLOB.ahelp_tickets.BrowseTickets(browse_to) - // // LOGGING // diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm index 779ea64640..1e96cc507e 100644 --- a/code/modules/admin/verbs/adminjump.dm +++ b/code/modules/admin/verbs/adminjump.dm @@ -10,11 +10,10 @@ return var/list/turfs = list() - for(var/area/Ar in A.related) - for(var/turf/T in Ar) - if(T.density) - continue - turfs.Add(T) + for(var/turf/T in A) + if(T.density) + continue + turfs.Add(T) var/turf/T = safepick(turfs) if(!T) diff --git a/code/modules/admin/verbs/borgpanel.dm b/code/modules/admin/verbs/borgpanel.dm new file mode 100644 index 0000000000..8a162e7794 --- /dev/null +++ b/code/modules/admin/verbs/borgpanel.dm @@ -0,0 +1,217 @@ +/datum/admins/proc/open_borgopanel(borgo in GLOB.silicon_mobs) + set category = "Admin" + set name = "Show Borg Panel" + set desc = "Show borg panel" + + if(!check_rights(R_ADMIN)) + return + + if (!istype(borgo, /mob/living/silicon/robot)) + borgo = input("Select a borg", "Select a borg", null, null) as null|anything in GLOB.silicon_mobs + if (!istype(borgo, /mob/living/silicon/robot)) + to_chat(usr, "Borg is required for borgpanel") + + var/datum/borgpanel/borgpanel = new(usr, borgo) + + borgpanel.ui_interact(usr) + + + +/datum/borgpanel + var/mob/living/silicon/robot/borg + var/user + +/datum/borgpanel/New(user, mob/living/silicon/robot/borg) + if(!istype(borg)) + CRASH("Borg panel is only available for borgs") + qdel(src) + if (istype(user, /mob)) + var/mob/M = user + if (!M.client) + CRASH("Borg panel attempted to open to a mob without a client") + src.user = M.client + else + src.user = user + src.borg = borg + +/datum/borgpanel/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.admin_state) + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "borgopanel", "Borg Panel", 700, 700, master_ui, state) + ui.open() + +/datum/borgpanel/ui_data(mob/user) + . = list() + .["borg"] = list( + "ref" = REF(borg), + "name" = "[borg]", + "emagged" = borg.emagged, + "active_module" = "[borg.module.type]", + "lawupdate" = borg.lawupdate, + "lockdown" = borg.lockcharge, + "scrambledcodes" = borg.scrambledcodes + ) + .["upgrades"] = list() + for (var/upgradetype in subtypesof(/obj/item/borg/upgrade)-/obj/item/borg/upgrade/hypospray) //hypospray is a dummy parent for hypospray upgrades + var/obj/item/borg/upgrade/upgrade = upgradetype + if (initial(upgrade.module_type) && !istype(borg.module, initial(upgrade.module_type))) // Upgrade requires a different module + continue + var/installed = FALSE + if (locate(upgradetype) in borg) + installed = TRUE + .["upgrades"] += list(list("name" = initial(upgrade.name), "installed" = installed, "type" = upgradetype)) + .["laws"] = borg.laws ? borg.laws.get_law_list(include_zeroth = TRUE) : list() + .["channels"] = list() + for (var/k in GLOB.radiochannels) + if (k == "Common") + continue + .["channels"] += list(list("name" = k, "installed" = (k in borg.radio.channels))) + .["cell"] = borg.cell ? list("missing" = FALSE, "maxcharge" = borg.cell.maxcharge, "charge" = borg.cell.charge) : list("missing" = TRUE, "maxcharge" = 1, "charge" = 0) + .["modules"] = list() + for(var/moduletype in typesof(/obj/item/robot_module)) + var/obj/item/robot_module/module = moduletype + .["modules"] += list(list( + "name" = initial(module.name), + "type" = "[module]" + )) + .["ais"] = list(list("name" = "None", "ref" = "null", "connected" = isnull(borg.connected_ai))) + for(var/mob/living/silicon/ai/ai in GLOB.ai_list) + .["ais"] += list(list("name" = ai.name, "ref" = REF(ai), "connected" = (borg.connected_ai == ai))) + + +/datum/borgpanel/ui_act(action, params) + if(..()) + return + switch (action) + if ("set_charge") + var/newcharge = input("New charge (0-[borg.cell.maxcharge]):", borg.name, borg.cell.charge) as num|null + if (newcharge) + borg.cell.charge = CLAMP(newcharge, 0, borg.cell.maxcharge) + message_admins("[key_name_admin(user)] set the charge of [key_name_admin(borg)][ADMIN_FLW(borg)] to [borg.cell.charge].") + log_admin("[key_name(user)] set the charge of [key_name(borg)] to [borg.cell.charge].") + if ("remove_cell") + QDEL_NULL(borg.cell) + message_admins("[key_name_admin(user)] deleted the cell of [key_name_admin(borg)][ADMIN_FLW(borg)].") + log_admin("[key_name(user)] deleted the cell of [key_name(borg)].") + if ("change_cell") + var/chosen = pick_closest_path(null, make_types_fancy(typesof(/obj/item/stock_parts/cell))) + if (!ispath(chosen)) + chosen = text2path(chosen) + if (chosen) + if (borg.cell) + QDEL_NULL(borg.cell) + var/new_cell = new chosen(borg) + borg.cell = new_cell + borg.cell.charge = borg.cell.maxcharge + borg.diag_hud_set_borgcell() + message_admins("[key_name_admin(user)] changed the cell of [key_name_admin(borg)][ADMIN_FLW(borg)] to [new_cell].") + log_admin("[key_name(user)] changed the cell of [key_name(borg)] to [new_cell].") + if ("toggle_emagged") + borg.SetEmagged(!borg.emagged) + if (borg.emagged) + message_admins("[key_name_admin(user)] emagged [key_name_admin(borg)][ADMIN_FLW(borg)].") + log_admin("[key_name(user)] emagged [key_name(borg)].") + else + message_admins("[key_name_admin(user)] un-emagged [key_name_admin(borg)][ADMIN_FLW(borg)].") + log_admin("[key_name(user)] un-emagged [key_name(borg)].") + if ("toggle_lawupdate") + borg.lawupdate = !borg.lawupdate + if (borg.lawupdate) + message_admins("[key_name_admin(user)] enabled lawsync on [key_name_admin(borg)][ADMIN_FLW(borg)].") + log_admin("[key_name(user)] enabled lawsync on [key_name(borg)].") + else + message_admins("[key_name_admin(user)] disabled lawsync on [key_name_admin(borg)][ADMIN_FLW(borg)].") + log_admin("[key_name(user)] disabled lawsync on [key_name(borg)].") + if ("toggle_lockdown") + borg.SetLockdown(!borg.lockcharge) + if (borg.lockcharge) + message_admins("[key_name_admin(user)] locked down [key_name_admin(borg)][ADMIN_FLW(borg)].") + log_admin("[key_name(user)] locked down [key_name(borg)].") + else + message_admins("[key_name_admin(user)] released [key_name_admin(borg)][ADMIN_FLW(borg)] from lockdown.") + log_admin("[key_name(user)] released [key_name(borg)] from lockdown.") + if ("toggle_scrambledcodes") + borg.scrambledcodes = !borg.scrambledcodes + if (borg.scrambledcodes) + message_admins("[key_name_admin(user)] enabled scrambled codes on [key_name_admin(borg)][ADMIN_FLW(borg)].") + log_admin("[key_name(user)] enabled scrambled codes on [key_name(borg)].") + else + message_admins("[key_name_admin(user)] disabled scrambled codes on [key_name_admin(borg)][ADMIN_FLW(borg)].") + log_admin("[key_name(user)] disabled scrambled codes on [key_name(borg)].") + if ("rename") + var/new_name = stripped_input(user,"What would you like to name this cyborg?","Input a name",borg.real_name,MAX_NAME_LEN) + if(!new_name) + return + message_admins("[key_name_admin(user)] renamed [key_name_admin(borg)][ADMIN_FLW(borg)] to [new_name].") + log_admin("[key_name(user)] renamed [key_name(borg)] to [new_name].") + borg.fully_replace_character_name(borg.real_name,new_name) + if ("toggle_upgrade") + var/upgradepath = text2path(params["upgrade"]) + var/obj/item/borg/upgrade/installedupgrade = locate(upgradepath) in borg + if (installedupgrade) + installedupgrade.deactivate(borg, user) + borg.upgrades -= installedupgrade + message_admins("[key_name_admin(user)] removed the [installedupgrade] upgrade from [key_name_admin(borg)][ADMIN_FLW(borg)].") + log_admin("[key_name(user)] removed the [installedupgrade] upgrade from [key_name(borg)].") + qdel(installedupgrade) + else + var/obj/item/borg/upgrade/upgrade = new upgradepath(borg) + upgrade.action(borg, user) + borg.upgrades += upgrade + message_admins("[key_name_admin(user)] added the [upgrade] borg upgrade to [key_name_admin(borg)][ADMIN_FLW(borg)].") + log_admin("[key_name(user)] added the [upgrade] borg upgrade to [key_name(borg)].") + if ("toggle_radio") + var/channel = params["channel"] + if (channel in borg.radio.channels) // We're removing a channel + if (!borg.radio.keyslot) // There's no encryption key. This shouldn't happen but we can cope + borg.radio.channels -= channel + if (channel == "Syndicate") + borg.radio.syndie = FALSE + else if (channel == "CentCom") + borg.radio.independent = FALSE + else + borg.radio.keyslot.channels -= channel + if (channel == "Syndicate") + borg.radio.keyslot.syndie = FALSE + else if (channel == "CentCom") + borg.radio.keyslot.independent = FALSE + message_admins("[key_name_admin(user)] removed the [channel] radio channel from [key_name_admin(borg)][ADMIN_FLW(borg)].") + log_admin("[key_name(user)] removed the [channel] radio channel from [key_name(borg)].") + else // We're adding a channel + if (!borg.radio.keyslot) // Assert that an encryption key exists + borg.radio.keyslot = new (borg.radio) + borg.radio.keyslot.channels[channel] = 1 + if (channel == "Syndicate") + borg.radio.keyslot.syndie = TRUE + else if (channel == "CentCom") + borg.radio.keyslot.independent = TRUE + message_admins("[key_name_admin(user)] added the [channel] radio channel to [key_name_admin(borg)][ADMIN_FLW(borg)].") + log_admin("[key_name(user)] added the [channel] radio channel to [key_name(borg)].") + borg.radio.recalculateChannels() + if ("setmodule") + var/newmodulepath = text2path(params["module"]) + if (ispath(newmodulepath)) + borg.module.transform_to(newmodulepath) + message_admins("[key_name_admin(user)] changed the module of [key_name_admin(borg)][ADMIN_FLW(borg)] to [newmodulepath].") + log_admin("[key_name(user)] changed the module of [key_name(borg)] to [newmodulepath].") + if ("slavetoai") + var/mob/living/silicon/ai/newai = locate(params["slavetoai"]) in GLOB.ai_list + if (newai && newai != borg.connected_ai) + borg.notify_ai(DISCONNECT) + if(borg.shell) + borg.undeploy() + borg.connected_ai = newai + borg.notify_ai(TRUE) + message_admins("[key_name_admin(user)] slaved [key_name_admin(borg)][ADMIN_FLW(borg)] to the AI [key_name_admin(newai)][ADMIN_FLW(newai)].") + log_admin("[key_name(user)] slaved [key_name(borg)] to the AI [key_name(newai)].") + else if (params["slavetoai"] == "null") + borg.notify_ai(DISCONNECT) + if(borg.shell) + borg.undeploy() + borg.connected_ai = null + message_admins("[key_name_admin(user)] freed [key_name_admin(borg)][ADMIN_FLW(borg)] from being slaved to an AI.") + log_admin("[key_name(user)] freed [key_name(borg)] from being slaved to an AI.") + if (borg.lawupdate) + borg.lawsync() + + . = TRUE diff --git a/code/modules/admin/verbs/buildmode.dm b/code/modules/admin/verbs/buildmode.dm index 3907c87bab..be95af9291 100644 --- a/code/modules/admin/verbs/buildmode.dm +++ b/code/modules/admin/verbs/buildmode.dm @@ -270,25 +270,20 @@ if(isturf(object) && left_click && !alt_click && !ctrl_click) var/turf/T = object if(isspaceturf(object)) - T.ChangeTurf(/turf/open/floor/plasteel) + T.PlaceOnTop(/turf/open/floor/plating) + else if(isplatingturf(object)) + T.PlaceOnTop(/turf/open/floor/plasteel) else if(isfloorturf(object)) - T.ChangeTurf(/turf/closed/wall) + T.PlaceOnTop(/turf/closed/wall) else if(iswallturf(object)) - T.ChangeTurf(/turf/closed/wall/r_wall) - T.assemble_baseturfs(initial(T.baseturfs)) + T.PlaceOnTop(/turf/closed/wall/r_wall) log_admin("Build Mode: [key_name(user)] built [T] at ([T.x],[T.y],[T.z])") return else if(right_click) log_admin("Build Mode: [key_name(user)] deleted [object] at ([object.x],[object.y],[object.z])") - if(iswallturf(object)) + if(isturf(object)) var/turf/T = object - T.ChangeTurf(/turf/open/floor/plasteel) - else if(isfloorturf(object)) - var/turf/T = object - T.ChangeTurf(/turf/open/space) - else if(istype(object, /turf/closed/wall/r_wall)) - var/turf/T = object - T.ChangeTurf(/turf/closed/wall) + T.ScrapeAway() else if(isobj(object)) qdel(object) return @@ -296,29 +291,19 @@ log_admin("Build Mode: [key_name(user)] built an airlock at ([object.x],[object.y],[object.z])") new/obj/machinery/door/airlock(get_turf(object)) else if(isturf(object) && ctrl_click && left_click) - switch(build_dir) - if(NORTH) - var/obj/structure/window/reinforced/WIN = new/obj/structure/window/reinforced(get_turf(object)) - WIN.setDir(NORTH) - if(SOUTH) - var/obj/structure/window/reinforced/WIN = new/obj/structure/window/reinforced(get_turf(object)) - WIN.setDir(SOUTH) - if(EAST) - var/obj/structure/window/reinforced/WIN = new/obj/structure/window/reinforced(get_turf(object)) - WIN.setDir(EAST) - if(WEST) - var/obj/structure/window/reinforced/WIN = new/obj/structure/window/reinforced(get_turf(object)) - WIN.setDir(WEST) - if(NORTHWEST) - var/obj/structure/window/reinforced/WIN = new/obj/structure/window/reinforced/fulltile(get_turf(object)) - WIN.setDir(NORTHWEST) + var/obj/structure/window/reinforced/window + if(build_dir == NORTHWEST) + window = new /obj/structure/window/reinforced/fulltile(get_turf(object)) + else + window = new /obj/structure/window/reinforced(get_turf(object)) + window.setDir(build_dir) log_admin("Build Mode: [key_name(user)] built a window at ([object.x],[object.y],[object.z])") if(ADV_BUILDMODE) if(left_click) if(ispath(objholder, /turf)) var/turf/T = get_turf(object) log_admin("Build Mode: [key_name(user)] modified [T] ([T.x],[T.y],[T.z]) to [objholder]") - T.ChangeTurf(objholder) + T.PlaceOnTop(objholder) else var/obj/A = new objholder (get_turf(object)) A.setDir(build_dir) diff --git a/code/modules/admin/verbs/getlogs.dm b/code/modules/admin/verbs/getlogs.dm index 062d045862..5f7b7becc6 100644 --- a/code/modules/admin/verbs/getlogs.dm +++ b/code/modules/admin/verbs/getlogs.dm @@ -4,7 +4,17 @@ set desc = "View/retrieve logfiles." set category = "Admin" - var/path = browse_files("data/logs/") + browseserverlogs() + +/client/proc/getcurrentlogs() + set name = "Get Current Logs" + set desc = "View/retrieve logfiles for the current round." + set category = "Admin" + + browseserverlogs("[GLOB.log_directory]/") + +/client/proc/browseserverlogs(path = "data/logs/") + path = browse_files(path) if(!path) return @@ -22,4 +32,4 @@ else return to_chat(src, "Attempting to send [path], this may take a fair few minutes if the file is very large.") - return + return \ No newline at end of file diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index c1061aff5d..83d4f64748 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -1001,25 +1001,6 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits "} usr << browse(dat, "window=dressup;size=550x600") -/client/proc/toggle_antag_hud() - set category = "Admin" - set name = "Toggle AntagHUD" - set desc = "Toggles the Admin AntagHUD" - - if(!check_rights(R_ADMIN)) - return - - var/adding_hud = !has_antag_hud() - - for(var/datum/atom_hud/H in GLOB.huds) - if(istype(H, /datum/atom_hud/antag)) - (adding_hud) ? H.add_hud_to(usr) : H.remove_hud_from(usr) - - to_chat(usr, "You toggled your admin antag HUD [adding_hud ? "ON" : "OFF"].") - message_admins("[key_name_admin(usr)] toggled their admin antag HUD [adding_hud ? "ON" : "OFF"].") - log_admin("[key_name(usr)] toggled their admin antag HUD [adding_hud ? "ON" : "OFF"].") - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Antag HUD", "[adding_hud ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - /client/proc/toggle_combo_hud() set category = "Admin" set name = "Toggle Combo HUD" diff --git a/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm b/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm index cb61eec921..69af4bf584 100644 --- a/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm +++ b/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm @@ -120,6 +120,7 @@ health = maxHealth name = "blob zombie" desc = "A shambling corpse animated by the blob." + mob_biotypes += MOB_HUMANOID melee_damage_lower += 8 melee_damage_upper += 11 movement_type = GROUND diff --git a/code/modules/antagonists/borer/borer.dm b/code/modules/antagonists/borer/borer.dm deleted file mode 100644 index 4bcbaa455e..0000000000 --- a/code/modules/antagonists/borer/borer.dm +++ /dev/null @@ -1,1099 +0,0 @@ -/mob/living/captive_brain - name = "host brain" - real_name = "host brain" - -/mob/living/captive_brain/say(var/message) - - if(client) - if(client.prefs.muted & MUTE_IC) - to_chat(src, "You cannot speak in IC (muted).") - return - if(client.handle_spam_prevention(message,MUTE_IC)) - return - - if(isborer(loc)) - - message = sanitize(message) - if(!message) - return - log_say("[key_name(src)] : [message]") - if(stat == 2) - return say_dead(message) - - var/mob/living/simple_animal/borer/B = loc - to_chat(src, "You whisper silently, \"[message]\"") - to_chat(B.victim, "The captive mind of [src] whispers, \"[message]\"") - - for (var/mob/M in GLOB.player_list) - if(isnewplayer(M)) - continue - else if(M.stat == 2 && M.client.prefs.toggles & CHAT_GHOSTEARS) - to_chat(M, "Thought-speech, [src] -> [B.truename]: [message]") - -/mob/living/captive_brain/emote(var/message) - return - -/mob/living/captive_brain/resist() - - var/mob/living/simple_animal/borer/B = loc - - to_chat(src, "You begin doggedly resisting the parasite's control (this will take approximately 40 seconds).") - to_chat(B.victim, "You feel the captive mind of [src] begin to resist your control.") - - var/delay = rand(150,250) + B.victim.getBrainLoss() - addtimer(CALLBACK(src, .proc/return_control, src.loc), delay) - -/mob/living/captive_brain/proc/return_control(mob/living/simple_animal/borer/B) - if(!B || !B.controlling) - return - - B.victim.adjustBrainLoss(rand(5,10)) - to_chat(src, "With an immense exertion of will, you regain control of your body!") - to_chat(B.victim, "You feel control of the host brain ripped from your grasp, and retract your probosci before the wild neural impulses can damage you.") - B.detatch() - -GLOBAL_LIST_EMPTY(borers) -GLOBAL_VAR_INIT(total_borer_hosts_needed, 10) - -/mob/living/simple_animal/borer - name = "cortical borer" - real_name = "cortical borer" - desc = "A small, quivering, slug-like creature." - icon = 'icons/mob/borer.dmi' - icon_state = "brainslug" - icon_living = "brainslug" - icon_dead = "brainslug_dead" - health = 20 - maxHealth = 20 - melee_damage_lower = 5 - melee_damage_upper = 5 - stop_automated_movement = TRUE - attacktext = "chomps" - attack_sound = 'sound/weapons/bite.ogg' - pass_flags = PASSTABLE | PASSMOB - mob_size = MOB_SIZE_SMALL - faction = list("creature") - ventcrawler = VENTCRAWLER_ALWAYS - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 - maxbodytemp = 1500 - - var/generation = 1 - var/static/list/borer_names = list( - "Primary", "Secondary", "Tertiary", "Quaternary", "Quinary", "Senary", - "Septenary", "Octonary", "Novenary", "Decenary", "Undenary", "Duodenary", - ) - - var/mob/living/carbon/victim = null - var/mob/living/captive_brain/host_brain = null - var/truename - var/docile = FALSE - var/bonding = FALSE - var/controlling = FALSE - var/chemicals = 10 - var/used_dominate - var/borer_chems = list() - var/leaving = FALSE - var/hiding = FALSE - var/waketimerid = null - - var/docile_chem = "sugar" - var/list/wakeup_objectives = list() //Used to store objectives until the borer wakes up - - var/datum/action/innate/borer/talk_to_host/talk_to_host_action = new - var/datum/action/innate/borer/infest_host/infest_host_action = new - var/datum/action/innate/borer/toggle_hide/toggle_hide_action = new - var/datum/action/innate/borer/talk_to_borer/talk_to_borer_action = new - var/datum/action/innate/borer/talk_to_brain/talk_to_brain_action = new - var/datum/action/innate/borer/take_control/take_control_action = new - var/datum/action/innate/borer/give_back_control/give_back_control_action = new - var/datum/action/innate/borer/leave_body/leave_body_action = new - var/datum/action/innate/borer/make_chems/make_chems_action = new - var/datum/action/innate/borer/make_larvae/make_larvae_action = new - var/datum/action/innate/borer/freeze_victim/freeze_victim_action = new - var/datum/action/innate/borer/punish_victim/punish_victim_action = new - var/datum/action/innate/borer/jumpstart_host/jumpstart_host_action = new - - var/is_team_borer = TRUE - var/borer_alert = "Become a cortical borer? (Warning, You can no longer be cloned!)" - -/mob/living/simple_animal/borer/Initialize(mapload, gen=1) - ..() - generation = gen - if(is_team_borer) - notify_ghosts("A cortical borer has been created in [get_area(src)]!", enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK) - real_name = "Cortical Borer [rand(1000,9999)]" - truename = "[borer_names[min(generation, borer_names.len)]] [rand(1000,9999)]" - borer_chems += /datum/borer_chem/epinephrine - borer_chems += /datum/borer_chem/leporazine - borer_chems += /datum/borer_chem/mannitol - borer_chems += /datum/borer_chem/bicaridine - borer_chems += /datum/borer_chem/kelotane - borer_chems += /datum/borer_chem/charcoal - borer_chems += /datum/borer_chem/methamphetamine - borer_chems += /datum/borer_chem/salbutamol - borer_chems += /datum/borer_chem/spacedrugs - //borer_chems += /datum/borer_chem/creagent - borer_chems += /datum/borer_chem/ethanol - borer_chems += /datum/borer_chem/rezadone - borer_chems += /datum/borer_chem/crocin - borer_chems += /datum/borer_chem/camphor - - GLOB.borers += src - - GrantBorerActions() - -/mob/living/simple_animal/borer/Destroy() - GLOB.borers -= src - - host_brain = null - victim = null - - QDEL_NULL(talk_to_host_action) - QDEL_NULL(infest_host_action) - QDEL_NULL(toggle_hide_action) - QDEL_NULL(talk_to_borer_action) - QDEL_NULL(talk_to_brain_action) - QDEL_NULL(take_control_action) - QDEL_NULL(give_back_control_action) - QDEL_NULL(leave_body_action) - QDEL_NULL(make_chems_action) - QDEL_NULL(make_larvae_action) - QDEL_NULL(freeze_victim_action) - QDEL_NULL(punish_victim_action) - QDEL_NULL(jumpstart_host_action) - - return ..() - -/mob/living/simple_animal/borer/Topic(href, href_list)//not entirely sure if this is even required - if(href_list["ghostjoin"]) - var/mob/dead/observer/ghost = usr - if(istype(ghost)) - attack_ghost(ghost) - -/mob/living/simple_animal/borer/attack_ghost(mob/user) - if(jobban_isbanned(user, ROLE_BORER) || jobban_isbanned(user, "Syndicate")) - return - if(key) - return - if(stat != CONSCIOUS) - return - var/be_borer = alert(borer_alert,,"Yes","No") - if(be_borer == "No" || !src || QDELETED(src)) - return - if(key) - return - transfer_personality(user.client) - -/mob/living/simple_animal/borer/Stat() - ..() - - if(statpanel("Status")) - stat(null, "Chemicals: [chemicals]") - - src << output(chemicals, "ViewBorer\ref[src]Chems.browser:update_chemicals") - -/mob/living/simple_animal/borer/verb/Communicate() - set category = "Borer" - set name = "Converse with Host" - set desc = "Send a silent message to your host." - - if(!victim) - to_chat(src, "You do not have a host to communicate with!") - return - - if(stat) - to_chat(src, "You cannot do that in your current state.") - return - - var/input = stripped_input(src, "Please enter a message to tell your host.", "Borer", null) - if(!input) - return - - if(src && !QDELETED(src) && !QDELETED(victim)) - var/say_string = (docile) ? "slurs" :"states" - if(victim) - to_chat(victim, "[truename] [say_string]: [input]") - log_say("Borer Communication: [key_name(src)] -> [key_name(victim)] : [input]") - for(var/M in GLOB.dead_mob_list) - if(isobserver(M)) - var/rendered = "Borer Communication from [truename] : [input]" - var/link = FOLLOW_LINK(M, src) - to_chat(M, "[link] [rendered]") - to_chat(src, "[truename] [say_string]: [input]") - victim.verbs += /mob/living/proc/borer_comm - talk_to_borer_action.Grant(victim) - -/mob/living/proc/borer_comm() - set name = "Converse with Borer" - set category = "Borer" - set desc = "Communicate mentally with your borer." - - - var/mob/living/simple_animal/borer/B = has_brain_worms() - if(!B) - return - - var/input = stripped_input(src, "Please enter a message to tell the borer.", "Message", null) - if(!input) - return - - to_chat(B, "[src] says: [input]") - log_say("Borer Communication: [key_name(src)] -> [key_name(B)] : [input]") - - for(var/M in GLOB.dead_mob_list) - if(isobserver(M)) - var/rendered = "Borer Communication from [src] : [input]" - var/link = FOLLOW_LINK(M, src) - to_chat(M, "[link] [rendered]") - to_chat(src, "[src] says: [input]") - -/mob/living/proc/trapped_mind_comm() - set name = "Converse with Trapped Mind" - set category = "Borer" - set desc = "Communicate mentally with the trapped mind of your host." - - - var/mob/living/simple_animal/borer/B = has_brain_worms() - if(!B || !B.host_brain) - return - var/mob/living/captive_brain/CB = B.host_brain - var/input = stripped_input(src, "Please enter a message to tell the trapped mind.", "Message", null) - if(!input) - return - - to_chat(CB, "[B.truename] says: [input]") - log_say("Borer Communication: [key_name(B)] -> [key_name(CB)] : [input]") - - for(var/M in GLOB.dead_mob_list) - if(isobserver(M)) - var/rendered = "Borer Communication from [B] : [input]" - var/link = FOLLOW_LINK(M, src) - to_chat(M, "[link] [rendered]") - to_chat(src, "[B.truename] says: [input]") - -/mob/living/simple_animal/borer/Life() - - ..() - - if(victim) - if(stat != DEAD) - if(victim.stat == DEAD) - chemicals++ - else if(chemicals < 250) - chemicals+=2 - chemicals = min(250, chemicals) - - - if(stat != DEAD && victim.stat != DEAD) - - if(victim.reagents.has_reagent(docile_chem)) - if(!docile || waketimerid) - if(controlling) - to_chat(victim, "You feel the soporific flow of [docile_chem] in your host's blood, lulling you into docility.") - else - to_chat(src, "You feel the soporific flow of [docile_chem] in your host's blood, lulling you into docility.") - if(waketimerid) - deltimer(waketimerid) - waketimerid = null - docile = TRUE - else - if(docile && !waketimerid) - if(controlling) - to_chat(victim, "You start shaking off your lethargy as the [docile_chem] leaves your host's blood. This will take about 10 seconds...") - else - to_chat(src, "You start shaking off your lethargy as the [docile_chem] leaves your host's blood. This will take about 10 seconds...") - - waketimerid = addtimer(CALLBACK(src, "wakeup"), 10, TIMER_STOPPABLE) - if(controlling) - - if(docile) - to_chat(victim, "You are feeling far too docile to continue controlling your host...") - victim.release_control() - return - - if(prob(5)) - victim.adjustBrainLoss(rand(1,2)) - - if(prob(victim.getBrainLoss()/10)) - victim.say("*[pick(list("blink","blink_r","choke","aflap","drool","twitch","twitch_s","gasp"))]") - -/mob/living/simple_animal/borer/proc/wakeup() - if(controlling) - to_chat(victim, "You finish shaking off your lethargy.") - else - to_chat(src, "You finish shaking off your lethargy.") - docile = FALSE - if(waketimerid) - waketimerid = null - -/mob/living/simple_animal/borer/say(message) - if(dd_hasprefix(message, ";")) - message = copytext(message,2) - for(var/borer in GLOB.borers) - to_chat(borer, "Cortical Link: [truename] sings, \"[message]\"") - for(var/mob/D in GLOB.dead_mob_list) - to_chat(D, "Cortical Link: [truename] sings, \"[message]\"") - return - if(!victim) - to_chat(src, "You cannot speak without a host!") - return - if(message == "") - return - -/mob/living/simple_animal/borer/UnarmedAttack(atom/A) - if(isliving(A)) - healthscan(usr, A) - chemscan(usr, A) - -/mob/living/simple_animal/borer/ex_act() - if(victim) - return - - ..() - -/mob/living/simple_animal/borer/verb/infect_victim() - set name = "Infest" - set category = "Borer" - set desc = "Infest a suitable humanoid host." - - if(victim) - to_chat(src, "You are already within a host.") - - if(stat == DEAD) - return - - var/list/choices = list() - for(var/mob/living/carbon/H in view(1,src)) - if(H!=src && Adjacent(H)) - choices += H - - if(!choices.len) - return - var/mob/living/carbon/H = choices.len > 1 ? input(src,"Who do you wish to infest?") in null|choices : choices[1] - if(!H || !src) - return - - if(!Adjacent(H)) - return FALSE - - if(stat != CONSCIOUS) - to_chat(src, "You cannot do that in your current state.") - return FALSE - - if(H.has_brain_worms()) - to_chat(src, "[victim] is already infested!") - return - - to_chat(src, "You slither up [H] and begin probing at their ear canal...") - if(!do_mob(src, H, 30)) - to_chat(src, "As [H] moves away, you are dislodged and fall to the ground.") - return - - if(!H || !src) - return - - Infect(H) - -/mob/living/simple_animal/borer/proc/Infect(mob/living/carbon/C) - - if(!C) - return - - if(C.has_brain_worms()) - to_chat(src, "[C] is already infested!") - return - - if(!C.key || !C.mind) - to_chat(src, "[C]'s mind seems unresponsive. Try someone else!") - return - - if(C && C.dna && istype(C.dna.species, /datum/species/skeleton)) - to_chat(src, "[C] does not possess the vital systems needed to support us.") - return - - victim = C - forceMove(victim) - - - RemoveBorerActions() - GrantInfestActions() - - log_game("[src]/([src.ckey]) has infested [victim]/([victim.ckey]") - -/mob/living/simple_animal/borer/verb/secrete_chemicals() - set category = "Borer" - set name = "Secrete Chemicals" - set desc = "Push some chemicals into your host's bloodstream." - - if(!victim) - to_chat(src, "You are not inside a host body.") - return - - if(stat != CONSCIOUS) - to_chat(src, "You cannot secrete chemicals in your current state.") - - if(docile) - to_chat(src, "You are feeling far too docile to do that.") - return - - var content = "" - content += "

Chemicals: [chemicals]

" - - content += "" - - for(var/datum in typesof(/datum/borer_chem)) - var/datum/borer_chem/C = new datum() - if(C.chemname) - content += "" - - content += "
[C.chemname] ([C.chemuse])

[C.chem_desc]

" - - var/html = get_html_template(content) - - usr << browse(null, "window=ViewBorer\ref[src]Chems;size=600x800") - usr << browse(html, "window=ViewBorer\ref[src]Chems;size=600x800") - - return - -/mob/living/simple_animal/borer/verb/hide() - set category = "Borer" - set name = "Hide" - set desc = "Become invisible to the common eye." - - if(victim) - to_chat(src, "You cannot do this while you're inside a host.") - - if(stat != CONSCIOUS) - return - - if(!hiding) - layer = LATTICE_LAYER - visible_message("[src] scurries to the ground!", \ - "You are now hiding.") - hiding = TRUE - else - layer = MOB_LAYER - visible_message("[src] slowly peaks up from the ground...", \ - "You stop hiding.") - hiding = FALSE - -/mob/living/simple_animal/borer/verb/dominate_victim() - set category = "Borer" - set name = "Paralyze Victim" - set desc = "Freeze the limbs of a potential host with supernatural fear." - - if(world.time - used_dominate < 150) - to_chat(src, "You cannot use that ability again so soon.") - return - - if(victim) - to_chat(src, "You cannot do that from within a host body.") - return - - if(stat != CONSCIOUS) - to_chat(src, "You cannot do that in your current state.") - return - - var/list/choices = list() - for(var/mob/living/carbon/C in view(1,src)) - if(C.stat == CONSCIOUS) - choices += C - - if(!choices.len) - return - var/mob/living/carbon/M = choices.len > 1 ? input(src,"Who do you wish to dominate?") in null|choices : choices[1] - - - if(!M || !src || stat != CONSCIOUS || victim || (world.time - used_dominate < 150)) - return - if(!Adjacent(M)) - return - - if(M.has_brain_worms()) - to_chat(src, "You cannot paralyze someone who is already infested!") - return - - layer = MOB_LAYER - - to_chat(src, "You focus your psychic lance on [M] and freeze their limbs with a wave of terrible dread.") - to_chat(M, "You feel a creeping, horrible sense of dread come over you, freezing your limbs and setting your heart racing.") - M.Stun(60) - - used_dominate = world.time - -/mob/living/simple_animal/borer/verb/release_victim() - set category = "Borer" - set name = "Release Host" - set desc = "Slither out of your host." - - if(!victim) - to_chat(src, "You are not inside a host body.") - return - - if(stat != CONSCIOUS) - to_chat(src, "You cannot leave your host in your current state.") - - if(leaving) - leaving = FALSE - to_chat(src, "You decide against leaving your host.") - return - - to_chat(src, "You begin disconnecting from [victim]'s synapses and prodding at their internal ear canal.") - - if(victim.stat != DEAD) - to_chat(victim, "An odd, uncomfortable pressure begins to build inside your skull, behind your ear...") - - leaving = TRUE - - addtimer(CALLBACK(src, .proc/release_host), 100) - -/mob/living/simple_animal/borer/proc/release_host() - if(!victim || !src || QDELETED(victim) || QDELETED(src)) - return - if(!leaving) - return - if(controlling) - return - - if(stat != CONSCIOUS) - to_chat(src, "You cannot release your host in your current state.") - return - - to_chat(src, "You wiggle out of [victim]'s ear and plop to the ground.") - if(victim.mind) - to_chat(victim, "Something slimy wiggles out of your ear and plops to the ground!") - to_chat(victim, "As though waking from a dream, you shake off the insidious mind control of the brain worm. Your thoughts are your own again.") - - leaving = FALSE - - leave_victim() - -/mob/living/simple_animal/borer/proc/leave_victim() - if(!victim) - return - - if(controlling) - detatch() - - GrantBorerActions() - RemoveInfestActions() - - forceMove(get_turf(victim)) - - reset_perspective(null) - machine = null - - victim.reset_perspective(null) - victim.machine = null - - var/mob/living/V = victim - V.verbs -= /mob/living/proc/borer_comm - talk_to_borer_action.Remove(victim) - victim = null - return - -/mob/living/simple_animal/borer/verb/jumpstart() - set category = "Borer" - set name = "Jumpstart Host" - set desc = "Bring your host back to life." - - if(!victim) - to_chat(src, "You need a host to be able to use this.") - return - - if(docile) - to_chat(src, "You are feeling too docile to use this!") - return - - if(victim.stat != DEAD) - to_chat(src, "Your host is already alive!") - return - - if(chemicals < 250) - to_chat(src, "You need 250 chemicals to use this!") - return - - if(victim.stat == DEAD) - victim.tod = null - victim.setToxLoss(0) - victim.setOxyLoss(0) - victim.setCloneLoss(0) - victim.SetUnconscious(0) - victim.SetStun(0) - victim.SetKnockdown(0) - victim.radiation = 0 - victim.heal_overall_damage(victim.getBruteLoss(), victim.getFireLoss()) - victim.reagents.clear_reagents() - if(ishuman(victim)) - var/mob/living/carbon/human/H = victim - H.restore_blood() - H.remove_all_embedded_objects() - victim.revive() - log_game("[src]/([src.ckey]) has revived [victim]/([victim.ckey]") - chemicals -= 250 - to_chat(src, "You send a jolt of energy to your host, reviving them!") - victim.grab_ghost(force = TRUE) //brings the host back, no eggscape - to_chat(victim, "You bolt upright, gasping for breath!") - -/mob/living/simple_animal/borer/verb/bond_brain() - set category = "Borer" - set name = "Assume Control" - set desc = "Fully connect to the brain of your host." - - if(!victim) - to_chat(src, "You are not inside a host body.") - return - - if(stat != CONSCIOUS) - to_chat(src, "You cannot do that in your current state.") - return - - if(docile) - to_chat(src, "You are feeling far too docile to do that.") - return - - if(victim.stat == DEAD) - to_chat(src, "This host lacks enough brain function to control.") - return - - if(bonding) - bonding = FALSE - to_chat(src, "You stop attempting to take control of your host.") - return - - to_chat(src, "You begin delicately adjusting your connection to the host brain...") - - if(QDELETED(src) || QDELETED(victim)) - return - - bonding = TRUE - - var/delay = 200+(victim.getBrainLoss()*5) - addtimer(CALLBACK(src, .proc/assume_control), delay) - -/mob/living/simple_animal/borer/proc/assume_control() - if(!victim || !src || controlling || victim.stat == DEAD) - return - if(!bonding) - return - if(docile) - to_chat(src, "You are feeling far too docile to do that.") - return - if(is_servant_of_ratvar(victim) || iscultist(victim) || victim.isloyal()) - to_chat(src, "[victim]'s mind seems to be blocked by some unknown force!") - return - - else - - log_game("[src]/([src.ckey]) assumed control of [victim]/([victim.ckey] with borer powers.") - to_chat(src, "You plunge your probosci deep into the cortex of the host brain, interfacing directly with their nervous system.") - to_chat(victim, "You feel a strange shifting sensation behind your eyes as an alien consciousness displaces yours.") - - // host -> brain - var/h2b_id = victim.computer_id - var/h2b_ip= victim.lastKnownIP - victim.computer_id = null - victim.lastKnownIP = null - - qdel(host_brain) - host_brain = new(src) - - host_brain.ckey = victim.ckey - - host_brain.name = victim.name - - if(victim.mind) - host_brain.mind = victim.mind - - if(!host_brain.computer_id) - host_brain.computer_id = h2b_id - - if(!host_brain.lastKnownIP) - host_brain.lastKnownIP = h2b_ip - - to_chat(host_brain, "You are trapped in your own mind. You feel that there must be a way to resist!") - - // self -> host - var/s2h_id = src.computer_id - var/s2h_ip= src.lastKnownIP - src.computer_id = null - src.lastKnownIP = null - - victim.ckey = src.ckey - victim.mind = src.mind - - if(!victim.computer_id) - victim.computer_id = s2h_id - - if(!victim.lastKnownIP) - victim.lastKnownIP = s2h_ip - - bonding = FALSE - controlling = TRUE - - victim.verbs += /mob/living/carbon/proc/release_control - if(is_team_borer) - victim.verbs += /mob/living/carbon/proc/spawn_larvae - victim.verbs -= /mob/living/proc/borer_comm - victim.verbs += /mob/living/proc/trapped_mind_comm - GrantControlActions() - talk_to_borer_action.Remove(victim) - - victim.med_hud_set_status() - -/mob/living/simple_animal/borer/verb/punish() - set category = "Borer" - set name = "Punish" - set desc = "Punish your victim." - - if(!victim) - to_chat(src, "You are not inside a host body.") - return - - if(stat != CONSCIOUS) - to_chat(src, "You cannot do that in your current state.") - return - - if(docile) - to_chat(src, "You are feeling far too docile to do that.") - return - - if(chemicals < 75) - to_chat(src, "You need 75 chems to punish your host.") - return - - var/punishment = input("Select a punishment:.", "Punish") as null|anything in list("Blindness","Deafness","Stun") - - if(!punishment) - return - - if(chemicals < 75) - to_chat(src, "You need 75 chems to punish your host.") - return - - switch(punishment) //Hardcoding this stuff. - if("Blindness") - victim.blind_eyes(4) - to_chat(victim, "Your vision fades away suddenly, as your borer robs you of your sight.") - if("Deafness") - victim.minimumDeafTicks(40) - to_chat(victim, "Your hearing fades away suddenly, as your borer robs you of your hearing.") - if("Stun") - victim.Knockdown(100) - to_chat(victim, "You are wracked with unbearable pain, as your borer takes control of your pain-center!") - - log_game("[src]/([src.ckey]) punished [victim]/([victim.ckey] with [punishment]") - - chemicals -= 75 - - -/mob/living/carbon/proc/release_control() - - set category = "Borer" - set name = "Release Control" - set desc = "Release control of your host's body." - - var/mob/living/simple_animal/borer/B = has_brain_worms() - if(B && B.host_brain) - to_chat(src, "You withdraw your probosci, releasing control of [B.host_brain]") - - B.detatch() - -//Check for brain worms in head. -/mob/proc/has_brain_worms() - - for(var/I in contents) - if(isborer(I)) - return I - - return FALSE - -/mob/living/carbon/proc/spawn_larvae() - set category = "Borer" - set name = "Reproduce" - set desc = "Spawn several young." - - var/mob/living/simple_animal/borer/B = has_brain_worms() - - if(isbrain(src)) - to_chat(src, "You need a mouth to be able to do this.") - return - if(!B) - return - - if(B.chemicals >= 200) - visible_message("[src] heaves violently, expelling a rush of vomit and a wriggling, sluglike creature!") - B.chemicals -= 200 - - new /obj/effect/decal/cleanable/vomit(get_turf(src)) - playsound(loc, 'sound/effects/splat.ogg', 50, 1) - var/mob/living/simple_animal/borer/Baby = new /mob/living/simple_animal/borer(get_turf(src), B.generation + 1) - - Baby.wakeup_objectives = src.mind.objectives //Save them for later, since we lack a mind for them right now - - log_game("[src]/([src.ckey]) has spawned a new borer via reproducing.") - else - to_chat(src, "You need 200 chemicals stored to reproduce.") - return - - -/mob/living/simple_animal/borer/proc/transfer_personality(var/client/candidate) - if(!candidate || !candidate.mob) - return - - if(!QDELETED(candidate) || !QDELETED(candidate.mob)) - var/datum/mind/M = create_borer_mind(candidate.ckey) - M.transfer_to(src) - - candidate.mob = src - ckey = candidate.ckey - - to_chat(src, "You are a cortical borer!") - to_chat(src, "You are a brain slug that worms its way into the head of its victim. Use stealth, persuasion and your powers of mind control to keep you, your host and your eventual spawn safe and warm.") - to_chat(src, "[docile_chem] nullifies your abilities, avoid it at all costs!") - to_chat(src, "You can speak to your fellow borers by prefixing your messages with ';'. Check out your Borer tab to see your abilities.") - - if(mind) - if(!(wakeup_objectives.len)) //No objectives, use default? - var/datum/objective/normal_borer/new_objective - new_objective = new /datum/objective/normal_borer - new_objective.owner = mind - new_objective.target_amount = GLOB.total_borer_hosts_needed - new_objective.explanation_text = "You must escape with at least [GLOB.total_borer_hosts_needed] borer[new_objective.target_amount > 1 ? "s" : ""] with host[new_objective.target_amount > 1 ? "s" : ""] on the shuttle." - mind.objectives += new_objective - to_chat(src, "Objective #1: [new_objective.explanation_text]") - else - mind.objectives += wakeup_objectives - var/count = 1 - for(var/datum/objective/O in mind.objectives) - to_chat(src, "Objective #[count]: [O.explanation_text]") - count++ - -/mob/living/simple_animal/borer/proc/detatch() - if(!victim || !controlling) - return - - controlling = FALSE - - victim.verbs -= /mob/living/carbon/proc/release_control - if(is_team_borer) - victim.verbs -= /mob/living/carbon/proc/spawn_larvae - victim.verbs += /mob/living/proc/borer_comm - victim.verbs -= /mob/living/proc/trapped_mind_comm - RemoveControlActions() - talk_to_borer_action.Grant(victim) - - victim.med_hud_set_status() - - if(host_brain) - - // these are here so bans and multikey warnings are not triggered on the wrong people when ckey is changed. - // computer_id and IP are not updated magically on their own in offline mobs -walter0o - - // host -> self - var/h2s_id = victim.computer_id - var/h2s_ip= victim.lastKnownIP - victim.computer_id = null - victim.lastKnownIP = null - - ckey = victim.ckey - mind = victim.mind - - - if(!computer_id) - computer_id = h2s_id - - if(!host_brain.lastKnownIP) - lastKnownIP = h2s_ip - - // brain -> host - var/b2h_id = host_brain.computer_id - var/b2h_ip= host_brain.lastKnownIP - host_brain.computer_id = null - host_brain.lastKnownIP = null - - victim.ckey = host_brain.ckey - - victim.mind = host_brain.mind - - if(!victim.computer_id) - victim.computer_id = b2h_id - - if(!victim.lastKnownIP) - victim.lastKnownIP = b2h_ip - - log_game("[src]/([src.ckey]) released control of [victim]/([victim.ckey]") - - qdel(host_brain) - -/proc/create_borer_mind(key) - var/datum/mind/M = new /datum/mind(key) - M.assigned_role = "Cortical Borer" - M.special_role = "Cortical Borer" - return M - -/mob/living/simple_animal/borer/proc/GrantBorerActions() - infest_host_action.Grant(src) - toggle_hide_action.Grant(src) - freeze_victim_action.Grant(src) - -/mob/living/simple_animal/borer/proc/RemoveBorerActions() - infest_host_action.Remove(src) - toggle_hide_action.Remove(src) - freeze_victim_action.Remove(src) - -/mob/living/simple_animal/borer/proc/GrantInfestActions() - talk_to_host_action.Grant(src) - leave_body_action.Grant(src) - take_control_action.Grant(src) - punish_victim_action.Grant(src) - make_chems_action.Grant(src) - jumpstart_host_action.Grant(src) - -/mob/living/simple_animal/borer/proc/RemoveInfestActions() - talk_to_host_action.Remove(src) - take_control_action.Remove(src) - leave_body_action.Remove(src) - punish_victim_action.Remove(src) - make_chems_action.Remove(src) - jumpstart_host_action.Remove(src) - -/mob/living/simple_animal/borer/proc/GrantControlActions() - talk_to_brain_action.Grant(victim) - give_back_control_action.Grant(victim) - make_larvae_action.Grant(victim) - -/mob/living/simple_animal/borer/proc/RemoveControlActions() - talk_to_brain_action.Remove(victim) - make_larvae_action.Remove(victim) - give_back_control_action.Remove(victim) - -/datum/action/innate/borer - background_icon_state = "bg_alien" - -/datum/action/innate/borer/talk_to_host - name = "Converse with Host" - desc = "Send a silent message to your host." - button_icon_state = "alien_whisper" - -/datum/action/innate/borer/talk_to_host/Activate() - var/mob/living/simple_animal/borer/B = owner - B.Communicate() - -/datum/action/innate/borer/infest_host - name = "Infest" - desc = "Infest a suitable humanoid host." - button_icon_state = "infest" - -/datum/action/innate/borer/infest_host/Activate() - var/mob/living/simple_animal/borer/B = owner - B.infect_victim() - -/datum/action/innate/borer/toggle_hide - name = "Toggle Hide" - desc = "Become invisible to the common eye. Toggled on or off." - button_icon_state = "borer_hiding_false" - -/datum/action/innate/borer/toggle_hide/Activate() - var/mob/living/simple_animal/borer/B = owner - B.hide() - button_icon_state = "borer_hiding_[B.hiding ? "true" : "false"]" - UpdateButtonIcon() - -/datum/action/innate/borer/talk_to_borer - name = "Converse with Borer" - desc = "Communicate mentally with your borer." - button_icon_state = "alien_whisper" - -/datum/action/innate/borer/talk_to_borer/Activate() - var/mob/living/simple_animal/borer/B = owner.has_brain_worms() - B.victim = owner - B.victim.borer_comm() - - -/datum/action/innate/borer/talk_to_brain - name = "Converse with Trapped Mind" - desc = "Communicate mentally with the trapped mind of your host." - button_icon_state = "alien_whisper" - -/datum/action/innate/borer/talk_to_brain/Activate() - var/mob/living/simple_animal/borer/B = owner.has_brain_worms() - B.victim = owner - B.victim.trapped_mind_comm() - -/datum/action/innate/borer/take_control - name = "Assume Control" - desc = "Fully connect to the brain of your host." - button_icon_state = "borer_brain" - -/datum/action/innate/borer/take_control/Activate() - var/mob/living/simple_animal/borer/B = owner - B.bond_brain() - -/datum/action/innate/borer/give_back_control - name = "Release Control" - desc = "Release control of your host's body." - button_icon_state = "borer_leave" - -/datum/action/innate/borer/give_back_control/Activate() - var/mob/living/simple_animal/borer/B = owner.has_brain_worms() - B.victim = owner - B.victim.release_control() - -/datum/action/innate/borer/leave_body - name = "Release Host" - desc = "Slither out of your host." - button_icon_state = "borer_leave" - -/datum/action/innate/borer/leave_body/Activate() - var/mob/living/simple_animal/borer/B = owner - B.release_victim() - -/datum/action/innate/borer/make_chems - name = "Secrete Chemicals" - desc = "Push some chemicals into your host's bloodstream." - icon_icon = 'icons/obj/chemical.dmi' - button_icon_state = "minidispenser" - -/datum/action/innate/borer/make_chems/Activate() - var/mob/living/simple_animal/borer/B = owner - B.secrete_chemicals() - -/datum/action/innate/borer/make_larvae - name = "Reproduce" - desc = "Spawn several young." - button_icon_state = "borer_reproduce" - -/datum/action/innate/borer/make_larvae/Activate() - var/mob/living/simple_animal/borer/B = owner.has_brain_worms() - B.victim = owner - B.victim.spawn_larvae() - -/datum/action/innate/borer/freeze_victim - name = "Paralyze Victim" - desc = "Freeze the limbs of a potential host with supernatural fear." - button_icon_state = "freeze" - -/datum/action/innate/borer/freeze_victim/Activate() - var/mob/living/simple_animal/borer/B = owner - B.dominate_victim() - -/datum/action/innate/borer/punish_victim - name = "Punish" - desc = "Punish your victim." - button_icon_state = "blind" - -/datum/action/innate/borer/punish_victim/Activate() - var/mob/living/simple_animal/borer/B = owner - B.punish() - -/datum/action/innate/borer/jumpstart_host - name = "Jumpstart Host" - desc = "Bring your host back to life." - icon_icon = 'icons/obj/items_and_weapons.dmi' - button_icon_state = "defibpaddles0" - -/datum/action/innate/borer/jumpstart_host/Activate() - var/mob/living/simple_animal/borer/B = owner - B.jumpstart() diff --git a/code/modules/antagonists/borer/borer_chemicals.dm b/code/modules/antagonists/borer/borer_chemicals.dm deleted file mode 100644 index c405468b4f..0000000000 --- a/code/modules/antagonists/borer/borer_chemicals.dm +++ /dev/null @@ -1,82 +0,0 @@ -/datum/borer_chem - var/chemname - var/chem_desc = "This is a chemical" - var/chem_message //Text sent to the host when injecting chemicals - var/chemuse = 30 - var/quantity = 10 - -/datum/borer_chem/epinephrine - chemname = "epinephrine" - chem_desc = "Stabilizes critical condition and slowly restores oxygen damage. If overdosed, it will deal toxin and oxyloss damage." - chem_message = "You feel your energy being replenished and it becomes easier to breathe!" - -/datum/borer_chem/leporazine - chemname = "leporazine" - chem_desc = "This keeps a patient's body temperature stable. High doses can allow short periods of unprotected EVA." - chemuse = 75 - chem_message = "You no longer feel heat or cold, as leporazine floods your system." - -/datum/borer_chem/mannitol - chemname = "mannitol" - chem_desc = "Heals brain damage." - chem_message = "You feel your mind focus more easily, as your system is flooded with mannitol." - -/datum/borer_chem/bicaridine - chemname = "bicaridine" - chem_desc = "Heals brute damage." - chem_message = "A wave of flesh-knitting bicaridine flows through your bloodstream." - -/datum/borer_chem/kelotane - chemname = "kelotane" - chem_desc = "Heals burn damage." - chem_message = "A stream of burn-healing kelotane spreads throughout your body." - -/datum/borer_chem/charcoal - chemname = "charcoal" - chem_desc = "Slowly heals toxin damage, will also slowly remove any other chemicals." - chem_message = "A measure of toxin-purging charcoal cleanses your bloodstream." - -/datum/borer_chem/methamphetamine - chemname = "methamphetamine" - chem_desc = "Reduces stun times, increases stamina and run speed while dealing brain damage. If overdosed it will deal toxin and brain damage." - chemuse = 50 - quantity = 9 - chem_message = "Your mind races, your heartrate skyrockets as methamphetamines enters your bloodstream!" - -/datum/borer_chem/salbutamol - chemname = "salbutamol" - chem_desc = "Heals suffocation damage." - chem_message = "Your breathing becomes lighter, as oxygen fills your lungs from the inside." - -/datum/borer_chem/spacedrugs - chemname = "space_drugs" - chem_desc = "Get your host high as a kite." - chemuse = 75 - chem_message = "You feel like you can taste the colours of the wind." - -/*/datum/borer_chem/creagent - chemname = "colorful_reagent" - chem_desc = "Change the colour of your host." - chemuse = 50 - chem_message = "Your body suddenly changes colour from the inside out."*/ - -/datum/borer_chem/ethanol - chemname = "ethanol" - chem_desc = "The most potent alcoholic 'beverage', with the fastest toxicity." - chemuse = 50 - chem_message = "You feel like you've downed a shot of 200 proof vodka." - -/datum/borer_chem/rezadone - chemname = "rezadone" - chem_desc = "Heals cellular damage." - chem_message = "You feel a warmth spread throughout your body as rezadone repairs corrupted DNA." - -/datum/borer_chem/crocin - chemname = "aphro" - chem_desc = "Increases host arousal without overdosing." - chem_message = "You feel your pulse quicken and your body begins to feel warmer." - -/datum/borer_chem/camphor - chemname = "anaphro" - chem_desc = "Decreases host arousal without overdosing." - chem_message = "Your pulse calms down and you feel more focused as the fog of lust clears." diff --git a/code/modules/antagonists/borer/borer_event.dm b/code/modules/antagonists/borer/borer_event.dm deleted file mode 100644 index 94af2f1be7..0000000000 --- a/code/modules/antagonists/borer/borer_event.dm +++ /dev/null @@ -1,49 +0,0 @@ -/datum/round_event_control/borer - name = "Borer" - typepath = /datum/round_event/borer - weight = 0 - max_occurrences = 0 - min_players = 20 //10 is MINIMUM needed, but this is not a gamemode that does well in lowpop - earliest_start = 24000 //40 min, double default timer - -/datum/round_event/borer - announceWhen = 2400 //Borers get 4 minutes till the crew tries to murder them. - var/successSpawn = 0 - - var/spawncount = 2 - -/datum/round_event/borer/setup() - spawncount = rand(2, 4) - -/datum/round_event/borer/announce() - if(successSpawn) - priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", 'sound/AI/aliens.ogg') //Borers seem like normal xenomorphs. - - -/datum/round_event/borer/start() - - var/list/vents = list() - for(var/obj/machinery/atmospherics/components/unary/vent_pump/temp_vent in GLOB.machines) - if(QDELETED(temp_vent)) - continue - if(temp_vent.loc.z == SSmapping.station_start && !temp_vent.welded) - var/datum/pipeline/temp_vent_parent = temp_vent.parents[1] - if(temp_vent_parent.other_atmosmch.len > 20) - vents += temp_vent - - if(!vents.len) - message_admins("An event attempted to spawn a borer but no suitable vents were found. Shutting down.") - return kill() - - var/total_humans = 0 - for(var/mob/living/carbon/human/H in GLOB.mob_list) - if(H.stat != DEAD) - total_humans++ - - GLOB.total_borer_hosts_needed = round(1 + total_humans/6) - - while(spawncount >= 1 && vents.len) - var/obj/vent = pick_n_take(vents) - new /mob/living/simple_animal/borer(vent.loc) - successSpawn = TRUE - spawncount-- diff --git a/code/modules/antagonists/borer/borer_html.dm b/code/modules/antagonists/borer/borer_html.dm deleted file mode 100644 index e2544a1d0b..0000000000 --- a/code/modules/antagonists/borer/borer_html.dm +++ /dev/null @@ -1,125 +0,0 @@ - -/mob/living/simple_animal/borer/proc/get_html_template(content) - var/html = {" - - - Borer Chemicals - - - - - - - -
-

Borer Chemicals

-
- - [content] - -
"} - return html \ No newline at end of file diff --git a/code/modules/antagonists/borer/borer_topic.dm b/code/modules/antagonists/borer/borer_topic.dm deleted file mode 100644 index 80efefdaf8..0000000000 --- a/code/modules/antagonists/borer/borer_topic.dm +++ /dev/null @@ -1,42 +0,0 @@ - -/mob/living/simple_animal/borer/Topic(href, href_list, hsrc) - if(href_list["borer_use_chem"]) - locate(href_list["src"]) - if(!istype(src, /mob/living/simple_animal/borer)) - return - - var/topic_chem = href_list["borer_use_chem"] - var/datum/borer_chem/C - - for(var/datum in typesof(/datum/borer_chem)) - var/datum/borer_chem/test = new datum() - if(test.chemname == topic_chem) - C = test - break - - if(!istype(C, /datum/borer_chem)) - return - - if(!C || !victim || controlling || !src || stat) - return - - if(!istype(C, /datum/borer_chem)) - return - - if(chemicals < C.chemuse) - to_chat(src, "You need [C.chemuse] chemicals stored to use this chemical!") - return - - to_chat(src, "You squirt a measure of [C.chemname] from your reservoirs into [victim]'s bloodstream.") - if(C.chemname=="aphro" || C.chemname=="anaphro") - if(victim.canbearoused) //snowflake exception as these chems interact with client-specific optional stuff :S - to_chat(victim,C.chem_message) - else - to_chat(victim,C.chem_message) - victim.reagents.add_reagent(C.chemname, C.quantity) - chemicals -= C.chemuse - log_game("[src]/([src.ckey]) has injected [C.chemname] into their host [victim]/([victim.ckey])") - - src << output(chemicals, "ViewBorer\ref[src]Chems.browser:update_chemicals") - - ..() \ No newline at end of file diff --git a/code/modules/antagonists/borer/syndi_borer.dm b/code/modules/antagonists/borer/syndi_borer.dm deleted file mode 100644 index 5a0abff216..0000000000 --- a/code/modules/antagonists/borer/syndi_borer.dm +++ /dev/null @@ -1,34 +0,0 @@ -/mob/living/simple_animal/borer/syndi_borer - var/mob/owner = null - is_team_borer = FALSE - borer_alert = "Serve as a syndicate cortical borer? (Warning, You can no longer be cloned!)" - -/mob/living/simple_animal/borer/syndi_borer/Initialize(mapload, gen=1) - ..() - real_name = "Syndicate Borer [rand(1000,9999)]" - truename = "[borer_names[min(generation, borer_names.len)]] [rand(1000,9999)]" - - GrantBorerActions() - make_larvae_action.Remove(src) - -/mob/living/simple_animal/borer/syndi_borer/GrantControlActions() - talk_to_brain_action.Grant(victim) - give_back_control_action.Grant(victim) - -/mob/living/simple_animal/borer/syndi_borer/RemoveControlActions() - talk_to_brain_action.Remove(victim) - give_back_control_action.Remove(victim) - -//Syndicate borer objective, relies on their owner getting a greentext, no matter if they themselves did anything really. -/datum/objective/syndi_borer - explanation_text = "You are a modified syndicate cortical borer, assist your owner with their objectives." - martyr_compatible = 1 - -/datum/objective/syndi_borer/check_completion() - if(target) - for(var/datum/objective/objective in target.objectives) - if(!objective.check_completion()) - return 0 - return 1 - else - return 1 //Not sure if we should greentext if we somehow don't even have an owner. \ No newline at end of file diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm index dca2a364a9..fae342e93d 100644 --- a/code/modules/antagonists/changeling/changeling.dm +++ b/code/modules/antagonists/changeling/changeling.dm @@ -367,11 +367,21 @@ if(!CTO.escape_objective_compatible) escape_objective_possible = FALSE break - - var/datum/objective/absorb/absorb_objective = new - absorb_objective.owner = owner - absorb_objective.gen_amount_goal(6, 8) - objectives += absorb_objective + var/changeling_objective = rand(1,3) + switch(changeling_objective) + if(1) + var/datum/objective/absorb/absorb_objective = new + absorb_objective.owner = owner + absorb_objective.gen_amount_goal(6, 8) + objectives += absorb_objective + if(2) + var/datum/objective/absorb_changeling/ac = new + ac.owner = owner + objectives += ac + if(3) + var/datum/objective/absorb_most/ac = new + ac.owner = owner + objectives += ac if(prob(60)) if(prob(85)) diff --git a/code/modules/antagonists/changeling/powers/absorb.dm b/code/modules/antagonists/changeling/powers/absorb.dm index 4857975d6e..c3d9d4e9f0 100644 --- a/code/modules/antagonists/changeling/powers/absorb.dm +++ b/code/modules/antagonists/changeling/powers/absorb.dm @@ -89,9 +89,16 @@ var/datum/antagonist/changeling/target_ling = target.mind.has_antag_datum(/datum/antagonist/changeling) if(target_ling)//If the target was a changeling, suck out their extra juice and objective points! + to_chat(user, "[target] was one of us. We have absorbed their power.") + target_ling.remove_changeling_powers() + changeling.geneticpoints += round(target_ling.geneticpoints/2) + target_ling.geneticpoints = 0 + target_ling.canrespec = 0 + changeling.chem_storage += round(target_ling.chem_storage/2) changeling.chem_charges += min(target_ling.chem_charges, changeling.chem_storage) + target_ling.chem_charges = 0 + target_ling.chem_storage = 0 changeling.absorbedcount += (target_ling.absorbedcount) - target_ling.stored_profiles.len = 1 target_ling.absorbedcount = 0 diff --git a/code/modules/antagonists/changeling/powers/regenerate.dm b/code/modules/antagonists/changeling/powers/regenerate.dm index 99050417b8..c86bf271d4 100644 --- a/code/modules/antagonists/changeling/powers/regenerate.dm +++ b/code/modules/antagonists/changeling/powers/regenerate.dm @@ -8,7 +8,6 @@ chemical_cost = 10 dna_cost = 0 req_stat = UNCONSCIOUS - always_keep = TRUE /obj/effect/proc_holder/changeling/regenerate/sting_action(mob/living/user) to_chat(user, "You feel an itching, both inside and \ diff --git a/code/modules/antagonists/changeling/powers/revive.dm b/code/modules/antagonists/changeling/powers/revive.dm index 673f49863b..4fb28b4904 100644 --- a/code/modules/antagonists/changeling/powers/revive.dm +++ b/code/modules/antagonists/changeling/powers/revive.dm @@ -29,7 +29,7 @@ return TRUE /obj/effect/proc_holder/changeling/revive/can_be_used_by(mob/living/user) - if((user.stat != DEAD) && !(user.has_trait(TRAIT_FAKEDEATH))) + if(user.has_trait(CHANGELING_DRAIN) || ((user.stat != DEAD) && !(user.has_trait(TRAIT_FAKEDEATH)))) var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) changeling.purchasedpowers -= src return 0 diff --git a/code/modules/antagonists/clockcult/clock_mobs/clockwork_marauder.dm b/code/modules/antagonists/clockcult/clock_mobs/clockwork_marauder.dm index 73bcd6b47f..4be5f7d4e6 100644 --- a/code/modules/antagonists/clockcult/clock_mobs/clockwork_marauder.dm +++ b/code/modules/antagonists/clockcult/clock_mobs/clockwork_marauder.dm @@ -6,6 +6,7 @@ name = "clockwork marauder" desc = "The stalwart apparition of a soldier, blazing with crimson flames. It's armed with a gladius and shield." icon_state = "clockwork_marauder" + mob_biotypes = list(MOB_INORGANIC, MOB_HUMANOID) health = 120 maxHealth = 120 force_threshold = 8 diff --git a/code/modules/antagonists/clockcult/clock_structures/stargazer.dm b/code/modules/antagonists/clockcult/clock_structures/stargazer.dm deleted file mode 100644 index 4f04fcb82b..0000000000 --- a/code/modules/antagonists/clockcult/clock_structures/stargazer.dm +++ /dev/null @@ -1,70 +0,0 @@ -#define STARGAZER_RANGE 3 //How many tiles the stargazer can see out to -#define STARGAZER_POWER 20 //How many watts will be produced per second when the stargazer sees starlight - -//Stargazer: A very fragile but cheap generator that creates power from starlight. -/obj/structure/destructible/clockwork/stargazer - name = "stargazer" - desc = "A large lantern-shaped machine made of thin brass. It looks fragile." - clockwork_desc = "A lantern-shaped generator that produces power when near starlight." - icon_state = "stargazer" - unanchored_icon = "stargazer_unwrenched" - max_integrity = 40 - construction_value = 5 - layer = WALL_OBJ_LAYER - break_message = "The stargazer's fragile body shatters into pieces!" - resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF - light_color = "#DAAA18" - var/star_light_star_bright = FALSE //If this stargazer can see starlight - -/obj/structure/destructible/clockwork/stargazer/Initialize() - . = ..() - START_PROCESSING(SSprocessing, src) - -/obj/structure/destructible/clockwork/stargazer/Destroy() - STOP_PROCESSING(SSprocessing, src) - . = ..() - -/obj/structure/destructible/clockwork/stargazer/examine(mob/user) - ..() - if(is_servant_of_ratvar(user)) - to_chat(user, "Generates [DisplayPower(STARGAZER_POWER)] per second while viewing starlight within [STARGAZER_RANGE] tiles.") - if(star_light_star_bright) - to_chat(user, "[is_servant_of_ratvar(user) ? "It can see starlight!" : "It's shining brilliantly!"]") - -/obj/structure/destructible/clockwork/stargazer/process() - star_light_star_bright = check_starlight() - if(star_light_star_bright) - adjust_clockwork_power(STARGAZER_POWER) - -/obj/structure/destructible/clockwork/stargazer/update_anchored(mob/living/user, damage) - . = ..() - star_light_star_bright = check_starlight() - -/obj/structure/destructible/clockwork/stargazer/proc/check_starlight() - var/old_status = star_light_star_bright - var/has_starlight - if(!anchored) - has_starlight = FALSE - else - for(var/turf/T in view(3, src)) - if(isspaceturf(T)) - has_starlight = TRUE - break - if(has_starlight && anchored) - var/area/A = get_area(src) - if(A.outdoors || A.map_name == "Space" || !A.blob_allowed) - has_starlight = FALSE - if(old_status != has_starlight) - if(has_starlight) - visible_message("[src] hums and shines brilliantly!") - playsound(src, 'sound/machines/clockcult/stargazer_activate.ogg', 50, TRUE) - add_overlay("stargazer_light") - set_light(1.5, 5) - else - if(anchored) //We lost visibility somehow - visible_message("[src] flickers, and falls dark.") - else - visible_message("[src] whooshes quietly as it slides into a less bulky form.") - cut_overlays() - set_light(0) - return has_starlight diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm index 80947fec16..b7f0b002ec 100644 --- a/code/modules/antagonists/cult/cult.dm +++ b/code/modules/antagonists/cult/cult.dm @@ -95,10 +95,8 @@ else to_chat(mob, "You have a [item_name] in your [where].") if(where == "backpack") - var/obj/item/storage/B = mob.back - B.orient2hud(mob) - B.show_to(mob) - return 1 + mob.back.SendSignal(COMSIG_TRY_STORAGE_SHOW, mob) + return TRUE /datum/antagonist/cult/apply_innate_effects(mob/living/mob_override) . = ..() diff --git a/code/modules/antagonists/devil/imp/imp.dm b/code/modules/antagonists/devil/imp/imp.dm index ffa3828bad..7752d0449f 100644 --- a/code/modules/antagonists/devil/imp/imp.dm +++ b/code/modules/antagonists/devil/imp/imp.dm @@ -13,6 +13,7 @@ icon = 'icons/mob/mob.dmi' icon_state = "imp" icon_living = "imp" + mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) speed = 1 a_intent = INTENT_HARM stop_automated_movement = 1 diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index 079bfb093e..34d30603d6 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -16,6 +16,7 @@ var/icon_stun = "revenant_stun" var/icon_drain = "revenant_draining" var/stasis = FALSE + mob_biotypes = list(MOB_SPIRIT) incorporeal_move = INCORPOREAL_MOVE_JAUNT invisibility = INVISIBILITY_REVENANT health = INFINITY //Revenants don't use health, they use essence instead diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm index e8eb95aa7b..9457e3a8c8 100644 --- a/code/modules/antagonists/slaughter/slaughter.dm +++ b/code/modules/antagonists/slaughter/slaughter.dm @@ -12,6 +12,7 @@ icon = 'icons/mob/mob.dmi' icon_state = "daemon" icon_living = "daemon" + mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) speed = 1 a_intent = INTENT_HARM stop_automated_movement = 1 diff --git a/code/modules/antagonists/swarmer/swarmer.dm b/code/modules/antagonists/swarmer/swarmer.dm index 1a55afa755..817cbf75c0 100644 --- a/code/modules/antagonists/swarmer/swarmer.dm +++ b/code/modules/antagonists/swarmer/swarmer.dm @@ -60,6 +60,7 @@ speak_emote = list("tones") initial_language_holder = /datum/language_holder/swarmer bubble_icon = "swarmer" + mob_biotypes = list(MOB_ROBOTIC) health = 40 maxHealth = 40 status_flags = CANPUSH diff --git a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm index 46891b420d..6322ad1584 100644 --- a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm +++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm @@ -3,7 +3,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( /obj/machinery/field/containment, - /obj/machinery/power/supermatter_shard, + /obj/machinery/power/supermatter_crystal, /obj/machinery/doomsday_device, /obj/machinery/nuclearbomb, /obj/machinery/nuclearbomb/selfdestruct, diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index 5af72b4261..1e6fdc2fd4 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -1,8 +1,8 @@ -#define WIRE_RECEIVE 1 -#define WIRE_PULSE 2 -#define WIRE_PULSE_SPECIAL 4 -#define WIRE_RADIO_RECEIVE 8 -#define WIRE_RADIO_PULSE 16 +#define WIRE_RECEIVE (1<<0) +#define WIRE_PULSE (1<<1) +#define WIRE_PULSE_SPECIAL (1<<2) +#define WIRE_RADIO_RECEIVE (1<<3) +#define WIRE_RADIO_PULSE (1<<4) /obj/item/device/assembly name = "assembly" diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 4a003ad84f..a62a448a70 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -643,10 +643,9 @@ var/area/A = get_area(src) var/new_area_danger_level = 0 - for(var/area/R in A.related) - for(var/obj/machinery/airalarm/AA in R) - if (!(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted) - new_area_danger_level = max(new_area_danger_level,AA.danger_level) + for(var/obj/machinery/airalarm/AA in A) + if (!(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted) + new_area_danger_level = max(new_area_danger_level,AA.danger_level) if(A.atmosalert(new_area_danger_level,src)) //if area was in normal state or if area was in alert state post_alert(new_area_danger_level) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index d48f0d1f93..d3dde7a18e 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -12,6 +12,7 @@ state_open = FALSE circuit = /obj/item/circuitboard/machine/cryo_tube pipe_flags = PIPING_ONE_PER_TURF | PIPING_DEFAULT_LAYER_ONLY + occupant_typecache = list(/mob/living/carbon, /mob/living/simple_animal) var/on = FALSE var/autoeject = FALSE @@ -276,7 +277,12 @@ /obj/machinery/atmospherics/components/unary/cryo_cell/MouseDrop_T(mob/target, mob/user) if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser()) return - close_machine(target) + if (target.IsKnockdown() || target.IsStun() || target.IsSleeping() || target.IsUnconscious()) + close_machine(target) + else + user.visible_message("[user] starts shoving [target] inside [src].", "You start shoving [target] inside [src].") + if (do_after(user, 25, target=target)) + close_machine(target) /obj/machinery/atmospherics/components/unary/cryo_cell/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/reagent_containers/glass)) diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 20ec34e3a0..132e750343 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -207,13 +207,13 @@ air_contents.gases[/datum/gas/oxygen][MOLES] = (O2STANDARD * maximum_pressure * filled) * air_contents.volume / (R_IDEAL_GAS_EQUATION * air_contents.temperature) air_contents.gases[/datum/gas/nitrogen][MOLES] = (N2STANDARD * maximum_pressure * filled) * air_contents.volume / (R_IDEAL_GAS_EQUATION * air_contents.temperature) -#define HOLDING 1 -#define CONNECTED 2 -#define EMPTY 4 -#define LOW 8 -#define MEDIUM 16 -#define FULL 32 -#define DANGER 64 +#define HOLDING (1<<0) +#define CONNECTED (1<<1) +#define EMPTY (1<<2) +#define LOW (1<<3) +#define MEDIUM (1<<4) +#define FULL (1<<5) +#define DANGER (1<<6) /obj/machinery/portable_atmospherics/canister/update_icon() if(stat & BROKEN) cut_overlays() diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm index 7e02048f18..37afb31a6b 100644 --- a/code/modules/cargo/exports/large_objects.dm +++ b/code/modules/cargo/exports/large_objects.dm @@ -92,7 +92,7 @@ /datum/export/large/supermatter cost = 9000 unit_name = "supermatter shard" - export_types = list(/obj/machinery/power/supermatter_shard) + export_types = list(/obj/machinery/power/supermatter_crystal/shard) // Misc /datum/export/large/iv diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index c2b0aa8a7f..8ba650241f 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -756,12 +756,12 @@ crate_name = "solar panel crate" crate_type = /obj/structure/closet/crate/engineering/electrical -/datum/supply_pack/engineering/engine/supermatter_shard +/datum/supply_pack/engineering/engine/supermatter_crystal name = "Supermatter Shard Crate" desc = "The power of the heavens condensed into a single crystal. Requires CE access to open." cost = 10000 access = ACCESS_CE - contains = list(/obj/machinery/power/supermatter_shard) + contains = list(/obj/machinery/power/supermatter_crystal/shard) crate_name = "supermatter shard crate" crate_type = /obj/structure/closet/crate/secure/engineering dangerous = TRUE diff --git a/code/modules/cargo/vg_clothing_packs.dm b/code/modules/cargo/vg_clothing_packs.dm deleted file mode 100644 index 99812627e3..0000000000 --- a/code/modules/cargo/vg_clothing_packs.dm +++ /dev/null @@ -1,34 +0,0 @@ -/* // Can't be bothered to maintain this, mostly just memes anyway. -/datum/supply_pack/misc/vidyacon - name = "Vidya-Con Surplus Crate" - cost = 3250 - contains = list(/obj/item/clothing/shoes/megaboots,/obj/item/clothing/gloves/megagloves,/obj/item/clothing/head/helmet/megahelmet, /obj/item/clothing/under/mega, - /obj/item/clothing/shoes/protoboots,/obj/item/clothing/gloves/protogloves,/obj/item/clothing/head/helmet/protohelmet,/obj/item/clothing/under/proto, - /obj/item/clothing/shoes/megaxboots,/obj/item/clothing/gloves/megaxgloves,/obj/item/clothing/head/helmet/megaxhelmet,/obj/item/clothing/under/megax, - /obj/item/clothing/shoes/joeboots,/obj/item/clothing/gloves/joegloves,/obj/item/clothing/head/helmet/joehelmet,/obj/item/clothing/under/joe, - /obj/item/clothing/under/roll, - /obj/item/clothing/head/helmet/biker,/obj/item/clothing/under/bikersuit,/obj/item/clothing/gloves/bikergloves, - /obj/item/clothing/under/jacketsuit,/obj/item/clothing/head/helmet/richard, - /obj/item/clothing/under/vault13) - crate_name = "vidya-con surplus crate" - - -datum/supply_pack/misc/memes - name = "Nanotrasen Approved Internet Humor Crate" - cost = 5000 - contains = list(/obj/item/clothing/suit/doshjacket, - /obj/item/clothing/under/squatter_outfit,/obj/item/clothing/head/squatter_hat, - /obj/item/clothing/under/cia, - /obj/item/clothing/under/russobluecamooutfit,/obj/item/clothing/head/russobluecamohat, - /obj/item/clothing/under/rottensuit,/obj/item/clothing/shoes/rottenshoes, - /obj/item/clothing/suit/raincoat) - crate_name = "nanotrasen internet humor crate" - -datum/supply_pack/misc/reenactor - name = "Historical Reanactor Crate" - cost = 17500 - contains = list(/obj/item/clothing/under/soldieruniform,/obj/item/clothing/head/stalhelm,/obj/item/clothing/suit/soldiercoat, - /obj/item/clothing/under/officeruniform,/obj/item/clothing/head/naziofficer,/obj/item/clothing/suit/officercoat, - /obj/item/clothing/head/panzer, - /obj/item/clothing/suit/russofurcoat,/obj/item/clothing/head/russofurhat,/obj/item/clothing/under/soviet) - crate_name = "historical reanactor crate" */ diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 42c92908e7..49d6c4b04a 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -92,7 +92,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( if (citadel_client_procs(href_list)) return // CITADEL End - + switch(href_list["_src_"]) if("holder") hsrc = holder @@ -391,9 +391,9 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) var/datum/verbs/menu/menuitem = GLOB.menulist[thing] if (menuitem) menuitem.Load_checked(src) - + hook_vr("client_new",list(src)) // CIT CHANGE - hook for client/New() changes - + Master.UpdateTickRate() ////////////// @@ -638,50 +638,6 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) return create_message("note", ckey, system_ckey, message, null, null, 0, 0) -/client/Click(atom/object, atom/location, control, params) - var/ab = FALSE - var/list/L = params2list(params) - if (object && object == middragatom && L["left"]) - ab = max(0, 5 SECONDS-(world.time-middragtime)*0.1) - var/mcl = CONFIG_GET(number/minute_click_limit) - if (!holder && mcl) - var/minute = round(world.time, 600) - if (!clicklimiter) - clicklimiter = new(LIMITER_SIZE) - if (minute != clicklimiter[CURRENT_MINUTE]) - clicklimiter[CURRENT_MINUTE] = minute - clicklimiter[MINUTE_COUNT] = 0 - clicklimiter[MINUTE_COUNT] += 1+(ab) - if (clicklimiter[MINUTE_COUNT] > mcl) - var/msg = "Your previous click was ignored because you've done too many in a minute." - if (minute != clicklimiter[ADMINSWARNED_AT]) //only one admin message per-minute. (if they spam the admins can just boot/ban them) - clicklimiter[ADMINSWARNED_AT] = minute - - msg += " Administrators have been informed." - if (ab) - log_game("[key_name(src)] is using the middle click aimbot exploit") - message_admins("[key_name_admin(src)] [ADMIN_FLW(usr)] [ADMIN_KICK(usr)] is using the middle click aimbot exploit") - add_system_note("aimbot", "Is using the middle click aimbot exploit") - - log_game("[key_name(src)] Has hit the per-minute click limit of [mcl] clicks in a given game minute") - message_admins("[key_name_admin(src)] [ADMIN_FLW(usr)] [ADMIN_KICK(usr)] Has hit the per-minute click limit of [mcl] clicks in a given game minute") - to_chat(src, "[msg]") - return - - var/scl = CONFIG_GET(number/second_click_limit) - if (!holder && scl) - var/second = round(world.time, 10) - if (!clicklimiter) - clicklimiter = new(LIMITER_SIZE) - if (second != clicklimiter[CURRENT_SECOND]) - clicklimiter[CURRENT_SECOND] = second - clicklimiter[SECOND_COUNT] = 0 - clicklimiter[SECOND_COUNT] += 1+(!!ab) - if (clicklimiter[SECOND_COUNT] > scl) - to_chat(src, "Your previous click was ignored because you've done too many in a second") - return - ..() - /client/proc/check_ip_intel() set waitfor = 0 //we sleep when getting the intel, no need to hold up the client connection while we sleep @@ -742,9 +698,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) verbs += /client/proc/self_playtime -#undef TOPIC_SPAM_DELAY #undef UPLOAD_LIMIT -#undef MIN_CLIENT_VERSION //checks if a client is afk //3000 frames = 5 minutes @@ -753,17 +707,6 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) return inactivity return FALSE -// Byond seemingly calls stat, each tick. -// Calling things each tick can get expensive real quick. -// So we slow this down a little. -// See: http://www.byond.com/docs/ref/info.html#/client/proc/Stat -/client/Stat() - . = ..() - if (holder) - stoplag(1) - else - stoplag(5) - //send resources to the client. It's here in its own proc so we can move it around easiliy if need be /client/proc/send_resources() #if (PRELOAD_RSC == 0) @@ -820,7 +763,6 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) /client/proc/change_view(new_size) if (isnull(new_size)) CRASH("change_view called without argument.") - //CIT CHANGES START HERE - makes change_view change DEFAULT_VIEW to 15x15 depending on preferences if(prefs && CONFIG_GET(string/default_view)) if(!prefs.widescreenpref && new_size == CONFIG_GET(string/default_view)) diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index 609d341243..03bb1eeb13 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -387,8 +387,8 @@ desc = "A pair of black shoes." permeability_coefficient = 0.05 resistance_flags = NONE - pockets = /obj/item/storage/internal/pocket/shoes armor = list("melee" = 10, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) + pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes var/datum/action/item_action/chameleon/change/chameleon_action @@ -579,16 +579,21 @@ /obj/item/storage/belt/chameleon name = "toolbelt" desc = "Holds tools." - silent = TRUE var/datum/action/item_action/chameleon/change/chameleon_action /obj/item/storage/belt/chameleon/Initialize() . = ..() + chameleon_action = new(src) chameleon_action.chameleon_type = /obj/item/storage/belt chameleon_action.chameleon_name = "Belt" chameleon_action.initialize_disguises() +/obj/item/storage/belt/chameleon/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.silent = TRUE + /obj/item/storage/belt/chameleon/emp_act(severity) chameleon_action.emp_randomise() diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 26c20d0082..9c7a86cfc2 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -28,7 +28,7 @@ var/list/user_vars_to_edit = list() //VARNAME = VARVALUE eg: "name" = "butts" var/list/user_vars_remembered = list() //Auto built by the above + dropped() + equipped() - var/obj/item/storage/internal/pocket/pockets = null + var/pocket_storage_component_path //These allow head/mask items to dynamically alter the user's hair // and facial hair, checking hair_extensions.dmi and facialhair_extensions.dmi @@ -37,17 +37,15 @@ var/dynamic_hair_suffix = ""//head > mask for head hair var/dynamic_fhair_suffix = ""//mask > head for facial hair -/obj/item/clothing/New() - ..() - if(ispath(pockets)) - pockets = new pockets(src) +/obj/item/clothing/Initialize() + . = ..() + if(ispath(pocket_storage_component_path)) + LoadComponent(pocket_storage_component_path) /obj/item/clothing/MouseDrop(atom/over_object) + . = ..() var/mob/M = usr - if(pockets && over_object == M) - return pockets.MouseDrop(over_object) - if(ismecha(M.loc)) // stops inventory actions in a mech return @@ -56,25 +54,6 @@ if(M.putItemFromInventoryInHandIfPossible(src, H.held_index)) add_fingerprint(usr) -/obj/item/clothing/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback) - if(pockets) - pockets.close_all() - return ..() - -/obj/item/clothing/attack_hand(mob/user) - if(pockets && pockets.priority && ismob(loc)) - //If we already have the pockets open, close them. - if (user.s_active == pockets) - pockets.close(user) - //Close whatever the user has open and show them the pockets. - else - if (user.s_active) - user.s_active.close(user) - pockets.orient2hud(user) - pockets.show_to(user) - else - return ..() - /obj/item/clothing/attackby(obj/item/W, mob/user, params) if(damaged_clothes && istype(W, /obj/item/stack/sheet/cloth)) var/obj/item/stack/sheet/cloth/C = W @@ -83,36 +62,12 @@ obj_integrity = max_integrity to_chat(user, "You fix the damage on [src] with [C].") return 1 - if(pockets) - var/i = pockets.attackby(W, user, params) - if(i) - return i return ..() -/obj/item/clothing/AltClick(mob/user) - if(istype(user) && user.canUseTopic(src, BE_CLOSE, ismonkey(user)) && pockets && pockets.quickdraw && pockets.contents.len) - var/obj/item/I = pockets.contents[1] - if(!I) - return - pockets.remove_from_storage(I, get_turf(src)) - - if(!user.put_in_hands(I)) - to_chat(user, "You fumble for [I] and it falls on the floor.") - return 1 - user.visible_message("[user] draws [I] from [src]!", "You draw [I] from [src].") - return 1 - else - return ..() - - /obj/item/clothing/Destroy() - if(pockets) - qdel(pockets) - pockets = null user_vars_remembered = null //Oh god somebody put REFERENCES in here? not to worry, we'll clean it up return ..() - /obj/item/clothing/dropped(mob/user) ..() if(!istype(user)) @@ -124,7 +79,6 @@ user.vars[variable] = user_vars_remembered[variable] user_vars_remembered = list() - /obj/item/clothing/equipped(mob/user, slot) ..() @@ -134,18 +88,18 @@ user_vars_remembered[variable] = user.vars[variable] user.vars[variable] = user_vars_to_edit[variable] - /obj/item/clothing/examine(mob/user) ..() if(damaged_clothes) to_chat(user, "It looks damaged!") + GET_COMPONENT(pockets, /datum/component/storage) if(pockets) var/list/how_cool_are_your_threads = list("") - if(pockets.priority) + if(pockets.attack_hand_interact) how_cool_are_your_threads += "[src]'s storage opens when clicked.\n" else how_cool_are_your_threads += "[src]'s storage opens when dragged to yourself.\n" - how_cool_are_your_threads += "[src] can store [pockets.storage_slots] item\s.\n" + how_cool_are_your_threads += "[src] can store [pockets.max_items] item\s.\n" how_cool_are_your_threads += "[src] can store items that are [weightclass2text(pockets.max_w_class)] or smaller.\n" if(pockets.quickdraw) how_cool_are_your_threads += "You can quickly remove an item from [src] using Alt-Click.\n" diff --git a/code/modules/clothing/glasses/engine_goggles.dm b/code/modules/clothing/glasses/engine_goggles.dm index 53616f4c6a..439197f285 100644 --- a/code/modules/clothing/glasses/engine_goggles.dm +++ b/code/modules/clothing/glasses/engine_goggles.dm @@ -4,6 +4,7 @@ #define MODE_MESON "meson" #define MODE_TRAY "t-ray" #define MODE_RAD "radiation" +#define MODE_SHUTTLE "shuttle" /obj/item/clothing/glasses/meson/engine name = "engineering scanner goggles" @@ -63,10 +64,13 @@ var/mob/living/carbon/human/user = loc if(user.glasses != src || !user.client) return - if(mode == MODE_TRAY) - t_ray_scan(user, 8, range) - else if(mode == MODE_RAD) - show_rads() + switch(mode) + if(MODE_TRAY) + t_ray_scan(user, 8, range) + if(MODE_RAD) + show_rads() + if(MODE_SHUTTLE) + show_shuttle() /obj/item/clothing/glasses/meson/engine/proc/show_rads() var/mob/living/carbon/human/user = loc @@ -93,6 +97,24 @@ pic.appearance = MA flick_overlay(pic, list(user.client), 8) +/obj/item/clothing/glasses/meson/engine/proc/show_shuttle() + var/mob/living/carbon/human/user = loc + var/obj/docking_port/mobile/port = SSshuttle.get_containing_shuttle(user) + if(!port) + return + var/list/shuttle_areas = port.shuttle_areas + for(var/r in shuttle_areas) + var/area/region = r + for(var/turf/place in region.contents) + if(get_dist(user, place) > 7) + continue + var/image/pic + if(isshuttleturf(place)) + pic = new('icons/turf/overlays.dmi', place, "greenOverlay", AREA_LAYER) + else + pic = new('icons/turf/overlays.dmi', place, "redOverlay", AREA_LAYER) + flick_overlay(pic, list(user.client), 8) + /obj/item/clothing/glasses/meson/engine/update_icon() icon_state = "trayson-[mode]" update_mob() @@ -115,7 +137,16 @@ modes = list(MODE_NONE = MODE_TRAY, MODE_TRAY = MODE_NONE) +/obj/item/clothing/glasses/meson/engine/shuttle + name = "shuttle region scanner" + icon_state = "trayson-shuttle" + item_state = "trayson-shuttle" + desc = "Used to see the boundaries of shuttle regions." + + modes = list(MODE_NONE = MODE_SHUTTLE, MODE_SHUTTLE = MODE_NONE) + #undef MODE_NONE #undef MODE_MESON #undef MODE_TRAY #undef MODE_RAD +#undef MODE_SHUTTLE diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 37e392b7d8..613b40d19b 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -79,9 +79,13 @@ desc = "There's only one man who can sniff out the dirty stench of crime, and he's likely wearing this hat." icon_state = "detective" var/candy_cooldown = 0 - pockets = /obj/item/storage/internal/pocket/small/detective + pocket_storage_component_path = /datum/component/storage/concrete/pockets/small/detective dog_fashion = /datum/dog_fashion/head/detective +/obj/item/clothing/head/fedora/Initialize() + . = ..() + new /obj/item/reagent_containers/food/drinks/flask/det(src) + /obj/item/clothing/head/fedora/det_hat/examine(mob/user) ..() to_chat(user, "Alt-click to take a candy corn.") diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 0e4acfe983..74d8a43347 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -187,7 +187,7 @@ item_state = "fedora" armor = list("melee" = 25, "bullet" = 5, "laser" = 25, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 50) desc = "A really cool hat if you're a mobster. A really lame hat if you're not." - pockets = /obj/item/storage/internal/pocket/small + pocket_storage_component_path = /datum/component/storage/concrete/pockets/small /obj/item/clothing/head/fedora/suicide_act(mob/user) if(user.gender == FEMALE) diff --git a/code/modules/clothing/outfits/event.dm b/code/modules/clothing/outfits/event.dm index 72edf7a358..caa473f6dc 100644 --- a/code/modules/clothing/outfits/event.dm +++ b/code/modules/clothing/outfits/event.dm @@ -26,6 +26,5 @@ var/obj/item/storage/backpack/bag = H.back var/obj/item/a_gift/gift = new(H) - while(bag.can_be_inserted(gift, 1)) - bag.handle_item_insertion(gift, 1) + while(bag.SendSignal(COMSIG_TRY_STORAGE_INSERT, gift, null, TRUE, FALSE)) gift = new(H) diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 050c2fdc87..6fdbb183a3 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -182,11 +182,11 @@ for(var/obj/item/briefcase_item in sec_briefcase) qdel(briefcase_item) for(var/i = 3 to 0 step -1) - sec_briefcase.handle_item_insertion(new /obj/item/stack/spacecash/c1000,1) - sec_briefcase.handle_item_insertion(new /obj/item/gun/energy/kinetic_accelerator/crossbow,1) - sec_briefcase.handle_item_insertion(new /obj/item/gun/ballistic/revolver/mateba,1) - sec_briefcase.handle_item_insertion(new /obj/item/ammo_box/a357,1) - sec_briefcase.handle_item_insertion(new /obj/item/grenade/plastic/x4,1) + sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/stack/spacecash/c1000, null, TRUE, TRUE) + sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/gun/energy/kinetic_accelerator/crossbow, null, TRUE, TRUE) + sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/gun/ballistic/revolver/mateba, null, TRUE, TRUE) + sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/ammo_box/a357, null, TRUE, TRUE) + sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/grenade/plastic/x4, null, TRUE, TRUE) var/obj/item/device/pda/heads/pda = H.belt pda.owner = H.real_name diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index d5e75d4bad..3dad0d464e 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -17,7 +17,7 @@ strip_delay = 70 resistance_flags = NONE permeability_coefficient = 0.05 //Thick soles, and covers the ankle - pockets = /obj/item/storage/internal/pocket/shoes + pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes /obj/item/clothing/shoes/combat/swat //overpowered boots for death squads name = "\improper SWAT boots" @@ -73,7 +73,7 @@ item_state = "clown_shoes" slowdown = SHOES_SLOWDOWN+1 item_color = "clown" - pockets = /obj/item/storage/internal/pocket/shoes/clown + pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes/clown /obj/item/clothing/shoes/clown_shoes/Initialize() . = ..() @@ -106,7 +106,7 @@ equip_delay_other = 50 resistance_flags = NONE permeability_coefficient = 0.05 //Thick soles, and covers the ankle - pockets = /obj/item/storage/internal/pocket/shoes + pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes /obj/item/clothing/shoes/jackboots/fast slowdown = -1 @@ -121,7 +121,7 @@ min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT heat_protection = FEET|LEGS max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT - pockets = /obj/item/storage/internal/pocket/shoes + pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes /obj/item/clothing/shoes/workboots name = "work boots" @@ -133,7 +133,7 @@ permeability_coefficient = 0.15 strip_delay = 40 equip_delay_other = 40 - pockets = /obj/item/storage/internal/pocket/shoes + pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes /obj/item/clothing/shoes/workboots/mining name = "mining boots" @@ -184,7 +184,7 @@ desc = "A pair of costume boots fashioned after bird talons." icon_state = "griffinboots" item_state = "griffinboots" - pockets = /obj/item/storage/internal/pocket/shoes + pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes /obj/item/clothing/shoes/bhop name = "jump boots" @@ -193,7 +193,7 @@ item_state = "jetboots" item_color = "hosred" resistance_flags = FIRE_PROOF - pockets = /obj/item/storage/internal/pocket/shoes + pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes actions_types = list(/datum/action/item_action/bhop) permeability_coefficient = 0.05 var/jumpdistance = 5 //-1 from to see the actual distance, e.g 4 goes over 3 tiles diff --git a/code/modules/clothing/spacesuits/flightsuit.dm b/code/modules/clothing/spacesuits/flightsuit.dm index adff70bd29..3a5198080f 100644 --- a/code/modules/clothing/spacesuits/flightsuit.dm +++ b/code/modules/clothing/spacesuits/flightsuit.dm @@ -823,13 +823,13 @@ if(shoes) shoes.relink_suit(src) -/obj/item/clothing/suit/space/hardsuit/flightsuit/attack_hand(mob/user) +/obj/item/clothing/suit/space/hardsuit/flightsuit/allow_attack_hand_drop(user) if(ishuman(user)) var/mob/living/carbon/human/H = user if(src == H.wear_suit && locked) usermessage("You can not take a locked hardsuit off! Unlock it first!", "boldwarning") - return - ..() + return FALSE + return ..() /obj/item/clothing/suit/space/hardsuit/flightsuit/dropped() if(deployedpack) diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm index 3d9c3c8017..05ce843ff9 100644 --- a/code/modules/clothing/under/accessories.dm +++ b/code/modules/clothing/under/accessories.dm @@ -9,15 +9,15 @@ w_class = WEIGHT_CLASS_SMALL var/above_suit = FALSE var/minimize_when_attached = TRUE // TRUE if shown as a small icon in corner, FALSE if overlayed + var/datum/component/storage/detached_pockets /obj/item/clothing/accessory/proc/attach(obj/item/clothing/under/U, user) - if(pockets) // Attach storage to jumpsuit - if(U.pockets) // storage items conflict + GET_COMPONENT(storage, /datum/component/storage) + if(storage) + if(U.SendSignal(COMSIG_CONTAINS_STORAGE)) return FALSE - - pockets.forceMove(U) - U.pockets = pockets - + U.TakeComponent(storage) + detached_pockets = storage U.attached_accessory = src forceMove(U) layer = FLOAT_LAYER @@ -41,11 +41,9 @@ return TRUE - /obj/item/clothing/accessory/proc/detach(obj/item/clothing/under/U, user) - if(pockets && pockets == U.pockets) - pockets.forceMove(src) - U.pockets = null + if(detached_pockets && detached_pockets.parent == U) + TakeComponent(detached_pockets) U.armor = U.armor.detachArmor(armor) @@ -301,14 +299,18 @@ desc = "Can protect your clothing from ink stains, but you'll look like a nerd if you're using one." icon_state = "pocketprotector" item_color = "pocketprotector" - pockets = /obj/item/storage/internal/pocket/pocketprotector + pocket_storage_component_path = /datum/component/storage/concrete/pockets/pocketprotector -/obj/item/clothing/accessory/pocketprotector/full - pockets = /obj/item/storage/internal/pocket/pocketprotector/full - -/obj/item/clothing/accessory/pocketprotector/cosmetology - pockets = /obj/item/storage/internal/pocket/pocketprotector/cosmetology +/obj/item/clothing/accessory/pocketprotector/full/Initialize() + . = ..() + new /obj/item/pen/red(src) + new /obj/item/pen(src) + new /obj/item/pen/blue(src) +/obj/item/clothing/accessory/pocketprotector/cosmetology/Initialize() + . = ..() + for(var/i in 1 to 3) + new /obj/item/lipstick/random(src) //////////////// //OONGA BOONGA// @@ -321,7 +323,6 @@ item_color = "talisman" armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 20, "bio" = 20, "rad" = 5, "fire" = 0, "acid" = 25) - /obj/item/clothing/accessory/skullcodpiece name = "skull codpiece" desc = "A skull shaped ornament, intended to protect the important things in life." diff --git a/code/modules/detectivework/evidence.dm b/code/modules/detectivework/evidence.dm index 9c98677291..d17090816c 100644 --- a/code/modules/detectivework/evidence.dm +++ b/code/modules/detectivework/evidence.dm @@ -40,9 +40,8 @@ return if(!isturf(I.loc)) //If it isn't on the floor. Do some checks to see if it's in our hands or a box. Otherwise give up. - if(istype(I.loc, /obj/item/storage)) //in a container. - var/obj/item/storage/U = I.loc - U.remove_from_storage(I, src) + if(I.loc.SendSignal(COMSIG_CONTAINS_STORAGE)) //in a container. + I.loc.SendSignal(COMSIG_TRY_STORAGE_TAKE, I, src) if(!user.dropItemToGround(I)) return diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm index 07110b5aea..09ae59503e 100644 --- a/code/modules/events/pirates.dm +++ b/code/modules/events/pirates.dm @@ -28,7 +28,7 @@ /datum/round_event/pirates/announce() priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak - + if(!control) //Means this is false alarm, todo : explicit checks instead of using announceWhen return threat = new @@ -63,7 +63,7 @@ var/list/candidates = pollGhostCandidates("Do you wish to be considered for pirate crew ?", ROLE_TRAITOR) shuffle_inplace(candidates) - var/datum/map_template/pirate_event_ship/ship = new + var/datum/map_template/shuttle/pirate/default/ship = new var/x = rand(TRANSITIONEDGE,world.maxx - TRANSITIONEDGE - ship.width) var/y = rand(TRANSITIONEDGE,world.maxy - TRANSITIONEDGE - ship.height) var/z = SSmapping.empty_space.z_value @@ -84,7 +84,6 @@ priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') //CITADEL EDIT also metabreak here too - //Shuttle equipment /obj/machinery/shuttle_scrambler @@ -175,10 +174,6 @@ QDEL_NULL(gps) return ..() -/datum/map_template/pirate_event_ship - name = "Pirate Ship" - mappath = "_maps/templates/pirate_ship.dmm" - /obj/item/device/gps/internal/pirate gpstag = "Nautical Signal" desc = "You can hear shanties over the static." diff --git a/code/modules/events/wizard/rpgloot.dm b/code/modules/events/wizard/rpgloot.dm index 01195a5f23..cabcc57f0c 100644 --- a/code/modules/events/wizard/rpgloot.dm +++ b/code/modules/events/wizard/rpgloot.dm @@ -13,9 +13,10 @@ if(istype(I, /obj/item/storage)) var/obj/item/storage/S = I - if(prob(upgrade_scroll_chance) && S.contents.len < S.storage_slots && !S.invisibility) + GET_COMPONENT_FROM(STR, /datum/component/storage, S) + if(prob(upgrade_scroll_chance) && S.contents.len < STR.max_items && !S.invisibility) var/obj/item/upgradescroll/scroll = new - S.handle_item_insertion(scroll,1) + S.SendSignal(COMSIG_TRY_STORAGE_INSERT, scroll, null, TRUE, TRUE) upgrade_scroll_chance = max(0,upgrade_scroll_chance-100) upgrade_scroll_chance += 25 diff --git a/code/modules/flufftext/TextFilters.dm b/code/modules/flufftext/TextFilters.dm deleted file mode 100644 index fe8bffa60f..0000000000 --- a/code/modules/flufftext/TextFilters.dm +++ /dev/null @@ -1,64 +0,0 @@ - - -//is this shit even used at all -/proc/NewStutter(phrase,stun) - phrase = html_decode(phrase) - - var/list/split_phrase = splittext(phrase," ") //Split it up into words. - - var/list/unstuttered_words = split_phrase.Copy() - var/i = rand(1,3) - if(stun) i = split_phrase.len - for(,i > 0,i--) //Pick a few words to stutter on. - - if (!unstuttered_words.len) - break - var/word = pick(unstuttered_words) - unstuttered_words -= word //Remove from unstuttered words so we don't stutter it again. - var/index = split_phrase.Find(word) //Find the word in the split phrase so we can replace it. - - //Search for dipthongs (two letters that make one sound.) - var/first_sound = copytext(word,1,3) - var/first_letter = copytext(word,1,2) - if(lowertext(first_sound) in list("ch","th","sh")) - first_letter = first_sound - - //Repeat the first letter to create a stutter. - var/rnum = rand(1,3) - switch(rnum) - if(1) - word = "[first_letter]-[word]" - if(2) - word = "[first_letter]-[first_letter]-[word]" - if(3) - word = "[first_letter]-[word]" - - split_phrase[index] = word - - return sanitize(jointext(split_phrase," ")) - -/proc/Stagger(mob/M,d) //Technically not a filter, but it relates to drunkenness. - step(M, pick(d,turn(d,90),turn(d,-90))) - -/proc/Ellipsis(original_msg, chance = 50, keep_words) - if(chance <= 0) - return "..." - if(chance >= 100) - return original_msg - - var/list - words = splittext(original_msg," ") - new_words = list() - - var/new_msg = "" - - for(var/w in words) - if(prob(chance)) - new_words += "..." - if(!keep_words) - continue - new_words += w - - new_msg = jointext(new_words," ") - - return new_msg diff --git a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm index 7b67129dba..42da7e226b 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm @@ -30,6 +30,7 @@ return ..() /obj/machinery/food_cart/ui_interact(mob/user) + . = ..() var/dat dat += "
STORED INGREDIENTS AND DRINKS
" dat += "Remaining glasses: [glasses]
" @@ -91,11 +92,11 @@ to_chat(user, "[src] is at full capacity.") break else - T.remove_from_storage(S, src) - if(stored_food[sanitize(S.name)]) - stored_food[sanitize(S.name)]++ - else - stored_food[sanitize(S.name)] = 1 + if(T.SendSignal(COMSIG_TRY_STORAGE_TAKE, S, src)) + if(stored_food[sanitize(S.name)]) + stored_food[sanitize(S.name)]++ + else + stored_food[sanitize(S.name)] = 1 else if(O.is_drainable()) return else diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm index 7139f20d91..8330c9feed 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm @@ -132,8 +132,8 @@ if (contents.len>=max_n_of_items) to_chat(user, "[src] is full, you can't put anything in!") return 1 - T.remove_from_storage(S, src) - loaded++ + if(T.SendSignal(COMSIG_TRY_STORAGE_TAKE, S, src)) + loaded++ if(loaded) to_chat(user, "You insert [loaded] items into [src].") @@ -165,6 +165,7 @@ ********************/ /obj/machinery/microwave/ui_interact(mob/user) // The microwave Menu + . = ..() if(panel_open || !anchored) return var/dat = "
" diff --git a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm index d1896c03fc..23466305f1 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm @@ -56,7 +56,7 @@ /obj/machinery/monkey_recycler/proc/stuff_monkey_in(mob/living/carbon/monkey/target, mob/living/user) if(!istype(target)) return - if(target.stat == 0) + if(target.stat == CONSCIOUS) to_chat(user, "The monkey is struggling far too much to put it in the recycler.") return if(target.buckled || target.has_buckled_mobs()) @@ -69,17 +69,10 @@ animate(src, pixel_x = pixel_x + offset, time = 0.2, loop = 200) //start shaking use_power(500) grinded++ - sleep(50) - pixel_x = initial(pixel_x) //return to its spot after shaking - to_chat(user, "The machine now has [grinded] monkey\s worth of material stored.") + addtimer(VARSET_CALLBACK(src, pixel_x, initial(pixel_x))) + addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, user, "The machine now has [grinded] monkey\s worth of material stored.")) - -/obj/machinery/monkey_recycler/attack_hand(mob/user) - . = ..() - if(.) - return - if(stat != 0) //NOPOWER etc - return +/obj/machinery/monkey_recycler/interact(mob/user) if(grinded >= required_grind) to_chat(user, "The machine hisses loudly as it condenses the grinded monkey meat. After a moment, it dispenses a brand new monkey cube.") playsound(src.loc, 'sound/machines/hiss.ogg', 50, 1) @@ -89,4 +82,3 @@ to_chat(user, "The machine's display flashes that it has [grinded] monkeys worth of material left.") else to_chat(user, "The machine needs at least [required_grind] monkey(s) worth of material to produce a monkey cube. It only has [grinded].") - return diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm index 1937ee2695..e07a957cfb 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm @@ -22,27 +22,6 @@ for(var/obj/item/stock_parts/manipulator/M in component_parts) rating_speed = M.rating -/obj/machinery/processor/process() - ..() - if(processing) - return - var/mob/living/simple_animal/slime/picked_slime - for(var/mob/living/simple_animal/slime/slime in range(1,src)) - if(slime.loc == src) - continue - if(istype(slime, /mob/living/simple_animal/slime)) - if(slime.stat) - picked_slime = slime - break - if(!picked_slime) - return - var/datum/food_processor_process/P = select_recipe(picked_slime) - if (!P) - return - - src.visible_message("[picked_slime] is sucked into [src].") - picked_slime.forceMove(src) - /obj/machinery/processor/proc/process_food(datum/food_processor_process/recipe, atom/movable/what) if (recipe.output && loc && !QDELETED(src)) for(var/i = 0, i < rating_amount, i++) @@ -53,22 +32,6 @@ else qdel(what) - -/obj/machinery/processor/slime/process_food(datum/food_processor_process/recipe, atom/movable/what) - var/mob/living/simple_animal/slime/S = what - if (istype(S)) - var/C = S.cores - if(S.stat != DEAD) - S.forceMove(drop_location()) - S.visible_message("[C] crawls free of the processor!") - return - for(var/i in 1 to (C+rating_amount-1)) - var/atom/movable/item = new S.coretype(drop_location()) - adjust_item_drop_location(item) - SSblackbox.record_feedback("tally", "slime_core_harvested", 1, S.colour) - ..() - - /obj/machinery/processor/proc/select_recipe(X) for (var/type in subtypesof(/datum/food_processor_process) - /datum/food_processor_process/mob) var/datum/food_processor_process/recipe = new type() @@ -77,9 +40,9 @@ return recipe /obj/machinery/processor/attackby(obj/item/O, mob/user, params) - if(src.processing) + if(processing) to_chat(user, "[src] is in the process of processing!") - return 1 + return TRUE if(default_deconstruction_screwdriver(user, "processor", "processor1", O)) return @@ -101,8 +64,8 @@ for(var/obj/item/reagent_containers/food/snacks/S in T.contents) var/datum/food_processor_process/P = select_recipe(S) if(P) - T.remove_from_storage(S, src) - loaded++ + if(T.SendSignal(COMSIG_TRY_STORAGE_TAKE, S, src)) + loaded++ if(loaded) to_chat(user, "You insert [loaded] items into [src].") @@ -121,16 +84,11 @@ else return ..() -/obj/machinery/processor/attack_hand(mob/user) - . = ..() - if(.) - return - if(stat & (NOPOWER|BROKEN)) - return - if(src.processing) +/obj/machinery/processor/interact(mob/user) + if(processing) to_chat(user, "[src] is in the process of processing!") - return 1 - if(user.a_intent == INTENT_GRAB && user.pulling && select_recipe(user.pulling)) + return TRUE + if(user.a_intent == INTENT_GRAB && ismob(user.pulling) && select_recipe(user.pulling)) if(user.grab_state < GRAB_AGGRESSIVE) to_chat(user, "You need a better grip to do that!") return @@ -139,9 +97,9 @@ pushed_mob.forceMove(src) user.stop_pulling() return - if(src.contents.len == 0) + if(contents.len == 0) to_chat(user, "[src] is empty!") - return 1 + return TRUE processing = TRUE user.visible_message("[user] turns on [src].", \ "You turn on [src].", \ @@ -166,7 +124,7 @@ process_food(P, O) pixel_x = initial(pixel_x) //return to its spot after shaking processing = FALSE - src.visible_message("\The [src] finishes processing.") + visible_message("\The [src] finishes processing.") /obj/machinery/processor/verb/eject() set category = "Object" @@ -175,16 +133,14 @@ if(usr.stat || !usr.canmove || usr.restrained()) return - src.empty() + empty() add_fingerprint(usr) - return /obj/machinery/processor/proc/empty() for (var/obj/O in src) O.forceMove(drop_location()) for (var/mob/M in src) M.forceMove(drop_location()) - return /obj/machinery/processor/slime name = "slime processor" @@ -208,3 +164,37 @@ AM.pixel_x = -8 + ((ii%3)*8) AM.pixel_y = -8 + (round(ii/3)*8) return i + +/obj/machinery/processor/slime/process() + if(processing) + return + var/mob/living/simple_animal/slime/picked_slime + for(var/mob/living/simple_animal/slime/slime in range(1,src)) + if(slime.loc == src) + continue + if(istype(slime, /mob/living/simple_animal/slime)) + if(slime.stat) + picked_slime = slime + break + if(!picked_slime) + return + var/datum/food_processor_process/P = select_recipe(picked_slime) + if (!P) + return + + visible_message("[picked_slime] is sucked into [src].") + picked_slime.forceMove(src) + +/obj/machinery/processor/slime/process_food(datum/food_processor_process/recipe, atom/movable/what) + var/mob/living/simple_animal/slime/S = what + if (istype(S)) + var/C = S.cores + if(S.stat != DEAD) + S.forceMove(drop_location()) + S.visible_message("[C] crawls free of the processor!") + return + for(var/i in 1 to (C+rating_amount-1)) + var/atom/movable/item = new S.coretype(drop_location()) + adjust_item_drop_location(item) + SSblackbox.record_feedback("tally", "slime_core_harvested", 1, S.colour) + ..() diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 8be93e88bf..1149d917dd 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -125,12 +125,15 @@ var/mob/M = O.loc if(!M.transferItemToLoc(O, src)) to_chat(usr, "\the [O] is stuck to your hand, you cannot put it in \the [src]!") - return + return FALSE + else + return TRUE else - if(istype(O.loc, /obj/item/storage)) - var/obj/item/storage/S = O.loc - S.remove_from_storage(O,src) - O.forceMove(src) + if(O.loc.SendSignal(COMSIG_CONTAINS_STORAGE)) + return O.loc.SendSignal(COMSIG_TRY_STORAGE_TAKE, O, src) + else + O.forceMove(src) + return TRUE /obj/machinery/smartfridge/attack_ai(mob/user) return FALSE diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm index c9fc793d0d..6cc3f56461 100644 --- a/code/modules/holiday/easter.dm +++ b/code/modules/holiday/easter.dm @@ -65,18 +65,22 @@ name = "Easter Basket" icon = 'icons/mob/easter.dmi' icon_state = "basket" - can_hold = list(/obj/item/reagent_containers/food/snacks/egg, /obj/item/reagent_containers/food/snacks/chocolateegg, /obj/item/reagent_containers/food/snacks/boiledegg) + +/obj/item/storage/bag/easterbasket/Initialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/egg, /obj/item/reagent_containers/food/snacks/chocolateegg, /obj/item/reagent_containers/food/snacks/boiledegg)) /obj/item/storage/bag/easterbasket/proc/countEggs() cut_overlays() add_overlay("basket-grass") add_overlay("basket-egg[min(contents.len, 5)]") -/obj/item/storage/bag/easterbasket/remove_from_storage(obj/item/W as obj, atom/new_location) - ..() +/obj/item/storage/bag/easterbasket/Exited() + . = ..() countEggs() -/obj/item/storage/bag/easterbasket/handle_item_insertion(obj/item/I, prevent_warning = 0) +/obj/item/storage/bag/easterbasket/Entered() . = ..() countEggs() diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index b69e5e6302..65aaba95e7 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -116,8 +116,8 @@ for(var/obj/item/reagent_containers/food/snacks/grown/G in PB.contents) if(i >= max_items) break - PB.remove_from_storage(G, src) - i++ + if(PB.SendSignal(COMSIG_TRY_STORAGE_TAKE, G, src)) + i++ if(iYou empty the plant bag into the biogenerator.") else if(PB.contents.len == 0) diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index f460b3fbed..44ec4d56ee 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -787,11 +787,8 @@ else if(istype(O, /obj/item/storage/bag/plants)) attack_hand(user) - var/obj/item/storage/bag/plants/S = O for(var/obj/item/reagent_containers/food/snacks/grown/G in locate(user.x,user.y,user.z)) - if(!S.can_be_inserted(G)) - return - S.handle_item_insertion(G, 1) + O.SendSignal(COMSIG_TRY_STORAGE_INSERT, G, user, TRUE) else if(istype(O, /obj/item/wrench) && unwrenchable) if(using_irrigation) diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index cd8268c596..f188466434 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -74,7 +74,7 @@ if(default_deconstruction_crowbar(O)) return - if (istype(O, /obj/item/storage/bag/plants)) + if(istype(O, /obj/item/storage/bag/plants)) var/obj/item/storage/P = O var/loaded = 0 for(var/obj/item/seeds/G in P.contents) @@ -83,7 +83,7 @@ ++loaded add_seed(G) if (loaded) - to_chat(user, "You put the seeds from \the [O.name] into [src].") + to_chat(user, "You put as many seeds from \the [O.name] into [src] as you can.") else to_chat(user, "There are no seeds in \the [O.name].") return @@ -122,6 +122,7 @@ src.amount = am /obj/machinery/seed_extractor/ui_interact(mob/user) + . = ..() if (stat) return FALSE @@ -175,21 +176,21 @@ /obj/machinery/seed_extractor/proc/add_seed(obj/item/seeds/O) if(contents.len >= 999) to_chat(usr, "\The [src] is full.") - return 0 + return FALSE - if(ismob(O.loc)) + GET_COMPONENT_FROM(STR, /datum/component/storage, O.loc) + if(STR) + if(!STR.remove_from_storage(O,src)) + return FALSE + else if(ismob(O.loc)) var/mob/M = O.loc if(!M.transferItemToLoc(O, src)) - return 0 - else if(istype(O.loc, /obj/item/storage)) - var/obj/item/storage/S = O.loc - S.remove_from_storage(O,src) + return FALSE - . = 1 + . = TRUE for (var/datum/seed_pile/N in piles) if (O.plantname == N.name && O.lifespan == N.lifespan && O.endurance == N.endurance && O.maturation == N.maturation && O.production == N.production && O.yield == N.yield && O.potency == N.potency) ++N.amount return piles += new /datum/seed_pile(O.plantname, O.lifespan, O.endurance, O.maturation, O.production, O.yield, O.potency) - return diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index 86d85f7876..a61dc18d34 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -817,7 +817,8 @@ return FALSE var/ignore_bags = get_pin_data(IC_INPUT, 1) if(ignore_bags) - if(istype(A, /obj/item/storage)) + GET_COMPONENT_FROM(STR, /datum/component/storage, A) + if(STR) return FALSE set_pin_data(IC_OUTPUT, 1, WEAKREF(A)) push_data() diff --git a/code/modules/keybindings/bindings_human.dm b/code/modules/keybindings/bindings_human.dm index b0e2994ffc..7c52917386 100644 --- a/code/modules/keybindings/bindings_human.dm +++ b/code/modules/keybindings/bindings_human.dm @@ -17,9 +17,7 @@ to_chat(user, "You can't fit anything in.") return if(thing) // put thing in belt - if(equipped_belt.can_be_inserted(thing)) - equipped_belt.handle_item_insertion(thing) - else + if(!equipped_belt.SendSignal(COMSIG_TRY_STORAGE_INSERT, thing, user.mob)) to_chat(user, "You can't fit anything in.") return if(!equipped_belt.contents.len) // nothing to take out @@ -47,9 +45,7 @@ to_chat(user, "You can't fit anything in.") return if(thing) // put thing in backpack - if(equipped_backpack.can_be_inserted(thing)) - equipped_backpack.handle_item_insertion(thing) - else + if(!equipped_backpack.SendSignal(COMSIG_TRY_STORAGE_INSERT, thing, user.mob)) to_chat(user, "You can't fit anything in.") return if(!equipped_backpack.contents.len) // nothing to take out diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index de7edc69b1..4126cc4768 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -24,7 +24,6 @@ var/state = 0 var/list/allowed_books = list(/obj/item/book, /obj/item/spellbook, /obj/item/storage/book) //Things allowed in the bookcase - /obj/structure/bookcase/examine(mob/user) ..() if(!anchored) @@ -39,7 +38,6 @@ if(2) to_chat(user, "There's a small crack visible on the shelf.") - /obj/structure/bookcase/Initialize(mapload) . = ..() if(!mapload) @@ -52,7 +50,6 @@ I.forceMove(src) update_icon() - /obj/structure/bookcase/attackby(obj/item/I, mob/user, params) switch(state) if(0) @@ -81,15 +78,15 @@ state = 0 if(2) + GET_COMPONENT_FROM(STR, /datum/component/storage, I) if(is_type_in_list(I, allowed_books)) if(!user.transferItemToLoc(I, src)) return update_icon() - else if(istype(I, /obj/item/storage/bag/books)) - var/obj/item/storage/bag/books/B = I - for(var/obj/item/T in B.contents) + else if(STR) + for(var/obj/item/T in I.contents) if(istype(T, /obj/item/book) || istype(T, /obj/item/spellbook)) - B.remove_from_storage(T, src) + STR.remove_from_storage(T, src) to_chat(user, "You empty \the [I] into \the [src].") update_icon() else if(istype(I, /obj/item/pen)) diff --git a/code/modules/lighting/lighting_area.dm b/code/modules/lighting/lighting_area.dm index b581956307..58e9a4337a 100644 --- a/code/modules/lighting/lighting_area.dm +++ b/code/modules/lighting/lighting_area.dm @@ -10,13 +10,13 @@ if (IS_DYNAMIC_LIGHTING(src)) cut_overlay(/obj/effect/fullbright) - for (var/turf/T in area_contents(src)) + for (var/turf/T in src) if (IS_DYNAMIC_LIGHTING(T)) T.lighting_build_overlay() else add_overlay(/obj/effect/fullbright) - for (var/turf/T in area_contents(src)) + for (var/turf/T in src) if (T.lighting_object) T.lighting_clear_overlay() diff --git a/code/modules/mapping/map_template.dm b/code/modules/mapping/map_template.dm index b9dbb42d28..b5b2091eb9 100644 --- a/code/modules/mapping/map_template.dm +++ b/code/modules/mapping/map_template.dm @@ -88,7 +88,7 @@ initTemplateBounds(bounds) log_game("[name] loaded at at [T.x],[T.y],[T.z]") - return TRUE + return bounds /datum/map_template/proc/get_affected_turfs(turf/T, centered = FALSE) var/turf/placement = T diff --git a/code/modules/mining/aux_base.dm b/code/modules/mining/aux_base.dm index ccd9784448..8acaf2e495 100644 --- a/code/modules/mining/aux_base.dm +++ b/code/modules/mining/aux_base.dm @@ -174,7 +174,6 @@ interface with the mining shuttle at the landing site if a mobile beacon is also landing_zone.width = base_dock.width landing_zone.height = base_dock.height landing_zone.setDir(base_dock.dir) - landing_zone.turf_type = T.type landing_zone.area_type = A.type possible_destinations += "[landing_zone.id];" @@ -320,7 +319,6 @@ obj/docking_port/stationary/public_mining_dock Mport.width = SM.width Mport.height = SM.height Mport.setDir(dir) - Mport.turf_type = landing_spot.type Mport.area_type = A.type break diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm index 61940b4044..a6cbbfcedd 100644 --- a/code/modules/mining/fulton.dm +++ b/code/modules/mining/fulton.dm @@ -63,8 +63,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) to_chat(user, "You attach the pack to [A] and activate it.") if(loc == user && istype(user.back, /obj/item/storage/backpack)) var/obj/item/storage/backpack/B = user.back - if(B.can_be_inserted(src,stop_messages = 1)) - B.handle_item_insertion(src) + B.SendSignal(COMSIG_TRY_STORAGE_INSERT, src, user, FALSE, FALSE) uses_left-- if(uses_left <= 0) user.transferItemToLoc(src, A, TRUE) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 330c0cbf2a..cfffef59fc 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -433,25 +433,13 @@ //Shared Bag -//Internal - -/obj/item/storage/backpack/shared - name = "paradox bag" - desc = "Somehow, it's in two places at once." - max_combined_w_class = 60 - max_w_class = WEIGHT_CLASS_NORMAL - - -//External - /obj/item/device/shared_storage name = "paradox bag" desc = "Somehow, it's in two places at once." icon = 'icons/obj/storage.dmi' icon_state = "cultpack" slot_flags = SLOT_BACK - var/obj/item/storage/backpack/shared/bag - + resistance_flags = INDESTRUCTIBLE /obj/item/device/shared_storage/red name = "paradox bag" @@ -459,53 +447,20 @@ /obj/item/device/shared_storage/red/Initialize() . = ..() - if(!bag) - var/obj/item/storage/backpack/shared/S = new(src) - var/obj/item/device/shared_storage/blue = new(src.loc) - - src.bag = S - blue.bag = S - - -/obj/item/device/shared_storage/attackby(obj/item/W, mob/user, params) - if(bag) - bag.forceMove(user) - bag.attackby(W, user, params) - - -/obj/item/device/shared_storage/attack_hand(mob/living/carbon/user) - if(!iscarbon(user)) - return - if(loc == user && user.back && user.back == src) - if(bag) - bag.forceMove(user) - bag.attack_hand(user) - else - ..() - - -/obj/item/device/shared_storage/MouseDrop(atom/over_object) - if(iscarbon(usr) || isdrone(usr)) - var/mob/M = usr - - if(!over_object) - return - - if(ismecha(usr.loc)) - return - - if(!M.incapacitated()) - playsound(loc, "rustle", 50, 1, -5) - - - if(istype(over_object, /obj/screen/inventory/hand)) - var/obj/screen/inventory/hand/H = over_object - M.putItemFromInventoryInHandIfPossible(src, H.held_index) - - add_fingerprint(usr) - - + var/datum/component/storage/STR = AddComponent(/datum/component/storage/concrete) + STR.max_w_class = WEIGHT_CLASS_NORMAL + STR.max_combined_w_class = 60 + STR.max_items = 21 + new /obj/item/device/shared_storage/blue(drop_location(), STR) +/obj/item/device/shared_storage/blue/Initialize(mapload, datum/component/storage/concrete/master) + . = ..() + if(!istype(master)) + return INITIALIZE_HINT_QDEL + var/datum/component/storage/STR = AddComponent(/datum/component/storage, master) + STR.max_w_class = WEIGHT_CLASS_NORMAL + STR.max_combined_w_class = 60 + STR.max_items = 21 //Book of Babel diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm index befaef31a2..f567bd1daf 100644 --- a/code/modules/mining/money_bag.dm +++ b/code/modules/mining/money_bag.dm @@ -8,14 +8,16 @@ resistance_flags = FLAMMABLE max_integrity = 100 w_class = WEIGHT_CLASS_BULKY - max_w_class = WEIGHT_CLASS_NORMAL - storage_slots = 80 - max_combined_w_class = 40 - can_hold = list(/obj/item/coin, /obj/item/stack/spacecash) - -/obj/item/storage/bag/money/vault/Initialize() +/obj/item/storage/bag/money/Initialize() . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_w_class = WEIGHT_CLASS_NORMAL + STR.max_items = 40 + STR.max_combined_w_class = 40 + STR.can_hold = typecacheof(list(/obj/item/coin, /obj/item/stack/spacecash)) + +/obj/item/storage/bag/money/vault/PopulateContents() new /obj/item/coin/silver(src) new /obj/item/coin/silver(src) new /obj/item/coin/silver(src) diff --git a/code/modules/mining/satchel_ore_boxdm.dm b/code/modules/mining/satchel_ore_boxdm.dm index a12d56fbbb..78f4676d4e 100644 --- a/code/modules/mining/satchel_ore_boxdm.dm +++ b/code/modules/mining/satchel_ore_boxdm.dm @@ -9,14 +9,12 @@ density = TRUE pressure_resistance = 5*ONE_ATMOSPHERE -/obj/structure/ore_box/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/ore)) - user.transferItemToLoc(I, src) - else if(istype(I, /obj/item/storage)) - var/obj/item/storage/S = I - for(var/obj/item/stack/ore/O in S.contents) - S.remove_from_storage(O, src) //This will move the item to this item's contents - to_chat(user, "You empty the ore in [S] into \the [src].") +/obj/structure/ore_box/attackby(obj/item/W, mob/user, params) + if (istype(W, /obj/item/stack/ore)) + user.transferItemToLoc(W, src) + else if(W.SendSignal(COMSIG_CONTAINS_STORAGE)) + W.SendSignal(COMSIG_TRY_STORAGE_TAKE_TYPE, /obj/item/stack/ore, src) + to_chat(user, "You empty the ore in [W] into \the [src].") else return ..() diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 47677780e9..01ac36c57a 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -376,11 +376,11 @@ if(GLOB.highlander) to_chat(humanc, "THERE CAN BE ONLY ONE!!!") humanc.make_scottish() - if(prob(5) && !issilicon(humanc) && !jobban_isbanned(humanc.mind, "Syndicate") && GLOB.miscreants_allowed && ROLE_MISCREANT in humanc.client.prefs.be_special) +/* if(prob(5) && !issilicon(humanc) && !jobban_isbanned(humanc.mind, "Syndicate") && GLOB.miscreants_allowed && ROLE_MISCREANT in humanc.client.prefs.be_special) SSticker.generate_miscreant_objectives(humanc.mind) else if(CONFIG_GET(flag/allow_crew_objectives)) - SSticker.generate_individual_objectives(humanc.mind) + SSticker.generate_individual_objectives(humanc.mind) */ if(GLOB.summon_guns_triggered) give_guns(humanc) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index bf083b654d..a7b28dd658 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -381,7 +381,7 @@ dropItemToGround(I) drop_all_held_items() -/obj/item/proc/equip_to_best_slot(var/mob/M) +/obj/item/proc/equip_to_best_slot(mob/M) if(src != M.get_active_held_item()) to_chat(M, "You are not holding anything to equip!") return FALSE @@ -393,28 +393,16 @@ if(equip_delay_self) return - if(M.s_active && M.s_active.can_be_inserted(src,1)) //if storage active insert there - M.s_active.handle_item_insertion(src) + if(M.active_storage && M.active_storage.parent && M.active_storage.parent.SendSignal(COMSIG_TRY_STORAGE_INSERT, src,M)) return TRUE - var/obj/item/storage/S = M.get_inactive_held_item() - if(istype(S) && S.can_be_inserted(src,1)) //see if we have box in other hand - S.handle_item_insertion(src) - return TRUE - - S = M.get_item_by_slot(slot_belt) - if(istype(S) && S.can_be_inserted(src,1)) //else we put in belt - S.handle_item_insertion(src) - return TRUE - - S = M.get_item_by_slot(slot_generic_dextrous_storage) //else we put in whatever is in drone storage - if(istype(S) && S.can_be_inserted(src,1)) - S.handle_item_insertion(src) - - S = M.get_item_by_slot(slot_back) //else we put in backpack - if(istype(S) && S.can_be_inserted(src,1)) - S.handle_item_insertion(src) - return TRUE + var/list/obj/item/possible = list(M.get_inactive_held_item(), M.get_item_by_slot(slot_belt), M.get_item_by_slot(slot_generic_dextrous_storage), M.get_item_by_slot(slot_back)) + for(var/i in possible) + if(!i) + continue + var/obj/item/I = i + if(I.SendSignal(COMSIG_TRY_STORAGE_INSERT, src, M)) + return TRUE to_chat(M, "You are unable to equip that!") return FALSE diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 0a0c46bffc..10fddfcb20 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -1,8 +1,3 @@ -#define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point -#define HEAT_DAMAGE_LEVEL_2 3 //Amount of damage applied when your body temperature passes the 400K point -#define HEAT_DAMAGE_LEVEL_3 8 //Amount of damage applied when your body temperature passes the 460K point and you are on fire - - /mob/living/carbon/alien name = "alien" icon = 'icons/mob/alien.dmi' @@ -146,9 +141,5 @@ Des: Removes all infected images from the alien. mind.transfer_to(new_xeno) qdel(src) -#undef HEAT_DAMAGE_LEVEL_1 -#undef HEAT_DAMAGE_LEVEL_2 -#undef HEAT_DAMAGE_LEVEL_3 - /mob/living/carbon/alien/can_hold_items() return has_fine_manipulation diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 60bb0fe497..47a866df97 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -4,6 +4,7 @@ pressure_resistance = 25 can_buckle = TRUE buckle_lying = FALSE + mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) //Hair colour and style var/hair_color = "000" var/hair_style = "Bald" diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 55f66c975e..b4f93a12d0 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -2,24 +2,6 @@ //NOTE: Breathing happens once per FOUR TICKS, unless the last breath fails. In which case it happens once per ONE TICK! So oxyloss healing is done once per 4 ticks while oxyloss damage is applied once per tick! - -#define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point -#define HEAT_DAMAGE_LEVEL_2 3 //Amount of damage applied when your body temperature passes the 400K point -#define HEAT_DAMAGE_LEVEL_3 10 //Amount of damage applied when your body temperature passes the 460K point and you are on fire - -#define COLD_DAMAGE_LEVEL_1 0.5 //Amount of damage applied when your body temperature just passes the 260.15k safety point -#define COLD_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when your body temperature passes the 200K point -#define COLD_DAMAGE_LEVEL_3 3 //Amount of damage applied when your body temperature passes the 120K point - -//Note that gas heat damage is only applied once every FOUR ticks. -#define HEAT_GAS_DAMAGE_LEVEL_1 2 //Amount of damage applied when the current breath's temperature just passes the 360.15k safety point -#define HEAT_GAS_DAMAGE_LEVEL_2 4 //Amount of damage applied when the current breath's temperature passes the 400K point -#define HEAT_GAS_DAMAGE_LEVEL_3 8 //Amount of damage applied when the current breath's temperature passes the 1000K point - -#define COLD_GAS_DAMAGE_LEVEL_1 0.5 //Amount of damage applied when the current breath's temperature just passes the 260.15k safety point -#define COLD_GAS_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when the current breath's temperature passes the 200K point -#define COLD_GAS_DAMAGE_LEVEL_3 3 //Amount of damage applied when the current breath's temperature passes the 120K point - // bitflags for the percentual amount of protection a piece of clothing which covers the body part offers. // Used with human/proc/get_heat_protection() and human/proc/get_cold_protection() // The values here should add up to 1. @@ -102,8 +84,7 @@ /mob/living/carbon/human/breathe() if(!dna.species.breathe(src)) ..() -#define HUMAN_MAX_OXYLOSS 3 -#define HUMAN_CRIT_MAX_OXYLOSS (SSmobs.wait/30) + /mob/living/carbon/human/check_breath(datum/gas_mixture/breath) var/L = getorganslot(ORGAN_SLOT_LUNGS) @@ -133,9 +114,6 @@ var/obj/item/organ/lungs/lun = L lun.check_breath(breath,src) -#undef HUMAN_MAX_OXYLOSS -#undef HUMAN_CRIT_MAX_OXYLOSS - /mob/living/carbon/human/handle_environment(datum/gas_mixture/environment) dna.species.handle_environment(environment, src) @@ -147,12 +125,12 @@ /mob/living/carbon/human/proc/get_thermal_protection() var/thermal_protection = 0 //Simple check to estimate how protected we are against multiple temperatures -//CITADEL EDIT Vore code required overrides + //CITADEL EDIT Vore code required overrides if(istype(loc, /obj/item/device/dogborg/sleeper)) return FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT if(ismob(loc)) return FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT - if(istype(loc, /obj/belly)) + if(isbelly(loc)) return FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT //END EDIT if(wear_suit) @@ -262,16 +240,14 @@ /mob/living/carbon/human/proc/get_cold_protection(temperature) if(has_trait(TRAIT_RESISTCOLD)) return TRUE - //CITADEL EDIT Mandatory for vore code. if(istype(loc, /obj/item/device/dogborg/sleeper)) - return 1 //freezing to death in sleepers ruins fun. - if(istype(loc, /obj/belly)) - return 1 + return TRUE //freezing to death in sleepers ruins fun. + if(isbelly(loc)) + return TRUE if(ismob(loc)) - return 1 //because lazy and being inside somemone insulates you from space + return TRUE //because lazy and being inside somemone insulates you from space //END EDIT - temperature = max(temperature, 2.7) //There is an occasional bug where the temperature is miscalculated in ares with a small amount of gas on them, so this is necessary to ensure that that bug does not affect this calculation. Space's temperature is 2.7K and most suits that are intended to protect against any cold, protect down to 2.0K. var/thermal_protection_flags = get_cold_protection_flags(temperature) @@ -458,7 +434,6 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put if(drunkenness >= 101) adjustToxLoss(4) //Let's be honest you shouldn't be alive by now -#undef HUMAN_MAX_OXYLOSS #undef THERMAL_PROTECTION_HEAD #undef THERMAL_PROTECTION_CHEST #undef THERMAL_PROTECTION_GROIN diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 3722db8346..83b22c7e15 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -2,14 +2,6 @@ GLOBAL_LIST_EMPTY(roundstart_races) -#define HEAT_DAMAGE_LEVEL_1 2 -#define HEAT_DAMAGE_LEVEL_2 3 -#define HEAT_DAMAGE_LEVEL_3 8 - -#define COLD_DAMAGE_LEVEL_1 0.5 -#define COLD_DAMAGE_LEVEL_2 1.5 -#define COLD_DAMAGE_LEVEL_3 3 - /datum/species var/id // if the game needs to manually check your race to do something not included in a proc here, it will use this var/limbs_id //this is used if you want to use a different species limb sprites. Mainly used for angels as they look like humans. @@ -57,6 +49,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/list/species_traits = list() // generic traits tied to having the species var/list/inherent_traits = list() + var/list/inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) var/attack_verb = "punch" // punch-specific attack verb var/sound/attack_sound = 'sound/weapons/punch1.ogg' @@ -269,6 +262,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(FALSE) + C.mob_biotypes = inherent_biotypes regenerate_organs(C,old_species) if(exotic_bloodtype && C.dna.blood_type != exotic_bloodtype) @@ -864,7 +858,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species/proc/can_equip(obj/item/I, slot, disable_warning, mob/living/carbon/human/H, bypass_equip_delay_self = FALSE) if(slot in no_equip) if(!I.species_exception || !is_type_in_list(src, I.species_exception)) - return 0 + return FALSE var/num_arms = H.get_num_arms() var/num_legs = H.get_num_legs() @@ -876,181 +870,180 @@ GLOBAL_LIST_EMPTY(roundstart_races) return FALSE if(slot_wear_mask) if(H.wear_mask) - return 0 - if( !(I.slot_flags & SLOT_MASK) ) - return 0 + return FALSE + if(!(I.slot_flags & SLOT_MASK)) + return FALSE if(!H.get_bodypart(BODY_ZONE_HEAD)) - return 0 + return FALSE return equip_delay_self_check(I, H, bypass_equip_delay_self) if(slot_neck) if(H.wear_neck) - return 0 + return FALSE if( !(I.slot_flags & SLOT_NECK) ) - return 0 - return 1 + return FALSE + return TRUE if(slot_back) if(H.back) - return 0 + return FALSE if( !(I.slot_flags & SLOT_BACK) ) - return 0 + return FALSE return equip_delay_self_check(I, H, bypass_equip_delay_self) if(slot_wear_suit) if(H.wear_suit) - return 0 + return FALSE if( !(I.slot_flags & SLOT_OCLOTHING) ) - return 0 + return FALSE return equip_delay_self_check(I, H, bypass_equip_delay_self) if(slot_gloves) if(H.gloves) - return 0 + return FALSE if( !(I.slot_flags & SLOT_GLOVES) ) - return 0 + return FALSE if(num_arms < 2) - return 0 + return FALSE return equip_delay_self_check(I, H, bypass_equip_delay_self) if(slot_shoes) if(H.shoes) - return 0 + return FALSE if( !(I.slot_flags & SLOT_FEET) ) - return 0 + return FALSE if(num_legs < 2) - return 0 + return FALSE if(DIGITIGRADE in species_traits) if(!disable_warning) to_chat(H, "The footwear around here isn't compatible with your feet!") - return 0 + return FALSE return equip_delay_self_check(I, H, bypass_equip_delay_self) if(slot_belt) if(H.belt) - return 0 + return FALSE var/obj/item/bodypart/O = H.get_bodypart(BODY_ZONE_CHEST) if(!H.w_uniform && !nojumpsuit && (!O || O.status != BODYPART_ROBOTIC)) if(!disable_warning) to_chat(H, "You need a jumpsuit before you can attach this [I.name]!") - return 0 - if( !(I.slot_flags & SLOT_BELT) ) + return FALSE + if(!(I.slot_flags & SLOT_BELT)) return return equip_delay_self_check(I, H, bypass_equip_delay_self) if(slot_glasses) if(H.glasses) - return 0 - if( !(I.slot_flags & SLOT_EYES) ) - return 0 + return FALSE + if(!(I.slot_flags & SLOT_EYES)) + return FALSE if(!H.get_bodypart(BODY_ZONE_HEAD)) - return 0 + return FALSE return equip_delay_self_check(I, H, bypass_equip_delay_self) if(slot_head) if(H.head) - return 0 - if( !(I.slot_flags & SLOT_HEAD) ) - return 0 + return FALSE + if(!(I.slot_flags & SLOT_HEAD)) + return FALSE if(!H.get_bodypart(BODY_ZONE_HEAD)) - return 0 + return FALSE return equip_delay_self_check(I, H, bypass_equip_delay_self) if(slot_ears) if(H.ears) - return 0 - if( !(I.slot_flags & SLOT_EARS) ) - return 0 + return FALSE + if(!(I.slot_flags & SLOT_EARS)) + return FALSE if(!H.get_bodypart(BODY_ZONE_HEAD)) - return 0 + return FALSE return equip_delay_self_check(I, H, bypass_equip_delay_self) if(slot_w_uniform) if(H.w_uniform) - return 0 + return FALSE if( !(I.slot_flags & SLOT_ICLOTHING) ) - return 0 + return FALSE return equip_delay_self_check(I, H, bypass_equip_delay_self) if(slot_wear_id) if(H.wear_id) - return 0 + return FALSE var/obj/item/bodypart/O = H.get_bodypart(BODY_ZONE_CHEST) if(!H.w_uniform && !nojumpsuit && (!O || O.status != BODYPART_ROBOTIC)) if(!disable_warning) to_chat(H, "You need a jumpsuit before you can attach this [I.name]!") - return 0 + return FALSE if( !(I.slot_flags & SLOT_ID) ) - return 0 + return FALSE return equip_delay_self_check(I, H, bypass_equip_delay_self) if(slot_l_store) if(I.flags_1 & NODROP_1) //Pockets aren't visible, so you can't move NODROP_1 items into them. - return 0 + return FALSE if(H.l_store) - return 0 + return FALSE var/obj/item/bodypart/O = H.get_bodypart(BODY_ZONE_L_LEG) if(!H.w_uniform && !nojumpsuit && (!O || O.status != BODYPART_ROBOTIC)) if(!disable_warning) to_chat(H, "You need a jumpsuit before you can attach this [I.name]!") - return 0 + return FALSE if(I.slot_flags & SLOT_DENYPOCKET) - return + return FALSE if( I.w_class <= WEIGHT_CLASS_SMALL || (I.slot_flags & SLOT_POCKET) ) - return 1 + return TRUE if(slot_r_store) if(I.flags_1 & NODROP_1) - return 0 + return FALSE if(H.r_store) - return 0 + return FALSE var/obj/item/bodypart/O = H.get_bodypart(BODY_ZONE_R_LEG) if(!H.w_uniform && !nojumpsuit && (!O || O.status != BODYPART_ROBOTIC)) if(!disable_warning) to_chat(H, "You need a jumpsuit before you can attach this [I.name]!") - return 0 + return FALSE if(I.slot_flags & SLOT_DENYPOCKET) - return 0 + return FALSE if( I.w_class <= WEIGHT_CLASS_SMALL || (I.slot_flags & SLOT_POCKET) ) - return 1 - return 0 + return TRUE + return FALSE if(slot_s_store) if(I.flags_1 & NODROP_1) - return 0 + return FALSE if(H.s_store) - return 0 + return FALSE if(!H.wear_suit) if(!disable_warning) to_chat(H, "You need a suit before you can attach this [I.name]!") - return 0 + return FALSE if(!H.wear_suit.allowed) if(!disable_warning) to_chat(H, "You somehow have a suit with no defined allowed items for suit storage, stop that.") - return 0 + return FALSE if(I.w_class > WEIGHT_CLASS_BULKY) if(!disable_warning) to_chat(H, "The [I.name] is too big to attach.") //should be src? - return 0 + return FALSE if( istype(I, /obj/item/device/pda) || istype(I, /obj/item/pen) || is_type_in_list(I, H.wear_suit.allowed) ) - return 1 - return 0 + return TRUE + return FALSE if(slot_handcuffed) if(H.handcuffed) - return 0 + return FALSE if(!istype(I, /obj/item/restraints/handcuffs)) - return 0 + return FALSE if(num_arms < 2) - return 0 - return 1 + return FALSE + return TRUE if(slot_legcuffed) if(H.legcuffed) - return 0 + return FALSE if(!istype(I, /obj/item/restraints/legcuffs)) - return 0 + return FALSE if(num_legs < 2) - return 0 - return 1 + return FALSE + return TRUE if(slot_in_backpack) - if(H.back && istype(H.back, /obj/item/storage)) - var/obj/item/storage/B = H.back - if(B.can_be_inserted(I, 1, H)) - return 1 - return 0 - return 0 //Unsupported slot + if(H.back) + if(H.back.SendSignal(COMSIG_TRY_STORAGE_CAN_INSERT, I, H, TRUE)) + return TRUE + return FALSE + return FALSE //Unsupported slot /datum/species/proc/equip_delay_self_check(obj/item/I, mob/living/carbon/human/H, bypass_equip_delay_self) if(!I.equip_delay_self || bypass_equip_delay_self) @@ -1069,7 +1062,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) H.blood_volume = min(H.blood_volume + round(chem.volume, 0.1), BLOOD_VOLUME_MAXIMUM) H.reagents.del_reagent(chem.id) return 1 - return 0 + return FALSE /datum/species/proc/handle_speech(message, mob/living/carbon/human/H) return message @@ -1079,7 +1072,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) return list() /datum/species/proc/check_weakness(obj/item, mob/living/attacker) - return 0 + return FALSE //////// //LIFE// @@ -1116,6 +1109,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(prob(round(-H.satiety/40))) H.Jitter(5) hunger_rate = 3 * HUNGER_FACTOR + hunger_rate *= H.physiology.hunger_mod H.nutrition = max(0, H.nutrition - hunger_rate) diff --git a/code/modules/mob/living/carbon/human/species_types/abductors.dm b/code/modules/mob/living/carbon/human/species_types/abductors.dm index 54549b15b9..5d3ca54d12 100644 --- a/code/modules/mob/living/carbon/human/species_types/abductors.dm +++ b/code/modules/mob/living/carbon/human/species_types/abductors.dm @@ -3,7 +3,7 @@ id = "abductor" say_mod = "gibbers" sexes = FALSE - species_traits = list(SPECIES_ORGANIC,NOBLOOD,NOEYES) + species_traits = list(NOBLOOD,NOEYES) inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_NOGUNS,TRAIT_NOHUNGER,TRAIT_NOBREATH) mutanttongue = /obj/item/organ/tongue/abductor var/scientist = FALSE // vars to not pollute spieces list with castes diff --git a/code/modules/mob/living/carbon/human/species_types/android.dm b/code/modules/mob/living/carbon/human/species_types/android.dm index 0178a99dad..24343f0f00 100644 --- a/code/modules/mob/living/carbon/human/species_types/android.dm +++ b/code/modules/mob/living/carbon/human/species_types/android.dm @@ -2,8 +2,9 @@ name = "Android" id = "android" say_mod = "states" - species_traits = list(SPECIES_ROBOTIC,NOBLOOD) + species_traits = list(NOBLOOD) inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOFIRE,TRAIT_PIERCEIMMUNE,TRAIT_NOHUNGER,TRAIT_LIMBATTACHMENT) + inherent_biotypes = list(MOB_ROBOTIC, MOB_HUMANOID) meat = null damage_overlay_type = "synth" mutanttongue = /obj/item/organ/tongue/robot diff --git a/code/modules/mob/living/carbon/human/species_types/angel.dm b/code/modules/mob/living/carbon/human/species_types/angel.dm index 878282647e..0cb18a29c6 100644 --- a/code/modules/mob/living/carbon/human/species_types/angel.dm +++ b/code/modules/mob/living/carbon/human/species_types/angel.dm @@ -2,7 +2,7 @@ name = "Angel" id = "angel" default_color = "FFFFFF" - species_traits = list(SPECIES_ORGANIC,EYECOLOR,HAIR,FACEHAIR,LIPS) + species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS) mutant_bodyparts = list("wings") default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "Angel") use_skintones = 1 diff --git a/code/modules/mob/living/carbon/human/species_types/corporate.dm b/code/modules/mob/living/carbon/human/species_types/corporate.dm index aa310723dd..e9761aac75 100644 --- a/code/modules/mob/living/carbon/human/species_types/corporate.dm +++ b/code/modules/mob/living/carbon/human/species_types/corporate.dm @@ -15,6 +15,6 @@ attack_sound = 'sound/weapons/resonator_blast.ogg' blacklisted = 1 use_skintones = 0 - species_traits = list(SPECIES_ORGANIC,NOBLOOD,EYECOLOR) + species_traits = list(NOBLOOD,EYECOLOR) inherent_traits = list(TRAIT_RADIMMUNE,TRAIT_VIRUSIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOHUNGER) sexes = 0 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm index 1665f62af1..16cfc027f0 100644 --- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm +++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm @@ -2,7 +2,7 @@ name = "dullahan" id = "dullahan" default_color = "FFFFFF" - species_traits = list(SPECIES_ORGANIC,EYECOLOR,HAIR,FACEHAIR,LIPS) + species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS) inherent_traits = list(TRAIT_NOHUNGER,TRAIT_NOBREATH) default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None") use_skintones = TRUE diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index 282e9044b4..6f05eb393d 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -2,7 +2,8 @@ name = "Flyperson" id = "fly" say_mod = "buzzes" - species_traits = list(SPECIES_ORGANIC, NOEYES) + species_traits = list(NOEYES) + inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID, MOB_BUG) mutanttongue = /obj/item/organ/tongue/fly mutantliver = /obj/item/organ/liver/fly mutantstomach = /obj/item/organ/stomach/fly diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index d274261a2b..72a92f907b 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -2,8 +2,9 @@ // Animated beings of stone. They have increased defenses, and do not need to breathe. They're also slow as fuuuck. name = "Golem" id = "iron golem" - species_traits = list(SPECIES_INORGANIC,NOBLOOD,MUTCOLORS,NO_UNDERWEAR) + species_traits = list(NOBLOOD,MUTCOLORS,NO_UNDERWEAR) inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOFIRE,TRAIT_NOGUNS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER) + inherent_biotypes = list(MOB_INORGANIC, MOB_HUMANOID) mutant_organs = list(/obj/item/organ/adamantine_resonator) speedmod = 2 armor = 55 @@ -566,7 +567,7 @@ limbs_id = "cultgolem" sexes = FALSE info_text = "As a Runic Golem, you possess eldritch powers granted by the Elder God Nar'Sie." - species_traits = list(SPECIES_INORGANIC,NOBLOOD,NO_UNDERWEAR,NOEYES) //no mutcolors + species_traits = list(NOBLOOD,NO_UNDERWEAR,NOEYES) //no mutcolors prefix = "Runic" var/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/golem/phase_shift @@ -620,7 +621,8 @@ limbs_id = "clockgolem" info_text = "As a clockwork golem, you are faster than \ other types of golem (being a machine), and are immune to electric shocks." - species_traits = list(SPECIES_ROBOTIC,NOBLOOD,NO_UNDERWEAR,NOEYES) + species_traits = list(NOBLOOD,NO_UNDERWEAR,NOEYES) + inherent_biotypes = list(MOB_ROBOTIC, MOB_HUMANOID) armor = 20 //Reinforced, but much less so to allow for fast movement attack_verb = "smash" attack_sound = 'sound/magic/clockwork/anima_fragment_attack.ogg' @@ -672,8 +674,9 @@ limbs_id = "clothgolem" sexes = FALSE info_text = "As a Cloth Golem, you are able to reform yourself after death, provided your remains aren't burned or destroyed. You are, of course, very flammable." - species_traits = list(SPECIES_UNDEAD,NOBLOOD,NO_UNDERWEAR) //no mutcolors, and can burn + species_traits = list(NOBLOOD,NO_UNDERWEAR) //no mutcolors, and can burn inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_NOBREATH,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOGUNS) + inherent_biotypes = list(MOB_UNDEAD, MOB_HUMANOID) armor = 15 //feels no pain, but not too resistant burnmod = 2 // don't get burned speedmod = 1 // not as heavy as stone diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index ffee4fa0a5..8e31c4e204 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -2,9 +2,9 @@ name = "Human" id = "human" default_color = "FFFFFF" - species_traits = list(MUTCOLORS_PARTSONLY,SPECIES_ORGANIC,EYECOLOR,HAIR,FACEHAIR,LIPS) - mutant_bodyparts = list("mam_tail", "mam_ears", "wings", "taur") - default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "wings" = "None", "taur" = "none") + species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS_PARTSONLY) + mutant_bodyparts = list("mam_tail", "mam_ears", "wings", "taur") // CITADEL EDIT gives humans snowflake parts + default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "wings" = "None", "taur" = "None") use_skintones = 1 skinned_type = /obj/item/stack/sheet/animalhide/human disliked_food = GROSS | RAW @@ -12,7 +12,7 @@ /datum/species/human/qualifies_for_rank(rank, list/features) - return TRUE + return TRUE //Pure humans are always allowed in all roles. //Curiosity killed the cat's wagging tail. /datum/species/human/spec_death(gibbed, mob/living/carbon/human/H) diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 8880df8dc5..aface5f9eb 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -4,7 +4,7 @@ id = "jelly" default_color = "00FF90" say_mod = "chirps" - species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,,HAIR,FACEHAIR,NOBLOOD) + species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD) inherent_traits = list(TRAIT_TOXINLOVER) mutant_bodyparts = list("mam_tail", "mam_ears", "taur") //CIT CHANGE default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None") //CIT CHANGE @@ -119,7 +119,7 @@ name = "Slimeperson" id = "slime" default_color = "00FFFF" - species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD) + species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD) say_mod = "says" hair_color = "mutcolor" hair_alpha = 150 diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index 15c8f70dc8..bd286e9bc2 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -4,7 +4,8 @@ id = "lizard" say_mod = "hisses" default_color = "00FF00" - species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,LIPS, HAIR, FACEHAIR) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,FACEHAIR) + inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID, MOB_REPTILE) mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs", "taur") mutanttongue = /obj/item/organ/tongue/lizard mutanttail = /obj/item/organ/tail/lizard @@ -17,8 +18,8 @@ meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/lizard skinned_type = /obj/item/stack/sheet/animalhide/lizard exotic_bloodtype = "L" - disliked_food = NONE - liked_food = NONE + disliked_food = GRAIN | DAIRY + liked_food = GROSS | MEAT /datum/species/lizard/after_equip_job(datum/job/J, mob/living/carbon/human/H) H.grant_language(/datum/language/draconic) @@ -36,7 +37,7 @@ /datum/species/lizard/qualifies_for_rank(rank, list/features) return TRUE - + //I wag in death /datum/species/lizard/spec_death(gibbed, mob/living/carbon/human/H) if(H) diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index 8735d6ceb6..7d5dc2022f 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -3,7 +3,8 @@ id = "moth" say_mod = "flutters" default_color = "00FF00" - species_traits = list(LIPS, SPECIES_ORGANIC, NOEYES) + species_traits = list(LIPS, NOEYES) + inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID, MOB_BUG) mutant_bodyparts = list("moth_wings") default_features = list("moth_wings" = "Plain") attack_verb = "slash" diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm index 5209fe8310..d1f41a4aca 100644 --- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm +++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm @@ -4,8 +4,9 @@ say_mod = "rattles" sexes = 0 meat = /obj/item/stack/sheet/mineral/plasma - species_traits = list(SPECIES_INORGANIC,NOBLOOD,NOTRANSSTING) + species_traits = list(NOBLOOD,NOTRANSSTING) inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_RADIMMUNE,TRAIT_NOHUNGER) + inherent_biotypes = list(MOB_INORGANIC, MOB_HUMANOID) mutantlungs = /obj/item/organ/lungs/plasmaman mutanttongue = /obj/item/organ/tongue/bone/plasmaman mutantliver = /obj/item/organ/liver/plasmaman diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index f3360e47fb..3e238f8a53 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -3,7 +3,7 @@ name = "Podperson" id = "pod" default_color = "59CE00" - species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR) + species_traits = list(MUTCOLORS,EYECOLOR) attack_verb = "slash" attack_sound = 'sound/weapons/slice.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index 17e7649cb6..3bed07a919 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -9,7 +9,7 @@ blacklisted = 1 ignored_by = list(/mob/living/simple_animal/hostile/faithless) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/shadow - species_traits = list(SPECIES_ORGANIC,NOBLOOD,NOEYES) + species_traits = list(NOBLOOD,NOEYES) inherent_traits = list(TRAIT_RADIMMUNE,TRAIT_VIRUSIMMUNE,TRAIT_NOBREATH) dangerous_existence = 1 diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index c6a7e7a127..e3a72601ed 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -6,8 +6,9 @@ blacklisted = 1 sexes = 0 meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton - species_traits = list(SPECIES_UNDEAD,NOBLOOD) + species_traits = list(NOBLOOD) inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NOHUNGER,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT) + inherent_biotypes = list(MOB_UNDEAD, MOB_HUMANOID) mutanttongue = /obj/item/organ/tongue/bone damage_overlay_type = ""//let's not show bloody wounds or burns over bones. disliked_food = NONE diff --git a/code/modules/mob/living/carbon/human/species_types/synths.dm b/code/modules/mob/living/carbon/human/species_types/synths.dm index 786872544e..51c23fd21a 100644 --- a/code/modules/mob/living/carbon/human/species_types/synths.dm +++ b/code/modules/mob/living/carbon/human/species_types/synths.dm @@ -3,14 +3,15 @@ id = "synth" say_mod = "beep boops" //inherited from a user's real species sexes = 0 - species_traits = list(SPECIES_ROBOTIC,NOTRANSSTING) //all of these + whatever we inherit from the real species + species_traits = list(NOTRANSSTING) //all of these + whatever we inherit from the real species inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOHUNGER,TRAIT_NOBREATH) + inherent_biotypes = list(MOB_ROBOTIC, MOB_HUMANOID) dangerous_existence = 1 blacklisted = 1 meat = null damage_overlay_type = "synth" limbs_id = "synth" - var/list/initial_species_traits = list(SPECIES_ROBOTIC,NOTRANSSTING) //for getting these values back for assume_disguise() + var/list/initial_species_traits = list(NOTRANSSTING) //for getting these values back for assume_disguise() var/list/initial_inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOHUNGER,TRAIT_NOBREATH) var/disguise_fail_health = 75 //When their health gets to this level their synthflesh partially falls off var/datum/species/fake_species = null //a species to do most of our work for us, unless we're damaged @@ -46,7 +47,6 @@ inherent_traits = initial_inherent_traits.Copy() species_traits |= S.species_traits inherent_traits |= S.inherent_traits - species_traits -= list(SPECIES_ORGANIC, SPECIES_INORGANIC, SPECIES_UNDEAD) attack_verb = S.attack_verb attack_sound = S.attack_sound miss_sound = S.miss_sound diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index e27d7f4f35..59052e2249 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -2,8 +2,9 @@ name = "vampire" id = "vampire" default_color = "FFFFFF" - species_traits = list(SPECIES_UNDEAD,EYECOLOR,HAIR,FACEHAIR,LIPS,DRINKSBLOOD) + species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,DRINKSBLOOD) inherent_traits = list(TRAIT_NOHUNGER,TRAIT_NOBREATH) + inherent_biotypes = list(MOB_UNDEAD, MOB_HUMANOID) default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None") exotic_bloodtype = "U" use_skintones = TRUE diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index 7fcc470661..801d0a7192 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -8,8 +8,9 @@ sexes = 0 blacklisted = 1 meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie - species_traits = list(SPECIES_UNDEAD,NOBLOOD,NOZOMBIE,NOTRANSSTING) + species_traits = list(NOBLOOD,NOZOMBIE,NOTRANSSTING) inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT,TRAIT_NOBREATH) + inherent_biotypes = list(MOB_UNDEAD, MOB_HUMANOID) mutanttongue = /obj/item/organ/tongue/zombie var/static/list/spooks = list('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/wail.ogg') disliked_food = NONE @@ -74,7 +75,6 @@ id = "goofzombies" limbs_id = "zombie" //They look like zombies sexes = 0 - species_traits = list(SPECIES_ORGANIC) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie mutanttongue = /obj/item/organ/tongue/zombie diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm index 62e1a53355..7f0e12e0a3 100644 --- a/code/modules/mob/living/carbon/inventory.dm +++ b/code/modules/mob/living/carbon/inventory.dm @@ -72,11 +72,8 @@ put_in_hands(I) update_inv_hands() if(slot_in_backpack) - var/obj/item/storage/B = back - var/prev_jimmies = B.rustle_jimmies - B.rustle_jimmies = FALSE //don't conspicously rustle - B.handle_item_insertion(I, 1, src) - B.rustle_jimmies = prev_jimmies + if(!back.SendSignal(COMSIG_TRY_STORAGE_INSERT, I, src, TRUE)) + not_handled = TRUE else not_handled = TRUE diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 24baee533a..6513985704 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -1,4 +1,10 @@ +#define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point +#define HEAT_DAMAGE_LEVEL_2 3 //Amount of damage applied when your body temperature passes the 400K point +#define HEAT_DAMAGE_LEVEL_3 10 //Amount of damage applied when your body temperature passes the 460K point and you are on fire +#define COLD_DAMAGE_LEVEL_1 0.5 //Amount of damage applied when your body temperature just passes the 260.15k safety point +#define COLD_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when your body temperature passes the 200K point +#define COLD_DAMAGE_LEVEL_3 3 //Amount of damage applied when your body temperature passes the 120K point /mob/living/carbon/monkey @@ -170,3 +176,11 @@ adjust_bodytemperature(BODYTEMP_HEATING_MAX) SendSignal(COMSIG_ADD_MOOD_EVENT, "on_fire", /datum/mood_event/on_fire) + +#undef HEAT_DAMAGE_LEVEL_1 +#undef HEAT_DAMAGE_LEVEL_2 +#undef HEAT_DAMAGE_LEVEL_3 + +#undef COLD_DAMAGE_LEVEL_1 +#undef COLD_DAMAGE_LEVEL_2 +#undef COLD_DAMAGE_LEVEL_3 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 7713be5e4b..52504235fe 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -7,6 +7,7 @@ gender = NEUTER pass_flags = PASSTABLE ventcrawler = VENTCRAWLER_NUDE + mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/monkey = 5, /obj/item/stack/sheet/animalhide/monkey = 1) type_of_meat = /obj/item/reagent_containers/food/snacks/meat/slab/monkey gib_type = /obj/effect/decal/cleanable/blood/gibs diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 54b9705948..bf06cd1ebb 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -395,6 +395,7 @@ update_canmove() /mob/proc/get_contents() + /*CIT CHANGE - comments out lay_down proc to be modified in modular_citadel /mob/living/proc/lay_down() set name = "Rest" @@ -404,30 +405,18 @@ to_chat(src, "You are now [resting ? "resting" : "getting up"].") update_canmove() */ -//Recursive function to find everything a mob is holding. -/mob/living/get_contents(obj/item/storage/Storage = null) - var/list/L = list() - - if(Storage) //If it called itself - L += Storage.return_inv() - return L - else - L += src.contents - for(var/obj/item/storage/S in src.contents) //Check for storage items - L += get_contents(S) - for(var/obj/item/clothing/under/U in src.contents) //Check for jumpsuit accessories - L += U.contents - for(var/obj/item/folder/F in src.contents) //Check for folders - L += F.contents - return L - -/mob/living/proc/check_contents_for(A) - var/list/L = src.get_contents() - - for(var/obj/B in L) - if(B.type == A) - return 1 - return 0 +//Recursive function to find everything a mob is holding. Really shitty proc tbh. +/mob/living/get_contents() + . = list() + . |= list(src) + for(var/obj/o in .) + var/list/newlist = list() + o.SendSignal(COMSIG_TRY_STORAGE_RETURN_INVENTORY, newlist) + . |= newlist + for(var/obj/item/clothing/under/U in .) + . |= U.contents + for(var/obj/item/folder/F in .) + . |= F.contents // Living mobs use can_inject() to make sure that the mob is not syringe-proof in general. /mob/living/proc/can_inject() @@ -545,8 +534,8 @@ if(pulledby && moving_diagonally != FIRST_DIAG_STEP && get_dist(src, pulledby) > 1)//separated from our puller and not in the middle of a diagonal move. pulledby.stop_pulling() - if (s_active && !(CanReach(s_active,view_only = TRUE))) - s_active.close(src) + if(active_storage && !(CanReach(active_storage.parent,view_only = TRUE))) + active_storage.close(src) if(lying && !buckled && prob(getBruteLoss()*200/maxHealth)) makeTrail(newloc, T, old_direction) @@ -739,10 +728,10 @@ animate(src, pixel_y = pixel_y + 2, time = 10, loop = -1) sleep(10) animate(src, pixel_y = pixel_y - 2, time = 10, loop = -1) - floating = 1 + floating = TRUE else if(((!on || fixed) && floating)) animate(src, pixel_y = get_standard_pixel_y_offset(lying), time = 10) - floating = 0 + floating = FALSE // The src mob is trying to strip an item from someone // Override if a certain type of mob should be behave differently when stripping items (can't, for example) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index f31d95a9d7..6dfaa565fa 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -53,6 +53,7 @@ var/limb_destroyer = 0 //1 Sets AI behavior that allows mobs to target and dismember limbs with their basic attack. var/mob_size = MOB_SIZE_HUMAN + var/list/mob_biotypes = list(MOB_ORGANIC) var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature.. var/list/image/staticOverlays = list() var/has_limbs = 0 //does the mob have distinct limbs?(arms,legs, chest,head) diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index ae95a317a3..a060c899d9 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -121,11 +121,10 @@ T = get_turf(src) AIarea = get_area(src) if(AIarea) - for(var/area/A in AIarea.related) - for (var/obj/machinery/power/apc/APC in A) - if (!(APC.stat & BROKEN)) - theAPC = APC - break + for (var/obj/machinery/power/apc/APC in AIarea) + if (!(APC.stat & BROKEN)) + theAPC = APC + break if (!theAPC) switch(PRP) if(1) diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm index ce1854c40d..5bb9d4d111 100644 --- a/code/modules/mob/living/silicon/robot/inventory.dm +++ b/code/modules/mob/living/silicon/robot/inventory.dm @@ -16,8 +16,7 @@ sight_mode &= ~S.sight_mode update_sight() else if(istype(O, /obj/item/storage/bag/tray/)) - var/obj/item/storage/bag/tray/T = O - T.do_quick_empty() + O.SendSignal(COMSIG_TRY_STORAGE_QUICK_EMPTY) //CITADEL EDIT reee proc, Dogborg modules if(istype(O,/obj/item/gun/energy/laser/cyborg)) laser = FALSE diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 030a2425ff..137dbba6d0 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -81,9 +81,11 @@ var/obj/item/hat var/hat_offset = -3 var/list/equippable_hats = list(/obj/item/clothing/head/caphat, - /obj/item/clothing/head/hardhat/cakehat, + /obj/item/clothing/head/hardhat, /obj/item/clothing/head/centhat, /obj/item/clothing/head/HoS, + /obj/item/clothing/head/beret, + /obj/item/clothing/head/kitty, /obj/item/clothing/head/hopcap, /obj/item/clothing/head/wizard, /obj/item/clothing/head/nursehat, diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 083ad38caa..aedbad9e54 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -10,6 +10,7 @@ bubble_icon = "machine" weather_immunities = list("ash") possible_a_intents = list(INTENT_HELP, INTENT_HARM) + mob_biotypes = list(MOB_ROBOTIC) var/datum/ai_laws/laws = null//Now... THEY ALL CAN ALL HAVE LAWS var/last_lawchange_announce = 0 diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 91a3eeea76..3e3f603733 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -3,6 +3,7 @@ icon = 'icons/mob/aibots.dmi' layer = MOB_LAYER gender = NEUTER + mob_biotypes = list(MOB_ROBOTIC) light_range = 3 stop_automated_movement = 1 wander = 0 diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index 8b33886dcb..76797457a6 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -339,7 +339,7 @@ if(mode == BOT_REPAIRING && F && src.loc == F) F.broken = 0 F.burnt = 0 - F.ChangeTurf(/turf/open/floor/plasteel) + F.PlaceOnTop(/turf/open/floor/plasteel) if(replacetiles && F.type != initial(tiletype.turf_type) && specialtiles && !isplatingturf(F)) anchored = TRUE @@ -350,7 +350,7 @@ if(mode == BOT_REPAIRING && F && src.loc == F) F.broken = 0 F.burnt = 0 - F.ChangeTurf(initial(tiletype.turf_type)) + F.PlaceOnTop(initial(tiletype.turf_type)) specialtiles -= 1 if(specialtiles == 0) speak("Requesting refill of custom floortiles to continue replacing.") diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index f50b7c0ccf..727f7cb139 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -3,6 +3,7 @@ real_name = "Construct" desc = "" gender = NEUTER + mob_biotypes = list(MOB_INORGANIC) speak_emote = list("hisses") response_help = "thinks better of touching" response_disarm = "flails at" diff --git a/code/modules/mob/living/simple_animal/friendly/butterfly.dm b/code/modules/mob/living/simple_animal/friendly/butterfly.dm index 6a00ca0006..2fbbad66d8 100644 --- a/code/modules/mob/living/simple_animal/friendly/butterfly.dm +++ b/code/modules/mob/living/simple_animal/friendly/butterfly.dm @@ -18,6 +18,7 @@ pass_flags = PASSTABLE | PASSGRILLE | PASSMOB ventcrawler = VENTCRAWLER_ALWAYS mob_size = MOB_SIZE_TINY + mob_biotypes = list(MOB_ORGANIC, MOB_BUG) gold_core_spawnable = FRIENDLY_SPAWN verb_say = "flutters" verb_ask = "flutters inquisitively" diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 47b00cb7f5..75e7b668ea 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -17,6 +17,7 @@ ventcrawler = VENTCRAWLER_ALWAYS pass_flags = PASSTABLE mob_size = MOB_SIZE_SMALL + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) minbodytemp = 200 maxbodytemp = 400 unsuitable_atmos_damage = 1 diff --git a/code/modules/mob/living/simple_animal/friendly/cockroach.dm b/code/modules/mob/living/simple_animal/friendly/cockroach.dm index 5a9ae07374..3887e4b6d9 100644 --- a/code/modules/mob/living/simple_animal/friendly/cockroach.dm +++ b/code/modules/mob/living/simple_animal/friendly/cockroach.dm @@ -12,6 +12,7 @@ maxbodytemp = INFINITY pass_flags = PASSTABLE | PASSGRILLE | PASSMOB mob_size = MOB_SIZE_TINY + mob_biotypes = list(MOB_ORGANIC, MOB_BUG) response_help = "pokes" response_disarm = "shoos" response_harm = "splats" diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 5c68ca8117..90532829df 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -1,6 +1,7 @@ //Dogs. /mob/living/simple_animal/pet/dog + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) response_help = "pets" response_disarm = "bops" response_harm = "kicks" diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm index 450377b07a..3ebf5b97d8 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -35,6 +35,7 @@ sight = (SEE_TURFS | SEE_OBJS) status_flags = (CANPUSH | CANSTUN | CANKNOCKDOWN) gender = NEUTER + mob_biotypes = list(MOB_ROBOTIC) speak_emote = list("chirps") bubble_icon = "machine" initial_language_holder = /datum/language_holder/drone diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 9a5d2fb0ee..9423cf9df6 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -17,6 +17,7 @@ response_disarm = "gently pushes aside" response_harm = "kicks" faction = list("neutral") + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) attack_same = 1 attacktext = "kicks" attack_sound = 'sound/weapons/punch1.ogg' @@ -109,6 +110,7 @@ icon_dead = "cow_dead" icon_gib = "cow_gib" gender = FEMALE + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) speak = list("moo?","moo","MOOOOOO") speak_emote = list("moos","moos hauntingly") emote_hear = list("brays.") @@ -183,6 +185,7 @@ icon_dead = "chick_dead" icon_gib = "chick_gib" gender = FEMALE + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) speak = list("Cherp.","Cherp?","Chirrup.","Cheep!") speak_emote = list("cheeps") emote_hear = list("cheeps.") @@ -226,6 +229,7 @@ name = "\improper chicken" desc = "Hopefully the eggs are good this season." gender = FEMALE + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) icon_state = "chicken_brown" icon_living = "chicken_brown" icon_dead = "chicken_brown_dead" diff --git a/code/modules/mob/living/simple_animal/friendly/lizard.dm b/code/modules/mob/living/simple_animal/friendly/lizard.dm index e596b09ba9..6b179ba857 100644 --- a/code/modules/mob/living/simple_animal/friendly/lizard.dm +++ b/code/modules/mob/living/simple_animal/friendly/lizard.dm @@ -18,6 +18,7 @@ density = FALSE pass_flags = PASSTABLE | PASSMOB mob_size = MOB_SIZE_SMALL + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST, MOB_REPTILE) gold_core_spawnable = FRIENDLY_SPAWN obj_damage = 0 environment_smash = ENVIRONMENT_SMASH_NONE diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index ff9363ef64..be6f4eef71 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -21,6 +21,7 @@ ventcrawler = VENTCRAWLER_ALWAYS pass_flags = PASSTABLE | PASSGRILLE | PASSMOB mob_size = MOB_SIZE_TINY + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) var/body_color //brown, gray and white, leave blank for random gold_core_spawnable = FRIENDLY_SPAWN var/chew_probability = 1 diff --git a/code/modules/mob/living/simple_animal/friendly/pet.dm b/code/modules/mob/living/simple_animal/friendly/pet.dm index 8c39cf0c0b..8df0ee83fe 100644 --- a/code/modules/mob/living/simple_animal/friendly/pet.dm +++ b/code/modules/mob/living/simple_animal/friendly/pet.dm @@ -1,6 +1,7 @@ /mob/living/simple_animal/pet icon = 'icons/mob/pets.dmi' mob_size = MOB_SIZE_SMALL + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) var/obj/item/clothing/neck/petcollar/pcollar var/collar_type var/unique_pet = FALSE diff --git a/code/modules/mob/living/simple_animal/friendly/sloth.dm b/code/modules/mob/living/simple_animal/friendly/sloth.dm index 8b7d70ef9f..f112b3f98e 100644 --- a/code/modules/mob/living/simple_animal/friendly/sloth.dm +++ b/code/modules/mob/living/simple_animal/friendly/sloth.dm @@ -14,6 +14,7 @@ response_help = "pets" response_disarm = "gently pushes aside" response_harm = "kicks" + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) gold_core_spawnable = FRIENDLY_SPAWN melee_damage_lower = 18 melee_damage_upper = 18 diff --git a/code/modules/mob/living/simple_animal/friendly/snake.dm b/code/modules/mob/living/simple_animal/friendly/snake.dm index caa9f10905..d8912ee25f 100644 --- a/code/modules/mob/living/simple_animal/friendly/snake.dm +++ b/code/modules/mob/living/simple_animal/friendly/snake.dm @@ -30,6 +30,7 @@ density = FALSE pass_flags = PASSTABLE | PASSMOB mob_size = MOB_SIZE_SMALL + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST, MOB_REPTILE) gold_core_spawnable = FRIENDLY_SPAWN obj_damage = 0 environment_smash = ENVIRONMENT_SMASH_NONE diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 87b2812194..c7b499fa5a 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -10,6 +10,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians desc = "A mysterious being that stands by its charge, ever vigilant." speak_emote = list("hisses") gender = NEUTER + mob_biotypes = list(MOB_INORGANIC) bubble_icon = "guardian" response_help = "passes through" response_disarm = "flails at" diff --git a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm index 841e189002..94edad2728 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm @@ -84,4 +84,4 @@ /mob/living/simple_animal/hostile/guardian/dextrous/regenerate_icons() ..() - update_inv_internal_storage() \ No newline at end of file + update_inv_internal_storage() diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index 69a668d3fd..8573c3b7cb 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -6,6 +6,7 @@ icon_living = "bear" icon_dead = "bear_dead" icon_gib = "bear_gib" + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) speak = list("RAWR!","Rawr!","GRR!","Growl!") speak_emote = list("growls", "roars") emote_hear = list("rawrs.","grumbles.","grawls.") diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index eb13446370..d8edf7fe67 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -37,6 +37,7 @@ pass_flags = PASSTABLE | PASSGRILLE | PASSMOB density = FALSE mob_size = MOB_SIZE_TINY + mob_biotypes = list(MOB_ORGANIC, MOB_BUG) movement_type = FLYING gold_core_spawnable = HOSTILE_SPAWN search_objects = 1 //have to find those plant trays! diff --git a/code/modules/mob/living/simple_animal/hostile/bosses/paperwizard.dm b/code/modules/mob/living/simple_animal/hostile/bosses/paperwizard.dm index 4a8e7ea455..1b766a51d6 100644 --- a/code/modules/mob/living/simple_animal/hostile/bosses/paperwizard.dm +++ b/code/modules/mob/living/simple_animal/hostile/bosses/paperwizard.dm @@ -2,6 +2,7 @@ /mob/living/simple_animal/hostile/boss/paper_wizard name = "Mjor the Creative" desc = "A wizard with a taste for the arts." + mob_biotypes = list(MOB_INORGANIC, MOB_HUMANOID) boss_abilities = list(/datum/action/boss/wizard_summon_minions, /datum/action/boss/wizard_mimic) faction = list("hostile","stickman") del_on_death = TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index 4b494aeb5f..41644ec234 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -7,6 +7,7 @@ icon_living = "carp" icon_dead = "carp_dead" icon_gib = "carp_gib" + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) speak_chance = 0 turns_per_move = 5 butcher_results = list(/obj/item/reagent_containers/food/snacks/carpmeat = 2) diff --git a/code/modules/mob/living/simple_animal/hostile/cat_butcher.dm b/code/modules/mob/living/simple_animal/hostile/cat_butcher.dm index 0489215665..a9e167c6e6 100644 --- a/code/modules/mob/living/simple_animal/hostile/cat_butcher.dm +++ b/code/modules/mob/living/simple_animal/hostile/cat_butcher.dm @@ -22,6 +22,7 @@ attacktext = "slashes at" attack_sound = 'sound/weapons/circsawhit.ogg' a_intent = INTENT_HARM + mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) loot = list(/obj/effect/mob_spawn/human/corpse/cat_butcher, /obj/item/circular_saw) atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) unsuitable_atmos_damage = 15 diff --git a/code/modules/mob/living/simple_animal/hostile/eyeballs.dm b/code/modules/mob/living/simple_animal/hostile/eyeballs.dm index a3e6dd6540..44f7f9c9f8 100644 --- a/code/modules/mob/living/simple_animal/hostile/eyeballs.dm +++ b/code/modules/mob/living/simple_animal/hostile/eyeballs.dm @@ -7,6 +7,7 @@ icon_living = "eyeball" icon_gib = "" gender = NEUTER + mob_biotypes = list(MOB_ORGANIC) response_help = "pets" response_disarm = "gently pushes aside" response_harm = "hits" diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index 0650f90fc6..d267da624f 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -4,6 +4,7 @@ icon_state = "faithless" icon_living = "faithless" icon_dead = "faithless_dead" + mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) gender = MALE speak_chance = 0 turns_per_move = 5 diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index 823b5322d3..8755ecbfbf 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -22,6 +22,7 @@ icon_state = "guard" icon_living = "guard" icon_dead = "guard_dead" + mob_biotypes = list(MOB_ORGANIC, MOB_BUG) speak_emote = list("chitters") emote_hear = list("chitters") speak_chance = 5 diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm index 21895d58c0..6dc76bb6a7 100644 --- a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm +++ b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm @@ -9,6 +9,7 @@ icon_state = "crawling" icon_living = "crawling" icon_dead = "dead" + mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) speak_chance = 80 maxHealth = 220 health = 220 diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index 41a08a949c..1a92e0b69f 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -10,6 +10,7 @@ icon_living = "basic" icon_dead = "basic" gender = NEUTER + mob_biotypes = list(MOB_ROBOTIC) health = 15 maxHealth = 15 healable = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 93f319d2a1..68b92c9958 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -496,4 +496,4 @@ mob/living/simple_animal/hostile/proc/DestroySurroundings() // for use with mega if (isturf(M.loc)) . += M else if (M.loc.type in hostile_machines) - . += M.loc \ No newline at end of file + . += M.loc diff --git a/code/modules/mob/living/simple_animal/hostile/illusion.dm b/code/modules/mob/living/simple_animal/hostile/illusion.dm index dc31062df5..f78f7f7d82 100644 --- a/code/modules/mob/living/simple_animal/hostile/illusion.dm +++ b/code/modules/mob/living/simple_animal/hostile/illusion.dm @@ -6,6 +6,7 @@ icon_living = "static" icon_dead = "null" gender = NEUTER + mob_biotypes = list() melee_damage_lower = 5 melee_damage_upper = 5 a_intent = INTENT_HARM diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm index eb2b1be1d4..92e04aaaa4 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm @@ -10,6 +10,7 @@ icon_state = "leaper" icon_living = "leaper" icon_dead = "leaper_dead" + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) maxHealth = 300 health = 300 ranged = TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/mega_arachnid.dm b/code/modules/mob/living/simple_animal/hostile/jungle/mega_arachnid.dm index be51502a96..6ca550b9b7 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle/mega_arachnid.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle/mega_arachnid.dm @@ -7,6 +7,7 @@ icon_state = "arachnid" icon_living = "arachnid" icon_dead = "arachnid_dead" + mob_biotypes = list(MOB_ORGANIC, MOB_BUG) melee_damage_lower = 30 melee_damage_upper = 30 maxHealth = 300 diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/mook.dm b/code/modules/mob/living/simple_animal/hostile/jungle/mook.dm index 7aabc37679..1fde4a9cd4 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle/mook.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle/mook.dm @@ -13,6 +13,7 @@ icon_state = "mook" icon_living = "mook" icon_dead = "mook_dead" + mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) pixel_x = -16 maxHealth = 45 health = 45 diff --git a/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm b/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm index c18129137d..2e783d84d8 100644 --- a/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm +++ b/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm @@ -23,6 +23,7 @@ desc = "Death to Nanotrasen. This variant comes in MECHA DEATH flavour." wanted_objects = list() search_objects = 0 + mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) var/spawn_mecha_type = /obj/mecha/combat/marauder/mauler/loaded var/obj/mecha/mecha //Ref to pilot's mecha instance diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm index d5ecd0e985..c5f7998260 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm @@ -28,6 +28,7 @@ Difficulty: Medium icon_state = "miner" icon_living = "miner" icon = 'icons/mob/broadMobs.dmi' + mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) light_color = "#E4C7C5" movement_type = GROUND speak_emote = list("roars") @@ -262,4 +263,3 @@ Difficulty: Medium invisibility = 100 #undef MINER_DASH_RANGE -#undef MEDAL_PREFIX diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm index 1dfd27c7e5..ad24e66980 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -398,5 +398,3 @@ Difficulty: Hard if(istype(mover, /mob/living/simple_animal/hostile/megafauna/bubblegum)) return 1 return 0 - -#undef MEDAL_PREFIX diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index b107eec0c0..97c2a4b5c2 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -785,5 +785,3 @@ Difficulty: Very Hard #undef ACTIVATE_MOB_BUMP #undef ACTIVATE_WEAPON #undef ACTIVATE_MAGIC - -#undef MEDAL_PREFIX diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm index 631316e6af..79b2e15fea 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm @@ -390,5 +390,3 @@ Difficulty: Medium /mob/living/simple_animal/hostile/megafauna/dragon/lesser/grant_achievement(medaltype,scoretype) return - -#undef MEDAL_PREFIX diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm index 22891265ae..f068a87d11 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm @@ -692,5 +692,3 @@ Difficulty: Hard gpstag = "Zealous Signal" desc = "Heed its words." invisibility = 100 - -#undef MEDAL_PREFIX diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm index 52f981f43c..351a5ab289 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm @@ -201,5 +201,3 @@ Difficulty: Medium playsound(user, 'sound/magic/staff_change.ogg', 200, 0) A.telegraph() storm_cooldown = world.time + 200 - -#undef MEDAL_PREFIX diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index 3f6fee9935..6d05987833 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -6,6 +6,7 @@ a_intent = INTENT_HARM sentience_type = SENTIENCE_BOSS environment_smash = ENVIRONMENT_SMASH_RWALLS + mob_biotypes = list(MOB_ORGANIC, MOB_EPIC) obj_damage = 400 light_range = 3 faction = list("mining", "boss") @@ -18,8 +19,8 @@ damage_coeff = list(BRUTE = 1, BURN = 0.5, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) minbodytemp = 0 maxbodytemp = INFINITY - aggro_vision_range = 18 vision_range = 5 + aggro_vision_range = 18 anchored = TRUE mob_size = MOB_SIZE_LARGE layer = LARGE_MOB_LAYER //Looks weird with them slipping under mineral walls and cameras and shit otherwise @@ -79,15 +80,14 @@ . = ..() if(. && isliving(target)) var/mob/living/L = target - if(L.stat >= SOFT_CRIT) + if(L.stat != DEAD) + if(!client && ranged && ranged_cooldown <= world.time) + OpenFire() + else if(L.stat >= SOFT_CRIT) if(vore_active == TRUE && L.devourable == TRUE) dragon_feeding(src,L) else if(L.stat == DEAD) devour(L) - else - if(L.stat != DEAD) - if(!client && ranged && ranged_cooldown <= world.time) - OpenFire() /mob/living/simple_animal/hostile/megafauna/proc/devour(mob/living/L) if(!L) @@ -127,4 +127,4 @@ SSmedals.UnlockMedal("[medaltype] [BOSS_KILL_MEDAL_CRUSHER]", C) SSmedals.SetScore(BOSS_SCORE, C, 1) SSmedals.SetScore(score_type, C, 1) - return TRUE \ No newline at end of file + return TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm index ef7aa175a4..5c93f0fa56 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm @@ -1,5 +1,3 @@ -#define MEDAL_PREFIX "Swarmer Beacon" - /* Swarmer Beacon @@ -49,7 +47,8 @@ GLOBAL_LIST_INIT(AISwarmerCapsByType, list(/mob/living/simple_animal/hostile/swa icon_state = "swarmer_console" health = 750 maxHealth = 750 //""""low-ish"""" HP because it's a passive boss, and the swarm itself is the real foe - medal_type = MEDAL_PREFIX + mob_biotypes = list(MOB_ROBOTIC) + medal_type = BOSS_MEDAL_SWARMERS score_type = SWARMER_BEACON_SCORE faction = list("mining", "boss", "swarmer") weather_immunities = list("lava","ash") @@ -292,7 +291,3 @@ GLOBAL_LIST_INIT(AISwarmerCapsByType, list(/mob/living/simple_animal/hostile/swa desc = "A catwalk-like mesh, produced by swarmers to allow them to navigate hostile terrain." icon = 'icons/obj/smooth_structures/swarmer_catwalk.dmi' icon_state = "swarmer_catwalk" - - - -#undef MEDAL_PREFIX diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index 7259a730e5..ca5323a978 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -12,6 +12,7 @@ maxHealth = 250 health = 250 gender = NEUTER + mob_biotypes = list(MOB_INORGANIC) harm_intent_damage = 5 melee_damage_lower = 8 diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm index 972e05b1e5..2fbcf376dd 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm @@ -8,6 +8,7 @@ icon_aggro = "Basilisk_alert" icon_dead = "Basilisk_dead" icon_gib = "syndicate_gib" + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) move_to_delay = 20 projectiletype = /obj/item/projectile/temp/basilisk projectilesound = 'sound/weapons/pierce.ogg' diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/curse_blob.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/curse_blob.dm index cf8a6706e8..20916c9311 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/curse_blob.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/curse_blob.dm @@ -5,6 +5,7 @@ icon_state = "curseblob" icon_living = "curseblob" icon_aggro = "curseblob" + mob_biotypes = list(MOB_SPIRIT) movement_type = FLYING move_to_delay = 5 vision_range = 20 diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm index ea8c817581..2041f64154 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm @@ -8,6 +8,7 @@ icon_aggro = "Goldgrub_alert" icon_dead = "Goldgrub_dead" icon_gib = "syndicate_gib" + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) vision_range = 2 aggro_vision_range = 9 move_to_delay = 5 diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm index 0d9093ac77..8eb6ff0f06 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm @@ -8,6 +8,7 @@ icon_aggro = "Goliath_alert" icon_dead = "Goliath_dead" icon_gib = "syndicate_gib" + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) mouse_opacity = MOUSE_OPACITY_OPAQUE move_to_delay = 40 ranged = 1 diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm index 3c40bacde8..c2d0a214b4 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm @@ -6,6 +6,7 @@ icon_state = "gutlunch" icon_living = "gutlunch" icon_dead = "gutlunch" + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) speak_emote = list("warbles", "quavers") emote_hear = list("trills.") emote_see = list("sniffs.", "burps.") diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index 8e32479be1..4c5c4f50a0 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -7,6 +7,7 @@ icon_aggro = "Hivelord_alert" icon_dead = "Hivelord_dead" icon_gib = "syndicate_gib" + mob_biotypes = list(MOB_ORGANIC) mouse_opacity = MOUSE_OPACITY_OPAQUE move_to_delay = 14 ranged = 1 @@ -96,6 +97,7 @@ icon_aggro = "legion" icon_dead = "legion" icon_gib = "syndicate_gib" + mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) obj_damage = 60 melee_damage_lower = 15 melee_damage_upper = 15 diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm index 3d435de4e2..0c3dc7c0aa 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm @@ -39,7 +39,7 @@ for(var/F in RANGE_TURFS(1, src)) if(ismineralturf(F)) var/turf/closed/mineral/M = F - M.ChangeTurf(M.turf_type, null, CHANGETURF_IGNORE_AIR) + M.ScrapeAway(null, CHANGETURF_IGNORE_AIR) gps = new /obj/item/device/gps/internal(src) /mob/living/simple_animal/hostile/spawner/lavaland/Destroy() diff --git a/code/modules/mob/living/simple_animal/hostile/nanotrasen.dm b/code/modules/mob/living/simple_animal/hostile/nanotrasen.dm index 0d4021400c..c02b9259b8 100644 --- a/code/modules/mob/living/simple_animal/hostile/nanotrasen.dm +++ b/code/modules/mob/living/simple_animal/hostile/nanotrasen.dm @@ -6,6 +6,7 @@ icon_living = "nanotrasen" icon_dead = null icon_gib = "syndicate_gib" + mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) speak_chance = 12 turns_per_move = 5 response_help = "pokes" diff --git a/code/modules/mob/living/simple_animal/hostile/netherworld.dm b/code/modules/mob/living/simple_animal/hostile/netherworld.dm index b246f088ee..8e08012909 100644 --- a/code/modules/mob/living/simple_animal/hostile/netherworld.dm +++ b/code/modules/mob/living/simple_animal/hostile/netherworld.dm @@ -4,6 +4,7 @@ icon_state = "otherthing" icon_living = "otherthing" icon_dead = "otherthing-dead" + mob_biotypes = list(MOB_INORGANIC) health = 80 maxHealth = 80 obj_damage = 100 @@ -73,6 +74,7 @@ maxHealth = 50 spawn_time = 600 //1 minute max_mobs = 15 + mob_biotypes = list(MOB_INORGANIC) icon = 'icons/mob/nest.dmi' spawn_text = "crawls through" mob_types = list(/mob/living/simple_animal/hostile/netherworld/migo, /mob/living/simple_animal/hostile/netherworld, /mob/living/simple_animal/hostile/netherworld/blankbody) diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm index e1ccbee712..714d2c7e33 100644 --- a/code/modules/mob/living/simple_animal/hostile/pirate.dm +++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm @@ -5,6 +5,7 @@ icon_state = "piratemelee" icon_living = "piratemelee" icon_dead = "piratemelee_dead" + mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) speak_chance = 0 turns_per_move = 5 response_help = "pushes" diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm index 2fb4eb61bd..5cee4ef1b7 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm @@ -9,6 +9,7 @@ response_help = "brushes aside" response_disarm = "flails at" response_harm = "hits" + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) speak_chance = 0 maxHealth = 15 health = 15 diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm index 025a574ddd..cd7acc6f5a 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm @@ -6,6 +6,7 @@ icon_living = "clown" icon_dead = "clown_dead" icon_gib = "clown_gib" + mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) turns_per_move = 5 response_help = "pokes" response_disarm = "gently pushes aside" diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm index 18e07391ba..050ac09ca2 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm @@ -4,6 +4,7 @@ icon_state = "frog" icon_living = "frog" icon_dead = "frog_dead" + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) speak = list("ribbit","croak") emote_see = list("hops in a circle.", "shakes.") speak_chance = 1 diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/ghost.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/ghost.dm index 2d24f847df..32e1c4d047 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/ghost.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/ghost.dm @@ -4,6 +4,7 @@ icon = 'icons/mob/mob.dmi' icon_state = "ghost" icon_living = "ghost" + mob_biotypes = list(MOB_SPIRIT) speak_chance = 0 turns_per_move = 5 response_help = "passes through" diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/spaceman.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/spaceman.dm index d050b4143d..4e4849297c 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/spaceman.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/spaceman.dm @@ -5,6 +5,7 @@ icon_living = "old" icon_dead = "old_dead" icon_gib = "clown_gib" + mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) gender = MALE turns_per_move = 5 response_help = "pokes" diff --git a/code/modules/mob/living/simple_animal/hostile/russian.dm b/code/modules/mob/living/simple_animal/hostile/russian.dm index 63a656c257..30924d5519 100644 --- a/code/modules/mob/living/simple_animal/hostile/russian.dm +++ b/code/modules/mob/living/simple_animal/hostile/russian.dm @@ -6,6 +6,7 @@ icon_living = "russianmelee" icon_dead = "russianmelee_dead" icon_gib = "syndicate_gib" + mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) speak_chance = 0 turns_per_move = 5 response_help = "pokes" diff --git a/code/modules/mob/living/simple_animal/hostile/skeleton.dm b/code/modules/mob/living/simple_animal/hostile/skeleton.dm index 3a4a99452c..bb3892d0b6 100644 --- a/code/modules/mob/living/simple_animal/hostile/skeleton.dm +++ b/code/modules/mob/living/simple_animal/hostile/skeleton.dm @@ -6,6 +6,7 @@ icon_living = "skeleton" icon_dead = "skeleton" gender = NEUTER + mob_biotypes = list(MOB_UNDEAD, MOB_HUMANOID) turns_per_move = 5 speak_emote = list("rattles") emote_see = list("rattles") diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm index 8df758c0d6..81d583ee65 100644 --- a/code/modules/mob/living/simple_animal/hostile/statue.dm +++ b/code/modules/mob/living/simple_animal/hostile/statue.dm @@ -9,6 +9,7 @@ icon_dead = "human_male" gender = NEUTER a_intent = INTENT_HARM + mob_biotypes = list(MOB_INORGANIC, MOB_HUMANOID) response_help = "touches" response_disarm = "pushes" diff --git a/code/modules/mob/living/simple_animal/hostile/stickman.dm b/code/modules/mob/living/simple_animal/hostile/stickman.dm index 44a0a06cdc..7a86870aa1 100644 --- a/code/modules/mob/living/simple_animal/hostile/stickman.dm +++ b/code/modules/mob/living/simple_animal/hostile/stickman.dm @@ -5,6 +5,7 @@ icon_living = "stickman" icon_dead = "stickman_dead" icon_gib = "syndicate_gib" + mob_biotypes = list(MOB_INORGANIC, MOB_HUMANOID) gender = MALE speak_chance = 0 turns_per_move = 5 @@ -49,6 +50,7 @@ icon_state = "stickdog" icon_living = "stickdog" icon_dead = "stickdog_dead" + mob_biotypes = list(MOB_INORGANIC, MOB_BEAST) /mob/living/simple_animal/hostile/stickman/Initialize(mapload, var/wizard_summoned) . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index d6e061ffb1..edf601515a 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -22,6 +22,7 @@ icon_living = "syndicate" icon_dead = "syndicate_dead" icon_gib = "syndicate_gib" + mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) speak_chance = 0 turns_per_move = 5 response_help = "pokes" @@ -162,6 +163,7 @@ icon_living = "viscerator_attack" pass_flags = PASSTABLE | PASSMOB a_intent = INTENT_HARM + mob_biotypes = list(MOB_ROBOTIC) health = 25 maxHealth = 25 melee_damage_lower = 15 diff --git a/code/modules/mob/living/simple_animal/hostile/wizard.dm b/code/modules/mob/living/simple_animal/hostile/wizard.dm index 9d745b7b3a..921bd5959b 100644 --- a/code/modules/mob/living/simple_animal/hostile/wizard.dm +++ b/code/modules/mob/living/simple_animal/hostile/wizard.dm @@ -5,6 +5,7 @@ icon_state = "wizard" icon_living = "wizard" icon_dead = "wizard_dead" + mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) speak_chance = 0 turns_per_move = 3 response_help = "pokes" diff --git a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm index 1fcd1c11f8..f324c11cd2 100644 --- a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm +++ b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm @@ -8,6 +8,7 @@ icon_aggro = "Fugu0" icon_dead = "Fugu_dead" icon_gib = "syndicate_gib" + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) mouse_opacity = MOUSE_OPACITY_OPAQUE move_to_delay = 5 friendly = "floats near" diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index f968dc7839..6f64c5320a 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -15,15 +15,15 @@ //Only a maximum of one action and one intent should be active at any given time. //Actions -#define PARROT_PERCH 1 //Sitting/sleeping, not moving -#define PARROT_SWOOP 2 //Moving towards or away from a target -#define PARROT_WANDER 4 //Moving without a specific target in mind +#define PARROT_PERCH (1<<0) //Sitting/sleeping, not moving +#define PARROT_SWOOP (1<<1) //Moving towards or away from a target +#define PARROT_WANDER (1<<2) //Moving without a specific target in mind //Intents -#define PARROT_STEAL 8 //Flying towards a target to steal it/from it -#define PARROT_ATTACK 16 //Flying towards a target to attack it -#define PARROT_RETURN 32 //Flying towards its perch -#define PARROT_FLEE 64 //Flying away from its attacker +#define PARROT_STEAL (1<<3) //Flying towards a target to steal it/from it +#define PARROT_ATTACK (1<<4) //Flying towards a target to attack it +#define PARROT_RETURN (1<<5) //Flying towards its perch +#define PARROT_FLEE (1<<6) //Flying away from its attacker /mob/living/simple_animal/parrot diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index edca0c5535..647384d8ff 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -6,6 +6,7 @@ icon = 'icons/mob/mob.dmi' icon_state = "shade" icon_living = "shade" + mob_biotypes = list(MOB_SPIRIT) maxHealth = 40 health = 40 spacewalk = TRUE diff --git a/code/modules/mob/living/simple_animal/slime/death.dm b/code/modules/mob/living/simple_animal/slime/death.dm index 63a45f710e..52c9210263 100644 --- a/code/modules/mob/living/simple_animal/slime/death.dm +++ b/code/modules/mob/living/simple_animal/slime/death.dm @@ -32,12 +32,5 @@ return ..(gibbed) /mob/living/simple_animal/slime/gib() - death(1) + death(TRUE) qdel(src) - - -/mob/living/simple_animal/slime/Destroy() - for(var/obj/machinery/computer/camera_advanced/xenobio/X in GLOB.machines) - if(src in X.stored_slimes) - X.stored_slimes -= src - return ..() diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 5087825305..3e5363ac37 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -356,7 +356,7 @@ var/hasFound = FALSE //Have we found an extract to be added? for(var/obj/item/slime_extract/S in P.contents) if(S.effectmod == effectmod) - P.remove_from_storage(S, get_turf(src)) + P.SendSignal(COMSIG_TRY_STORAGE_TAKE, S, get_turf(src), TRUE) qdel(S) applied++ hasFound = TRUE diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index cb5769ab8d..ba04baf14a 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -60,7 +60,7 @@ var/list/held_items = list() //len = number of hands, eg: 2 nulls is 2 empty hands, 1 item and 1 null is 1 full hand and 1 empty hand. //held_items[active_hand_index] is the actively held item, but please use get_active_held_item() instead, because OOP - var/obj/item/storage/s_active = null//Carbon + var/datum/component/storage/active_storage = null//Carbon var/datum/hud/hud_used = null diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm index cdb79c43c6..080307ee9d 100644 --- a/code/modules/mob/status_procs.dm +++ b/code/modules/mob/status_procs.dm @@ -59,7 +59,10 @@ /////////////////////////////////// SLEEPING //////////////////////////////////// -/mob/living/proc/IsSleeping() //If we're asleep +/mob/proc/IsSleeping() //non-living mobs shouldn't be sleeping either + return FALSE + +/mob/living/IsSleeping() //If we're asleep return has_status_effect(STATUS_EFFECT_SLEEPING) /mob/living/proc/AmountSleeping() //How many deciseconds remain in our sleep @@ -243,8 +246,3 @@ /mob/proc/adjust_bodytemperature(amount,min_temp=0,max_temp=INFINITY) if(bodytemperature > min_temp && bodytemperature < max_temp) bodytemperature = CLAMP(bodytemperature + amount,min_temp,max_temp) - - - - - diff --git a/code/modules/modular_computers/documentation.dm b/code/modules/modular_computers/documentation.dm deleted file mode 100644 index 94e02f8125..0000000000 --- a/code/modules/modular_computers/documentation.dm +++ /dev/null @@ -1,40 +0,0 @@ -/* - -Ok. so a quick rundown on how to make a program. This is kind of a shitty documentation, but oh well I was asked to. - - -This is how the base program is setup. the rest is mostly tgui stuff. I'll use the ntnetmonitor as a base - -/datum/computer_file/program/ntnetmonitor - filename = "ntmonitor" <- This is obviously the name of the file itself. not much to be said - filedesc = "NTNet Diagnostics and Monitoring" <- This sort of the official name. it's what shows up on the main menu - program_icon_state = "comm_monitor" <- This is what the screen will look like when the program is active - extended_desc = "This program is a dummy. <- This is a sort of description, visible when looking on the ntnet - size = 12 <- size of the program. Big programs need more hard drive space. Don't make it too big though. - requires_ntnet = 1 <- if this is set, the program will not run and will close if ntnet connection is lost. mainly for primarily online programs. - required_access = access_network <- This is access required to run the program itself. ONLY SET THIS FOR SUPER SECURE SHIT. This also acts as transfer_access as well. - transfer_access = access_change_ids <- this is the access needed to download from ntnet or host on the ptp program. This is what you want to use most of the time. - available_on_ntnet = 1 <- If it's available to download on ntnet. pretty self explanatory. - available_on_syndinet = 0 <- ditto but on emagged syndie net. Use this for antag programs - usage_flags = PROGRAM_ALL // Bitflags (PROGRAM_CONSOLE, PROGRAM_LAPTOP, PROGRAM_TABLET combination) or PROGRAM_ALL - ^^- The comment above sorta explains it. Use this to limit what kind of machines can run the program. For example, comms program should be limited to consoles and laptops. - var/ui_header = "downloader_finished.gif" <- this one is kinda cool. If you have the program minimized, this will show up in the header of the computer screen. - you can even have the program change what the header is based on the situation! see alarm.dm for an example. - - -Now. for pre-installing stuff. - -Primarily done for consoles, there's an install_programs() proc in the console presets file in the machines folder. - -for example, the command console one. - -/obj/machinery/modular_computer/console/preset/command/install_programs() - cpu.hard_drive.store_file(new/datum/computer_file/program/chatclient()) - cpu.hard_drive.store_file(new/datum/computer_file/program/card_mod()) - -Basically, you want to do cpu.hard_drive.store_file(new/*program path here*()) and put it in the subtype's install_programs(). -Probably pretty self explanatory, but just in case. - -Will probably be expanded when new features come around or I get asked to mention something. - -*/ \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/sm_monitor.dm b/code/modules/modular_computers/file_system/programs/sm_monitor.dm index c2cbd5afec..138e8bb9dd 100644 --- a/code/modules/modular_computers/file_system/programs/sm_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/sm_monitor.dm @@ -13,7 +13,7 @@ ui_y = 400 var/last_status = SUPERMATTER_INACTIVE var/list/supermatters - var/obj/machinery/power/supermatter_shard/active // Currently selected supermatter crystal. + var/obj/machinery/power/supermatter_crystal/active // Currently selected supermatter crystal. /datum/computer_file/program/supermatter_monitor/process_tick() @@ -41,7 +41,7 @@ var/turf/T = get_turf(ui_host()) if(!T) return - for(var/obj/machinery/power/supermatter_shard/S in GLOB.machines) + for(var/obj/machinery/power/supermatter_crystal/S in GLOB.machines) // Delaminating, not within coverage, not on a tile. if (!isturf(S.loc) || !(is_station_level(S.z) || is_mining_level(S.z) || S.z == T.z)) continue @@ -52,7 +52,7 @@ /datum/computer_file/program/supermatter_monitor/proc/get_status() . = SUPERMATTER_INACTIVE - for(var/obj/machinery/power/supermatter_shard/S in supermatters) + for(var/obj/machinery/power/supermatter_crystal/S in supermatters) . = max(., S.get_status()) /datum/computer_file/program/supermatter_monitor/ui_data() @@ -93,7 +93,7 @@ data["gases"] = gasdata else var/list/SMS = list() - for(var/obj/machinery/power/supermatter_shard/S in supermatters) + for(var/obj/machinery/power/supermatter_crystal/S in supermatters) var/area/A = get_area(S) if(A) SMS.Add(list(list( @@ -120,7 +120,7 @@ return TRUE if("PRG_set") var/newuid = text2num(params["target"]) - for(var/obj/machinery/power/supermatter_shard/S in supermatters) + for(var/obj/machinery/power/supermatter_crystal/S in supermatters) if(S.uid == newuid) active = S return TRUE \ No newline at end of file diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm index 8103fa2415..1c3fbd8147 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm @@ -11,13 +11,13 @@ Contents: var/mob/living/carbon/human/U = affecting if(!U) return - if(s_active) + if(stealth) cancel_stealth() else if(cell.charge <= 0) to_chat(U, "You don't have enough power to enable Stealth!") return - s_active=!s_active + stealth = !stealth animate(U, alpha = 50,time = 15) U.visible_message("[U.name] vanishes into thin air!", \ "You are now mostly invisible to normal detection.") @@ -27,8 +27,8 @@ Contents: var/mob/living/carbon/human/U = affecting if(!U) return 0 - if(s_active) - s_active=!s_active + if(stealth) + stealth = !stealth animate(U, alpha = 255, time = 15) U.visible_message("[U.name] appears from thin air!", \ "You are now visible.") diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_teleporting.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_teleporting.dm deleted file mode 100644 index 74dcec12ce..0000000000 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_teleporting.dm +++ /dev/null @@ -1,71 +0,0 @@ - - -/* - -Contents: -- Proc for handling teleporting while grabbing someone -- Telport Ability -- Right-Click Teleport Ability - -*/ - - -//Handles elporting while grabbing someone -/obj/item/clothing/suit/space/space_ninja/proc/handle_teleport_grab(turf/T, mob/living/H) - if(H.pulling && (isliving(H.pulling))) - var/mob/living/victim = H.pulling - if(!victim.anchored) - victim.forceMove(locate(T.x+rand(-1,1),T.y+rand(-1,1),T.z)) - - -//Jaunt -/obj/item/clothing/suit/space/space_ninja/proc/ninjajaunt() - if(!ninjacost(100,N_STEALTH_CANCEL)) - var/mob/living/carbon/human/H = affecting - var/turf/destination = get_teleport_loc(H.loc,H,9,1,3,1,0,1) - var/turf/mobloc = get_turf(H.loc)//Safety - - if(destination && isturf(mobloc))//So we don't teleport out of containers - playsound(H.loc, "sparks", 50, 1) - new /obj/effect/temp_visual/dir_setting/ninja/phase/out(get_turf(H), H.dir) - - handle_teleport_grab(destination, H) - H.loc = destination - - spark_system.start() - playsound(H.loc, 'sound/effects/phasein.ogg', 25, 1) - playsound(H.loc, "sparks", 50, 1) - new /obj/effect/temp_visual/dir_setting/ninja/phase(get_turf(H), H.dir) - - destination.phase_damage_creatures(20,H)//Paralyse and damage mobs and mechas on the turf - s_coold = 1 - else - to_chat(H, "The VOID-shift device is malfunctioning, teleportation failed.") - - -//Right-Click teleport: It's basically admin "jump to turf" -/obj/item/clothing/suit/space/space_ninja/proc/ninjashift(turf/T in oview()) - set name = "Phase Shift (20E)" - set desc = "Utilizes the internal VOID-shift device to rapidly transit to a destination in view." - set category = null//So it does not show up on the panel but can still be right-clicked. - set src = usr.contents//Fixes verbs not attaching properly for objects. Praise the DM reference guide! - - if(!ninjacost(200,N_STEALTH_CANCEL)) - var/mob/living/carbon/human/H = affecting - var/turf/mobloc = get_turf(H.loc)//To make sure that certain things work properly below. - if(!T.density && isturf(mobloc)) - playsound(H.loc, "sparks", 50, 1) - new /obj/effect/temp_visual/dir_setting/ninja/phase/out(get_turf(H), H.dir) - - handle_teleport_grab(T, H) - H.forceMove(T) - - spark_system.start() - playsound(H.loc, 'sound/effects/phasein.ogg', 25, 1) - playsound(H.loc, "sparks", 50, 1) - new /obj/effect/temp_visual/dir_setting/ninja/phase(get_turf(H), H.dir) - - T.phase_damage_creatures(20,H)//Paralyse and damage mobs and mechas on the turf - s_coold = 1 - else - to_chat(H, "You cannot teleport into solid walls or from solid matter") diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm index 8b0b4cd256..5886e1723d 100644 --- a/code/modules/ninja/suit/suit.dm +++ b/code/modules/ninja/suit/suit.dm @@ -48,7 +48,7 @@ Contents: var/s_maxamount = 20//Maximum number of smoke bombs. //Support function variables. - var/s_active = 0//Stealth off. + var/stealth = FALSE//Stealth off. var/s_busy = FALSE//Is the suit busy with a process? Like AI hacking. Used for safety functions. //Ability function variables. @@ -152,7 +152,7 @@ Contents: if(s_initialized) if(user == affecting) to_chat(user, "All systems operational. Current energy capacity: [DisplayEnergy(cell.charge)].") - to_chat(user, "The CLOAK-tech device is [s_active?"active":"inactive"].") + to_chat(user, "The CLOAK-tech device is [stealth?"active":"inactive"].") to_chat(user, "There are [s_bombs] smoke bomb\s remaining.") to_chat(user, "There are [a_boost] adrenaline booster\s remaining.") diff --git a/code/modules/ninja/suit/suit_process.dm b/code/modules/ninja/suit/suit_process.dm index c9e955b359..4a89a59f75 100644 --- a/code/modules/ninja/suit/suit_process.dm +++ b/code/modules/ninja/suit/suit_process.dm @@ -10,7 +10,7 @@ s_coold--//Checks for ability s_cooldown first. cell.charge -= s_cost//s_cost is the default energy cost each ntick, usually 5. - if(s_active)//If stealth is active. + if(stealth)//If stealth is active. cell.charge -= s_acost else diff --git a/code/modules/ninja/suit/suit_verbs_handlers.dm b/code/modules/ninja/suit/suit_verbs_handlers.dm deleted file mode 100644 index 35070a52dd..0000000000 --- a/code/modules/ninja/suit/suit_verbs_handlers.dm +++ /dev/null @@ -1,26 +0,0 @@ -/* - -Contents: -- Procs that add ninja verbs to ninjas -- Procs that remove ninja verbs from ninjas -- Procs that add ninjasuit verbs to ninjas -- Procs that remove ninjasuit verbs from ninjas - -*/ - -/obj/item/clothing/suit/space/space_ninja/proc/grant_equip_verbs() - n_gloves.verbs += /obj/item/clothing/gloves/space_ninja/proc/toggledrain - - s_initialized = 1 - - -/obj/item/clothing/suit/space/space_ninja/proc/remove_equip_verbs() - if(n_gloves) - n_gloves.verbs -= /obj/item/clothing/gloves/space_ninja/proc/toggledrain - - s_initialized = 0 - - -/obj/item/clothing/suit/space/space_ninja/proc/grant_ninja_verbs() - s_initialized=1 - slowdown=0 \ No newline at end of file diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index 31bcc537e9..dac5ba3b52 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -110,9 +110,13 @@ item_state = "briefcase" lefthand_file = 'icons/mob/inhands/equipment/briefcase_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/briefcase_righthand.dmi' - can_hold = list(/obj/item/photo) resistance_flags = FLAMMABLE +/obj/item/storage/photo_album/Initialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.can_hold = typecacheof(list(/obj/item/photo)) + /* * Camera */ diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index f764a38d64..7694387975 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1,30 +1,30 @@ //update_state -#define UPSTATE_CELL_IN 1 -#define UPSTATE_OPENED1 2 -#define UPSTATE_OPENED2 4 -#define UPSTATE_MAINT 8 -#define UPSTATE_BROKE 16 -#define UPSTATE_BLUESCREEN 32 -#define UPSTATE_WIREEXP 64 -#define UPSTATE_ALLGOOD 128 +#define UPSTATE_CELL_IN (1<<0) +#define UPSTATE_OPENED1 (1<<1) +#define UPSTATE_OPENED2 (1<<2) +#define UPSTATE_MAINT (1<<3) +#define UPSTATE_BROKE (1<<4) +#define UPSTATE_BLUESCREEN (1<<5) +#define UPSTATE_WIREEXP (1<<6) +#define UPSTATE_ALLGOOD (1<<7) #define APC_RESET_EMP "emp" //update_overlay -#define APC_UPOVERLAY_CHARGEING0 1 -#define APC_UPOVERLAY_CHARGEING1 2 -#define APC_UPOVERLAY_CHARGEING2 4 -#define APC_UPOVERLAY_EQUIPMENT0 8 -#define APC_UPOVERLAY_EQUIPMENT1 16 -#define APC_UPOVERLAY_EQUIPMENT2 32 -#define APC_UPOVERLAY_LIGHTING0 64 -#define APC_UPOVERLAY_LIGHTING1 128 -#define APC_UPOVERLAY_LIGHTING2 256 -#define APC_UPOVERLAY_ENVIRON0 512 -#define APC_UPOVERLAY_ENVIRON1 1024 -#define APC_UPOVERLAY_ENVIRON2 2048 -#define APC_UPOVERLAY_LOCKED 4096 -#define APC_UPOVERLAY_OPERATING 8192 +#define APC_UPOVERLAY_CHARGEING0 (1<<0) +#define APC_UPOVERLAY_CHARGEING1 (1<<1) +#define APC_UPOVERLAY_CHARGEING2 (1<<2) +#define APC_UPOVERLAY_EQUIPMENT0 (1<<3) +#define APC_UPOVERLAY_EQUIPMENT1 (1<<4) +#define APC_UPOVERLAY_EQUIPMENT2 (1<<5) +#define APC_UPOVERLAY_LIGHTING0 (1<<6) +#define APC_UPOVERLAY_LIGHTING1 (1<<7) +#define APC_UPOVERLAY_LIGHTING2 (1<<8) +#define APC_UPOVERLAY_ENVIRON0 (1<<9) +#define APC_UPOVERLAY_ENVIRON1 (1<<10) +#define APC_UPOVERLAY_ENVIRON2 (1<<11) +#define APC_UPOVERLAY_LOCKED (1<<12) +#define APC_UPOVERLAY_OPERATING (1<<13) // the Area Power Controller (APC), formerly Power Distribution Unit (PDU) @@ -911,12 +911,11 @@ update() if("emergency_lighting") emergency_lights = !emergency_lights - for(var/area/A in area.related) - for(var/obj/machinery/light/L in A) - if(!initial(L.no_emergency)) //If there was an override set on creation, keep that override - L.no_emergency = emergency_lights - INVOKE_ASYNC(L, /obj/machinery/light/.proc/update, FALSE) - CHECK_TICK + for(var/obj/machinery/light/L in area) + if(!initial(L.no_emergency)) //If there was an override set on creation, keep that override + L.no_emergency = emergency_lights + INVOKE_ASYNC(L, /obj/machinery/light/.proc/update, FALSE) + CHECK_TICK return 1 /obj/machinery/power/apc/proc/toggle_breaker() @@ -1281,12 +1280,11 @@ INVOKE_ASYNC(src, .proc/break_lights) /obj/machinery/power/apc/proc/break_lights() - for(var/area/A in area.related) - for(var/obj/machinery/light/L in A) - L.on = TRUE - L.break_light_tube() - L.on = FALSE - stoplag() + for(var/obj/machinery/light/L in area) + L.on = TRUE + L.break_light_tube() + L.on = FALSE + stoplag() /obj/machinery/power/apc/proc/shock(mob/user, prb) if(!prob(prb)) @@ -1322,12 +1320,11 @@ /obj/machinery/power/apc/proc/set_nightshift(on) set waitfor = FALSE nightshift_lights = on - for(var/area/A in area.related) - for(var/obj/machinery/light/L in A) - if(L.nightshift_allowed) - L.nightshift_enabled = nightshift_lights - L.update(FALSE) - CHECK_TICK + for(var/obj/machinery/light/L in area) + if(L.nightshift_allowed) + L.nightshift_enabled = nightshift_lights + L.update(FALSE) + CHECK_TICK #undef UPSTATE_CELL_IN #undef UPSTATE_OPENED1 @@ -1356,8 +1353,6 @@ #undef APC_UPOVERLAY_LOCKED #undef APC_UPOVERLAY_OPERATING -#undef APC_UPDATE_ICON_COOLDOWN - /*Power module, used for APC construction*/ /obj/item/electronics/apc name = "power control module" diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 2a7fd37c65..ff9c79d069 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -272,7 +272,7 @@ /obj/singularity/proc/consume(atom/A) var/gain = A.singularity_act(current_size, src) src.energy += gain - if(istype(A, /obj/machinery/power/supermatter_shard) && !consumedSupermatter) + if(istype(A, /obj/machinery/power/supermatter_crystal) && !consumedSupermatter) desc = "[initial(desc)] It glows fiercely with inner fire." name = "supermatter-charged [initial(name)]" consumedSupermatter = 1 diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index ed238f7fb7..d20754c4cb 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -22,7 +22,7 @@ #define SEVERE_POWER_PENALTY_THRESHOLD 7000 //Same as above, but causes more dangerous effects #define CRITICAL_POWER_PENALTY_THRESHOLD 9000 //Even more dangerous effects, threshold for tesla delamination #define HEAT_PENALTY_THRESHOLD 40 //Higher == Crystal safe operational temperature is higher. -#define DAMAGE_HARDCAP 0.0025 +#define DAMAGE_HARDCAP 0.002 #define DAMAGE_INCREASE_MULTIPLIER 0.25 @@ -54,15 +54,17 @@ #define SUPERMATTER_DANGER_PERCENT 50 #define SUPERMATTER_WARNING_PERCENT 100 -GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) +#define SUPERMATTER_COUNTDOWN_TIME 30 SECONDS -/obj/machinery/power/supermatter_shard - name = "supermatter shard" - desc = "A strangely translucent and iridescent crystal that looks like it used to be part of a larger structure." +GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) + +/obj/machinery/power/supermatter_crystal + name = "supermatter crystal" + desc = "A strangely translucent and iridescent crystal." icon = 'icons/obj/supermatter.dmi' - icon_state = "darkmatter_shard" + icon_state = "darkmatter" density = TRUE - anchored = FALSE + anchored = TRUE var/uid = 1 var/static/gl_uid = 1 light_range = 4 @@ -70,9 +72,11 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) critical_machine = TRUE - var/gasefficency = 0.125 + var/gasefficency = 0.15 - var/base_icon_state = "darkmatter_shard" + var/base_icon_state = "darkmatter" + + var/final_countdown = FALSE var/damage = 0 var/damage_archived = 0 @@ -86,7 +90,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) var/emergency_issued = FALSE - var/explosion_power = 12 + var/explosion_power = 35 var/temp_factor = 30 var/lastwarning = 0 // Time in 1/10th of seconds since the last sent warning @@ -137,9 +141,9 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) var/datum/looping_sound/supermatter/soundloop - var/moveable = TRUE + var/moveable = FALSE -/obj/machinery/power/supermatter_shard/Initialize() +/obj/machinery/power/supermatter_crystal/Initialize() . = ..() uid = gl_uid++ SSair.atmos_machinery += src @@ -156,7 +160,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) soundloop = new(list(src), TRUE) -/obj/machinery/power/supermatter_shard/Destroy() +/obj/machinery/power/supermatter_crystal/Destroy() investigate_log("has been destroyed.", INVESTIGATE_SUPERMATTER) SSair.atmos_machinery -= src QDEL_NULL(radio) @@ -167,7 +171,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) QDEL_NULL(soundloop) return ..() -/obj/machinery/power/supermatter_shard/examine(mob/user) +/obj/machinery/power/supermatter_crystal/examine(mob/user) ..() if(!ishuman(user)) return @@ -180,12 +184,12 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) to_chat(H, "You get headaches just from looking at it.") return -/obj/machinery/power/supermatter_shard/get_spans() +/obj/machinery/power/supermatter_crystal/get_spans() return list(SPAN_ROBOT) #define CRITICAL_TEMPERATURE 10000 -/obj/machinery/power/supermatter_shard/proc/get_status() +/obj/machinery/power/supermatter_crystal/proc/get_status() var/turf/T = get_turf(src) if(!T) return SUPERMATTER_ERROR @@ -212,7 +216,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) return SUPERMATTER_NORMAL return SUPERMATTER_INACTIVE -/obj/machinery/power/supermatter_shard/proc/alarm() +/obj/machinery/power/supermatter_crystal/proc/alarm() switch(get_status()) if(SUPERMATTER_DELAMINATING) playsound(src, 'sound/misc/bloblarm.ogg', 100) @@ -223,13 +227,51 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) if(SUPERMATTER_WARNING) playsound(src, 'sound/machines/terminal_alert.ogg', 75) -/obj/machinery/power/supermatter_shard/proc/get_integrity() +/obj/machinery/power/supermatter_crystal/proc/get_integrity() var/integrity = damage / explosion_point integrity = round(100 - integrity * 100, 0.01) integrity = integrity < 0 ? 0 : integrity return integrity -/obj/machinery/power/supermatter_shard/proc/explode() +/obj/machinery/power/supermatter_crystal/proc/countdown() + if(final_countdown) // We're already doing it go away + return + final_countdown = TRUE + + var/image/causality_field = image(icon, null, "causality_field") + add_overlay(causality_field, TRUE) + + var/speaking = "[emergency_alert] The supermatter has reached critical integrity failure. Emergency causality destabilization field has been activated." + radio.talk_into(src, speaking, common_channel, get_spans(), get_default_language()) + for(var/i in SUPERMATTER_COUNTDOWN_TIME to 0 step -10) + if(damage < explosion_point) // Cutting it a bit close there engineers + radio.talk_into(src, "[safe_alert] Failsafe has been disengaged.", common_channel, get_spans(), get_default_language()) + cut_overlay(causality_field, TRUE) + final_countdown = FALSE + return + else if((i % 50) != 0 && i > 50) // A message once every 5 seconds until the final 5 seconds which count down individualy + sleep(10) + continue + else if(i > 50) + speaking = "[i/10] seconds remain before causality stabilization." + else + speaking = "[i/10]..." + radio.talk_into(src, speaking, common_channel, get_spans(), get_default_language()) + sleep(10) + + explode() + +/obj/machinery/power/supermatter_crystal/proc/explode() + for(var/mob in GLOB.alive_mob_list) + var/mob/living/L = mob + if(istype(L) && L.z == z) + if(ishuman(mob)) + //Hilariously enough, running into a closet should make you get hit the hardest. + var/mob/living/carbon/human/H = mob + H.hallucination += max(50, min(300, DETONATION_HALLUCINATION * sqrt(1 / (get_dist(mob, src) + 1)) ) ) + var/rads = DETONATION_RADS * sqrt( 1 / (get_dist(L, src) + 1) ) + L.rad_act(rads) + var/turf/T = get_turf(src) for(var/mob/M in GLOB.player_list) if(M.z == z) @@ -251,7 +293,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) E.energy = power qdel(src) -/obj/machinery/power/supermatter_shard/process_atmos() +/obj/machinery/power/supermatter_crystal/process_atmos() var/turf/T = loc if(isnull(T)) // We have a null turf...something is wrong, stop processing this entity. @@ -282,7 +324,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) else if(takes_damage) //causing damage - damage = max(damage + (max(removed.temperature - ((T0C + HEAT_PENALTY_THRESHOLD)*dynamic_heat_resistance), 0) * mole_heat_penalty / 150 ) * DAMAGE_INCREASE_MULTIPLIER, 0) + damage = max(damage + (max(CLAMP(removed.total_moles() / 200, 0.5, 1) * removed.temperature - ((T0C + HEAT_PENALTY_THRESHOLD)*dynamic_heat_resistance), 0) * mole_heat_penalty / 150 ) * DAMAGE_INCREASE_MULTIPLIER, 0) damage = max(damage + (max(power - POWER_PENALTY_THRESHOLD, 0)/500) * DAMAGE_INCREASE_MULTIPLIER, 0) damage = max(damage + (max(combined_gas - MOLE_PENALTY_THRESHOLD, 0)/80) * DAMAGE_INCREASE_MULTIPLIER, 0) @@ -427,21 +469,11 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) radio.talk_into(src, "Warning: Critical coolant mass reached.", engineering_channel, get_spans(), get_default_language()) if(damage > explosion_point) - for(var/mob in GLOB.alive_mob_list) - var/mob/living/L = mob - if(istype(L) && L.z == z) - if(ishuman(mob)) - //Hilariously enough, running into a closet should make you get hit the hardest. - var/mob/living/carbon/human/H = mob - H.hallucination += max(50, min(300, DETONATION_HALLUCINATION * sqrt(1 / (get_dist(mob, src) + 1)) ) ) - var/rads = DETONATION_RADS * sqrt( 1 / (get_dist(L, src) + 1) ) - L.rad_act(rads) - - explode() + countdown() return 1 -/obj/machinery/power/supermatter_shard/bullet_act(obj/item/projectile/Proj) +/obj/machinery/power/supermatter_crystal/bullet_act(obj/item/projectile/Proj) var/turf/L = loc if(!istype(L)) return FALSE @@ -457,7 +489,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) damage += Proj.damage * config_bullet_energy return FALSE -/obj/machinery/power/supermatter_shard/singularity_act() +/obj/machinery/power/supermatter_crystal/singularity_act() var/gain = 100 investigate_log("Supermatter shard consumed by singularity.", INVESTIGATE_SINGULO) message_admins("Singularity has consumed a supermatter shard and can now become stage six.") @@ -469,7 +501,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) qdel(src) return gain -/obj/machinery/power/supermatter_shard/blob_act(obj/structure/blob/B) +/obj/machinery/power/supermatter_crystal/blob_act(obj/structure/blob/B) if(B && !isspaceturf(loc)) //does nothing in space playsound(get_turf(src), 'sound/effects/supermatter.ogg', 50, 1) damage += B.obj_integrity * 0.5 //take damage equal to 50% of remaining blob health before it tried to eat us @@ -482,20 +514,20 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) "You hear a loud crack as you are washed with a wave of heat.") Consume(B) -/obj/machinery/power/supermatter_shard/attack_tk(mob/user) +/obj/machinery/power/supermatter_crystal/attack_tk(mob/user) if(iscarbon(user)) var/mob/living/carbon/C = user to_chat(C, "That was a really dumb idea.") var/obj/item/bodypart/head/rip_u = C.get_bodypart(BODY_ZONE_HEAD) rip_u.dismember(BURN) //nice try jedi -/obj/machinery/power/supermatter_shard/attack_paw(mob/user) +/obj/machinery/power/supermatter_crystal/attack_paw(mob/user) dust_mob(user, cause = "monkey attack") -/obj/machinery/power/supermatter_shard/attack_alien(mob/user) +/obj/machinery/power/supermatter_crystal/attack_alien(mob/user) dust_mob(user, cause = "alien attack") -/obj/machinery/power/supermatter_shard/attack_animal(mob/living/simple_animal/S) +/obj/machinery/power/supermatter_crystal/attack_animal(mob/living/simple_animal/S) var/murder if(!S.melee_damage_upper && !S.melee_damage_lower) murder = S.friendly @@ -506,20 +538,20 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) "You unwisely touch [src], and your vision glows brightly as your body crumbles to dust. Oops.", \ "simple animal attack") -/obj/machinery/power/supermatter_shard/attack_robot(mob/user) +/obj/machinery/power/supermatter_crystal/attack_robot(mob/user) if(Adjacent(user)) dust_mob(user, cause = "cyborg attack") -/obj/machinery/power/supermatter_shard/attack_ai(mob/user) +/obj/machinery/power/supermatter_crystal/attack_ai(mob/user) return -/obj/machinery/power/supermatter_shard/attack_hand(mob/living/user) +/obj/machinery/power/supermatter_crystal/attack_hand(mob/living/user) . = ..() if(.) return dust_mob(user, cause = "hand") -/obj/machinery/power/supermatter_shard/proc/dust_mob(mob/living/nom, vis_msg, mob_msg, cause) +/obj/machinery/power/supermatter_crystal/proc/dust_mob(mob/living/nom, vis_msg, mob_msg, cause) if(nom.incorporeal_move || nom.status_flags & GODMODE) return if(!vis_msg) @@ -533,7 +565,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) playsound(get_turf(src), 'sound/effects/supermatter.ogg', 50, 1) Consume(nom) -/obj/machinery/power/supermatter_shard/attackby(obj/item/W, mob/living/user, params) +/obj/machinery/power/supermatter_crystal/attackby(obj/item/W, mob/living/user, params) if(!istype(W) || (W.flags_1 & ABSTRACT_1) || !istype(user)) return if (istype(W, /obj/item/melee/roastingstick)) @@ -554,12 +586,12 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) radiation_pulse(src, 150, 4) -/obj/machinery/power/supermatter_shard/wrench_act(mob/user, obj/item/tool) +/obj/machinery/power/supermatter_crystal/wrench_act(mob/user, obj/item/tool) if (moveable) default_unfasten_wrench(user, tool, time = 20) return TRUE -/obj/machinery/power/supermatter_shard/CollidedWith(atom/movable/AM) +/obj/machinery/power/supermatter_crystal/CollidedWith(atom/movable/AM) if(isliving(AM)) AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... [AM.p_their()] body starts to glow and catch flame before flashing into ash.",\ "You slam into \the [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\"",\ @@ -574,7 +606,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) Consume(AM) -/obj/machinery/power/supermatter_shard/proc/Consume(atom/movable/AM) +/obj/machinery/power/supermatter_crystal/proc/Consume(atom/movable/AM) if(isliving(AM)) var/mob/living/user = AM if(user.status_flags & GODMODE) @@ -602,30 +634,30 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) else L.show_message("You hear an unearthly ringing and notice your skin is covered in fresh radiation burns.", 2) -/obj/machinery/power/supermatter_shard/engine +/obj/machinery/power/supermatter_crystal/engine + is_main_engine = TRUE + +/obj/machinery/power/supermatter_crystal/shard + name = "supermatter shard" + desc = "A strangely translucent and iridescent crystal that looks like it used to be part of a larger structure." + base_icon_state = "darkmatter_shard" + icon_state = "darkmatter_shard" + anchored = FALSE + gasefficency = 0.125 + explosion_power = 12 + moveable = TRUE + +/obj/machinery/power/supermatter_crystal/shard/engine is_main_engine = TRUE // When you wanna make a supermatter shard for the dramatic effect, but // don't want it exploding suddenly -/obj/machinery/power/supermatter_shard/hugbox +/obj/machinery/power/supermatter_crystal/shard/hugbox takes_damage = FALSE produces_gas = FALSE moveable = FALSE -/obj/machinery/power/supermatter_shard/crystal - name = "supermatter crystal" - desc = "A strangely translucent and iridescent crystal." - base_icon_state = "darkmatter" - icon_state = "darkmatter" - anchored = TRUE - gasefficency = 0.15 - explosion_power = 35 - moveable = FALSE - -/obj/machinery/power/supermatter_shard/crystal/engine - is_main_engine = TRUE - -/obj/machinery/power/supermatter_shard/proc/supermatter_pull(turf/center, pull_range = 10) +/obj/machinery/power/supermatter_crystal/proc/supermatter_pull(turf/center, pull_range = 10) playsound(src.loc, 'sound/weapons/marauder.ogg', 100, 1, extrarange = 7) for(var/atom/P in orange(pull_range,center)) if(ismovableatom(P)) @@ -639,7 +671,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) step_towards(pulled_object,center) step_towards(pulled_object,center) -/obj/machinery/power/supermatter_shard/proc/supermatter_anomaly_gen(turf/anomalycenter, type = FLUX_ANOMALY, anomalyrange = 5) +/obj/machinery/power/supermatter_crystal/proc/supermatter_anomaly_gen(turf/anomalycenter, type = FLUX_ANOMALY, anomalyrange = 5) var/turf/L = pick(orange(anomalyrange, anomalycenter)) if(L) switch(type) @@ -651,7 +683,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) if(PYRO_ANOMALY) new /obj/effect/anomaly/pyro(L, 200) -/obj/machinery/power/supermatter_shard/proc/supermatter_zap(atom/zapstart, range = 3, power) +/obj/machinery/power/supermatter_crystal/proc/supermatter_zap(atom/zapstart, range = 3, power) . = zapstart.dir if(power < 1000) return diff --git a/code/modules/power/switch.dm b/code/modules/power/switch.dm deleted file mode 100644 index 1dca58eb6f..0000000000 --- a/code/modules/power/switch.dm +++ /dev/null @@ -1,84 +0,0 @@ -//This is a power switch. When turned on it looks at the cables around the tile that it's on and notes which cables are trying to connect to it. -//After it knows this it creates the number of cables from the center to each of the cables attempting to conenct. These cables cannot be removed -//with wirecutters. When the switch is turned off it removes all the cables on the tile it's on. -//The switch uses a 5s delay to prevent powernet change spamming. -/* -/obj/structure/powerswitch - name = "power switch" - desc = "A switch that controls power." - icon = 'icons/obj/power.dmi' - icon_state = "switch-dbl-up" - var/icon_state_on = "switch-dbl-down" - var/icon_state_off = "switch-dbl-up" - density = FALSE - anchored = TRUE - var/on = FALSE //up is off, down is on - var/busy = FALSE //set to 1 when you start pulling - -/obj/structure/powerswitch/simple - icon_state = "switch-up" - icon_state_on = "switch-down" - icon_state_off = "switch-up" - - -/obj/structure/powerswitch/examine(mob/user) - ..() - if(on) - to_chat(user, "The switch is in the on position") - else - to_chat(user, "The switch is in the off position") - -/obj/structure/powerswitch/attack_ai(mob/user) - to_chat(user, "\red You're an AI. This is a manual switch. It's not going to work.") - return - -/obj/structure/powerswitch/attack_hand(mob/user) - - if(busy) - to_chat(user, "\red This switch is already being toggled.") - return - - ..() - - busy = TRUE - for(var/mob/O in viewers(user)) - O.show_message(text("\red [user] started pulling the [src]."), 1) - - if(do_after(user, 50)) - set_state(!on) - for(var/mob/O in viewers(user)) - O.show_message(text("\red [user] flipped the [src] into the [on ? "on": "off"] position."), 1) - busy = FALSE - -/obj/structure/powerswitch/proc/set_state(var/state) - on = state - if(on) - icon_state = icon_state_on - var/list/connection_dirs = list() - for(var/direction in list(1,2,4,8,5,6,9,10)) - for(var/obj/structure/cable/C in get_step(src,direction)) - if(C.d1 == turn(direction, 180) || C.d2 == turn(direction, 180)) - connection_dirs += direction - break - - for(var/direction in connection_dirs) - var/obj/structure/cable/C = new/obj/structure/cable(src.loc) - C.d1 = 0 - C.d2 = direction - C.icon_state = "[C.d1]-[C.d2]" - C.power_switch = src - - var/datum/powernet/PN = new() - PN.number = powernets.len + 1 - powernets += PN - C.netnum = PN.number - PN.cables += C - - C.mergeConnectedNetworks(C.d2) - C.mergeConnectedNetworksOnTurf() - - else - icon_state = icon_state_off - for(var/obj/structure/cable/C in src.loc) - qdel(C) -*/ \ No newline at end of file diff --git a/code/modules/procedural_mapping/mapGenerator.dm b/code/modules/procedural_mapping/mapGenerator.dm index 95eded309c..4c9e1dddea 100644 --- a/code/modules/procedural_mapping/mapGenerator.dm +++ b/code/modules/procedural_mapping/mapGenerator.dm @@ -2,11 +2,11 @@ //All based on clusterMin and clusterMax as guides //Individual defines -#define CLUSTER_CHECK_NONE 0 //No checks are done, cluster as much as possible -#define CLUSTER_CHECK_DIFFERENT_TURFS 2 //Don't let turfs of DIFFERENT types cluster -#define CLUSTER_CHECK_DIFFERENT_ATOMS 4 //Don't let atoms of DIFFERENT types cluster -#define CLUSTER_CHECK_SAME_TURFS 8 //Don't let turfs of the SAME type cluster -#define CLUSTER_CHECK_SAME_ATOMS 16 //Don't let atoms of the SAME type cluster +#define CLUSTER_CHECK_NONE 0 //No checks are done, cluster as much as possible +#define CLUSTER_CHECK_DIFFERENT_TURFS (1<<1) //Don't let turfs of DIFFERENT types cluster +#define CLUSTER_CHECK_DIFFERENT_ATOMS (1<<2) //Don't let atoms of DIFFERENT types cluster +#define CLUSTER_CHECK_SAME_TURFS (1<<3) //Don't let turfs of the SAME type cluster +#define CLUSTER_CHECK_SAME_ATOMS (1<<4) //Don't let atoms of the SAME type cluster //Combined defines #define CLUSTER_CHECK_SAMES 24 //Don't let any of the same type cluster @@ -197,4 +197,3 @@ to_chat(src, "Generating Region") N.generate() to_chat(src, "Generated Region") - diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 63d3736eba..3896293f78 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -244,11 +244,10 @@ ..() /obj/item/borg/upgrade/modkit/action(mob/living/silicon/robot/R) - if(..()) - return - - for(var/obj/item/gun/energy/kinetic_accelerator/cyborg/H in R.module.modules) - return install(H, usr) + . = ..() + if (.) + for(var/obj/item/gun/energy/kinetic_accelerator/cyborg/H in R.module.modules) + return install(H, usr) /obj/item/borg/upgrade/modkit/proc/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user) . = TRUE @@ -281,10 +280,18 @@ to_chat(user, "You don't have room([KA.get_remaining_mod_capacity()]% remaining, [cost]% needed) to install this modkit. Use a crowbar to remove existing modkits.") . = FALSE +/obj/item/borg/upgrade/modkit/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + for(var/obj/item/gun/energy/kinetic_accelerator/cyborg/KA in R.module.modules) + uninstall(KA) + /obj/item/borg/upgrade/modkit/proc/uninstall(obj/item/gun/energy/kinetic_accelerator/KA) forceMove(get_turf(KA)) KA.modkits -= src + + /obj/item/borg/upgrade/modkit/proc/modify_projectile(obj/item/projectile/kinetic/K) //use this one for effects you want to trigger before any damage is done at all and before damage is decreased by pressure diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 5fcb554c7d..afa73fcd4a 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -72,7 +72,7 @@ cached_reagents = null if(my_atom && my_atom.reagents == src) my_atom.reagents = null - + my_atom = null // Used in attack logs for reagents in pills and such /datum/reagents/proc/log_list() diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index f915bc497f..f3abe40ca5 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -144,9 +144,9 @@ data["isPillBottleLoaded"] = bottle ? 1 : 0 if(bottle) + GET_COMPONENT_FROM(STRB, /datum/component/storage, bottle) data["pillBotContent"] = bottle.contents.len - data["pillBotMaxContent"] = bottle.storage_slots - + data["pillBotMaxContent"] = STRB.max_items var/beakerContents[0] if(beaker) @@ -160,7 +160,6 @@ bufferContents.Add(list(list("name" = N.name, "id" = N.id, "volume" = N.volume))) // ^ data["bufferContents"] = bufferContents - return data /obj/machinery/chem_master/ui_act(action, params) @@ -222,12 +221,18 @@ if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr))) return var/obj/item/reagent_containers/pill/P + var/target_loc = drop_location() + var/drop_threshold = INFINITY + if(bottle) + GET_COMPONENT_FROM(STRB, /datum/component/storage, bottle) + if(STRB) + drop_threshold = STRB.max_items - bottle.contents.len for(var/i = 0; i < amount; i++) - if(bottle && bottle.contents.len < bottle.storage_slots) - P = new/obj/item/reagent_containers/pill(bottle) + if(i < drop_threshold) + P = new(target_loc) else - P = new/obj/item/reagent_containers/pill(drop_location()) + P = new(drop_location()) P.name = trim("[name] pill") adjust_item_drop_location(P) reagents.trans_to(P,vol_each) @@ -303,7 +308,7 @@ reagents.trans_to(P, vol_part) . = TRUE //CITADEL ADD Hypospray Vials - if("createvial") + if("createVial") var/many = params["many"] if(reagents.total_volume == 0) return @@ -314,21 +319,21 @@ amount_full = round(reagents.total_volume / 30) vol_part = reagents.total_volume % 30 var/name = stripped_input(usr, "Name:","Name your hypovial!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN) - if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE)) + if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr))) return - var/obj/item/reagent_containers/glass/bottle/vial/small/V + var/obj/item/reagent_containers/glass/bottle/vial/small/P for(var/i = 0; i < amount_full; i++) - V = new/obj/item/reagent_containers/glass/bottle/vial/small(drop_location()) - V.name = trim("[name] hypovial") - adjust_item_drop_location(V) - reagents.trans_to(V, 30) + P = new/obj/item/reagent_containers/glass/bottle/vial/small(drop_location()) + P.name = trim("[name] hypovial") + adjust_item_drop_location(P) + reagents.trans_to(P, 30) if(vol_part) - V = new/obj/item/reagent_containers/glass/bottle/vial/small(drop_location()) - V.name = trim("[name] hypovial") - adjust_item_drop_location(V) - reagents.trans_to(V, vol_part) + P = new/obj/item/reagent_containers/glass/bottle/vial/small(drop_location()) + P.name = trim("[name] hypovial") + adjust_item_drop_location(P) + reagents.trans_to(P, vol_part) . = TRUE //END CITADEL ADDITIONS if("analyze") diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index 3cdaaa0f5f..a4d9829aa6 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -101,16 +101,14 @@ //Fill machine with a bag! if(istype(I, /obj/item/storage/bag)) - var/obj/item/storage/bag/B = I - for (var/obj/item/reagent_containers/food/snacks/grown/G in B.contents) - B.remove_from_storage(G, src) - holdingitems[G] = TRUE - if(length(holdingitems) >= limit) //Sanity checking so the blender doesn't overfill + var/list/inserted = list() + if(I.SendSignal(COMSIG_TRY_STORAGE_TAKE_TYPE, /obj/item/reagent_containers/food/snacks/grown, src, limit - length(holdingitems), null, null, user, inserted)) + for(var/i in inserted) + holdingitems[i] = TRUE + if(!I.contents.len) + to_chat(user, "You empty [I] into [src].") + else to_chat(user, "You fill [src] to the brim.") - break - - if(!I.contents.len) - to_chat(user, "You empty [I] into [src].") updateUsrDialog() return TRUE diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index 3fe5d47479..7369fd6042 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -1,7 +1,3 @@ -#define SOLID 1 -#define LIQUID 2 -#define GAS 3 - #define REM REAGENTS_EFFECT_MULTIPLIER //Various reagents diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 4c475fd4c4..b9b0fd4136 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -615,6 +615,7 @@ to_chat(M, "Your eyes sting!") M.blind_eyes(2) + /datum/reagent/consumable/nutriment/stabilized name = "Stabilized Nutriment" id = "stabilizednutriment" @@ -627,7 +628,7 @@ if(M.nutrition > NUTRITION_LEVEL_FULL - 25) M.nutrition -= 3*nutriment_factor ..() - + ////Lavaland Flora Reagents//// diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 9eb81e918f..3881311490 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -587,7 +587,7 @@ ..() if(!istype(H)) return - if(!H.dna || !H.dna.species || !(H.dna.species.species_traits & SPECIES_ORGANIC)) + if(!H.dna || !H.dna.species || !(MOB_ORGANIC in H.mob_biotypes)) return if(isjellyperson(H)) @@ -1472,7 +1472,7 @@ /datum/reagent/carpet/reaction_turf(turf/T, reac_volume) if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) var/turf/open/floor/F = T - F.ChangeTurf(/turf/open/floor/carpet) + F.PlaceOnTop(/turf/open/floor/carpet) ..() return @@ -1817,12 +1817,6 @@ L.remove_trait(TRAIT_PACIFISM, id) ..() -/datum/reagent/pax/borg - name = "synth-pax" - id = "synthpax" - description = "A colorless liquid that suppresses violence on the subjects. Cheaper to synthetize, but wears out faster than normal Pax." - metabolization_rate = 1.5 * REAGENTS_METABOLISM - /datum/reagent/bz_metabolites name = "BZ metabolites" id = "bz_metabolites" @@ -1845,3 +1839,40 @@ if(changeling) changeling.chem_charges = max(changeling.chem_charges-2, 0) return ..() + +/datum/reagent/pax/peaceborg + name = "synth-pax" + id = "synthpax" + description = "A colorless liquid that suppresses violence on the subjects. Cheaper to synthetize, but wears out faster than normal Pax." + metabolization_rate = 1.5 * REAGENTS_METABOLISM + +/datum/reagent/peaceborg/confuse + name = "Dizzying Solution" + id = "dizzysolution" + description = "Makes the target off balance and dizzy" + metabolization_rate = 1.5 * REAGENTS_METABOLISM + taste_description = "dizziness" + +/datum/reagent/peaceborg/confuse/on_mob_life(mob/living/M) + if(M.confused < 6) + M.confused = CLAMP(M.confused + 3, 0, 5) + if(M.dizziness < 6) + M.dizziness = CLAMP(M.dizziness + 3, 0, 5) + if(prob(20)) + to_chat(M, "You feel confused and disorientated.") + ..() + +/datum/reagent/peaceborg/tire + name = "Tiring Solution" + id = "tiresolution" + description = "An extremely weak stamina-toxin that tires out the target. Completely harmless." + metabolization_rate = 1.5 * REAGENTS_METABOLISM + taste_description = "tiredness" + +/datum/reagent/peaceborg/tire/on_mob_life(mob/living/M) + var/healthcomp = (100 - M.health) //DOES NOT ACCOUNT FOR ADMINBUS THINGS THAT MAKE YOU HAVE MORE THAN 200/210 HEALTH, OR SOMETHING OTHER THAN A HUMAN PROCESSING THIS. + if(M.getStaminaLoss() < (45 - healthcomp)) //At 50 health you would have 200 - 150 health meaning 50 compensation. 60 - 50 = 10, so would only do 10-19 stamina.) + M.adjustStaminaLoss(10) + if(prob(30)) + to_chat(M, "You should sit down and take a rest...") + ..() diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 2746f311f8..0972f32ad7 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -231,12 +231,10 @@ toxpwr = 1 /datum/reagent/toxin/pestkiller/reaction_mob(mob/living/M, method=TOUCH, reac_volume) - if(method == VAPOR) - if(iscarbon(M)) - var/mob/living/carbon/C = M - if(!C.wear_mask) // If not wearing a mask - var/damage = min(round(0.4*reac_volume, 0.1),10) - C.adjustToxLoss(damage) + ..() + if(MOB_BUG in M.mob_biotypes) + var/damage = min(round(0.4*reac_volume, 0.1),10) + M.adjustToxLoss(damage) /datum/reagent/toxin/spore name = "Spore Toxin" @@ -847,39 +845,6 @@ . = 1 ..() -/datum/reagent/toxin/peaceborg/confuse - name = "Dizzying Solution" - id = "dizzysolution" - description = "Makes the target off balance and dizzy" - toxpwr = 0 - metabolization_rate = 1.5 * REAGENTS_METABOLISM - taste_description = "dizziness" - -/datum/reagent/toxin/peaceborg/confuse/on_mob_life(mob/living/M) - if(M.confused < 6) - M.confused = CLAMP(M.confused + 3, 0, 5) - if(M.dizziness < 6) - M.dizziness = CLAMP(M.dizziness + 3, 0, 5) - if(prob(20)) - to_chat(M, "You feel confused and disorientated.") - ..() - -/datum/reagent/toxin/peaceborg/tire - name = "Tiring Solution" - id = "tiresolution" - description = "An extremely weak stamina-toxin that tires out the target. Completely harmless." - toxpwr = 0 - metabolization_rate = 1.5 * REAGENTS_METABOLISM - taste_description = "tiredness" - -/datum/reagent/toxin/peaceborg/tire/on_mob_life(mob/living/M) - var/healthcomp = (100 - M.health) //DOES NOT ACCOUNT FOR ADMINBUS THINGS THAT MAKE YOU HAVE MORE THAN 200/210 HEALTH, OR SOMETHING OTHER THAN A HUMAN PROCESSING THIS. - if(M.getStaminaLoss() < (45 - healthcomp)) //At 50 health you would have 200 - 150 health meaning 50 compensation. 60 - 50 = 10, so would only do 10-19 stamina.) - M.adjustStaminaLoss(10) - if(prob(30)) - to_chat(M, "You should sit down and take a rest...") - ..() - /datum/reagent/toxin/delayed name = "Toxin Microcapsules" id = "delayed_toxin" diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index b4116a2915..ef41c7951e 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -67,6 +67,21 @@ Borg Hypospray modes[reagent] = modes.len + 1 +/obj/item/reagent_containers/borghypo/proc/del_reagent(reagent) + reagent_ids -= reagent + var/datum/reagents/RG + var/datum/reagents/TRG + for(var/i in 1 to reagent_ids.len) + TRG = reagent_list[i] + if (TRG.has_reagent(reagent)) + RG = TRG + break + if (RG) + reagent_list -= RG + RG.del_reagent(reagent) + + modes[reagent] = modes.len - 1 + /obj/item/reagent_containers/borghypo/proc/regenerate_reagents() if(iscyborg(src.loc)) var/mob/living/silicon/robot/R = src.loc diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 5f3470725d..41fbc5092d 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -5,12 +5,12 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) /obj/machinery/conveyor icon = 'icons/obj/recycling.dmi' - icon_state = "conveyor0" + icon_state = "conveyor_map" name = "conveyor belt" desc = "A conveyor belt." anchored = TRUE layer = BELOW_OPEN_DOOR_LAYER - var/operating = FALSE // 1 if running forward, -1 if backwards, 0 if off + var/operating = 0 // 1 if running forward, -1 if backwards, 0 if off var/operable = 1 // true if can operate (no broken segments in this belt run) var/forwards // this is the default (forward) direction, set by the map dir var/backwards // hopefully self-explanatory @@ -18,13 +18,22 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) var/list/affecting // the list of all items that will be moved this ptick var/id = "" // the control ID - must match controller ID - var/verted = 1 // set to -1 to have the conveyour belt be inverted, so you can use the other corner icons + var/verted = 1 // Inverts the direction the conveyor belt moves. speed_process = TRUE /obj/machinery/conveyor/centcom_auto id = "round_end_belt" +/obj/machinery/conveyor/inverted //Directions inverted so you can use different corner peices. + icon_state = "conveyor_map_inverted" + verted = -1 + +/obj/machinery/conveyor/inverted/Initialize(mapload) + . = ..() + if(mapload && !(dir in GLOB.diagonals)) + log_game("### MAPPING ERROR: [src] at [COORD(src)] spawned without using a diagonal dir. Please replace with a normal version.") + // Auto conveyour is always on unless unpowered /obj/machinery/conveyor/auto/Initialize(mapload, newdir) @@ -214,7 +223,8 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) var/position = 0 // 0 off, -1 reverse, 1 forward var/last_pos = -1 // last direction setting var/operated = 1 // true if just operated - var/convdir = 0 // 0 is two way switch, 1 and -1 means one way + var/oneway = FALSE // if the switch only operates the conveyor belts in a single direction. + var/invert_icon = FALSE // If the level points the opposite direction when it's turned on. var/id = "" // must match conveyor IDs to control them @@ -247,9 +257,15 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) /obj/machinery/conveyor_switch/update_icon() if(position<0) - icon_state = "switch-rev" + if(invert_icon) + icon_state = "switch-fwd" + else + icon_state = "switch-rev" else if(position>0) - icon_state = "switch-fwd" + if(invert_icon) + icon_state = "switch-rev" + else + icon_state = "switch-fwd" else icon_state = "switch-off" @@ -271,8 +287,8 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) /obj/machinery/conveyor_switch/interact(mob/user) add_fingerprint(user) if(position == 0) - if(convdir) //is it a oneway switch - position = convdir + if(oneway) //is it a oneway switch + position = oneway else if(last_pos < 0) position = 1 @@ -289,6 +305,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) // find any switches with same id as this one, and set their positions to match us for(var/obj/machinery/conveyor_switch/S in GLOB.conveyors_by_id[id]) + S.invert_icon = invert_icon S.position = position S.update_icon() CHECK_TICK @@ -302,8 +319,14 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) qdel(src) /obj/machinery/conveyor_switch/oneway - convdir = 1 //Set to 1 or -1 depending on which way you want the convayor to go. (In other words keep at 1 and set the proper dir on the belts.) + icon_state = "conveyor_switch_oneway" desc = "A conveyor control switch. It appears to only go in one direction." + oneway = TRUE + +/obj/machinery/conveyor_switch/oneway/Initialize() + . = ..() + if((dir == NORTH) || (dir == WEST)) + invert_icon = TRUE // // CONVEYOR CONSTRUCTION STARTS HERE diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index 529d883916..6defa464b9 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -246,13 +246,16 @@ return src //How disposal handles getting a storage dump from a storage object -/obj/machinery/disposal/storage_contents_dump_act(obj/item/storage/src_object, mob/user) +/obj/machinery/disposal/storage_contents_dump_act(datum/component/storage/src_object, mob/user) + . = ..() + if(.) + return for(var/obj/item/I in src_object) - if(user.s_active != src_object) + if(user.active_storage != src_object) if(I.on_found(user)) return src_object.remove_from_storage(I, src) - return 1 + return TRUE // Disposal bin // Holds items for disposal into pipe system @@ -268,11 +271,12 @@ // attack by item places it in to disposal /obj/machinery/disposal/bin/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/storage/bag/trash)) + if(istype(I, /obj/item/storage/bag/trash)) //Not doing component overrides because this is a specific type. var/obj/item/storage/bag/trash/T = I + GET_COMPONENT_FROM(STR, /datum/component/storage, T) to_chat(user, "You empty the bag.") for(var/obj/item/O in T.contents) - T.remove_from_storage(O,src) + STR.remove_from_storage(O,src) T.update_icon() update_icon() else @@ -281,7 +285,7 @@ // handle machine interaction /obj/machinery/disposal/bin/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ - datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) + datum/tgui/master_ui = null, datum/ui_state/state = GLOB.notcontained_state) if(stat & BROKEN) return ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm deleted file mode 100644 index d42e43ec9a..0000000000 --- a/code/modules/research/message_server.dm +++ /dev/null @@ -1,140 +0,0 @@ -GLOBAL_LIST_INIT(message_servers, list()) - -/datum/data_pda_msg - var/recipient = "Unspecified" //name of the person - var/sender = "Unspecified" //name of the sender - var/message = "Blank" //transferred message - var/icon/photo //Attached photo - -/datum/data_pda_msg/New(var/param_rec = "",var/param_sender = "",var/param_message = "",var/param_photo=null) - - if(param_rec) - recipient = param_rec - if(param_sender) - sender = param_sender - if(param_message) - message = param_message - if(param_photo) - photo = param_photo - -/datum/data_pda_msg/proc/get_photo_ref() - if(photo) - return "(Photo)" - return "" - -/datum/data_pda_msg/Topic(href,href_list) - ..() - if(href_list["photo"]) - var/mob/M = usr - M << browse_rsc(photo, "pda_photo.png") - M << browse("PDA Photo" \ - + "" \ - + "" \ - + "", "window=book;size=192x192") - onclose(M, "PDA Photo") - -/datum/data_rc_msg - var/rec_dpt = "Unspecified" //name of the person - var/send_dpt = "Unspecified" //name of the sender - var/message = "Blank" //transferred message - var/stamp = "Unstamped" - var/id_auth = "Unauthenticated" - var/priority = "Normal" - -/datum/data_rc_msg/New(var/param_rec = "",var/param_sender = "",var/param_message = "",var/param_stamp = "",var/param_id_auth = "",var/param_priority) - if(param_rec) - rec_dpt = param_rec - if(param_sender) - send_dpt = param_sender - if(param_message) - message = param_message - if(param_stamp) - stamp = param_stamp - if(param_id_auth) - id_auth = param_id_auth - if(param_priority) - switch(param_priority) - if(1) - priority = "Normal" - if(2) - priority = "High" - if(3) - priority = "Extreme" - else - priority = "Undetermined" - -/obj/machinery/message_server - icon = 'icons/obj/machines/research.dmi' - icon_state = "server" - name = "Messaging Server" - desc = "A machine that attempts to gather the secret knowledge of the universe." - density = TRUE - anchored = TRUE - use_power = IDLE_POWER_USE - idle_power_usage = 10 - active_power_usage = 100 - - var/list/datum/data_pda_msg/pda_msgs = list() - var/list/datum/data_rc_msg/rc_msgs = list() - var/active = 1 - var/decryptkey = "password" - -/obj/machinery/message_server/Initialize() - GLOB.message_servers += src - decryptkey = GenerateKey() - send_pda_message("System Administrator", "system", "This is an automated message. The messaging system is functioning correctly.") - . = ..() - -/obj/machinery/message_server/Destroy() - GLOB.message_servers -= src - return ..() - -/obj/machinery/message_server/proc/GenerateKey() - //Feel free to move to Helpers. - var/newKey - newKey += pick("the", "if", "of", "as", "in", "a", "you", "from", "to", "an", "too", "little", "snow", "dead", "drunk", "rosebud", "duck", "al", "le") - newKey += pick("diamond", "beer", "mushroom", "assistant", "clown", "captain", "twinkie", "security", "nuke", "small", "big", "escape", "yellow", "gloves", "monkey", "engine", "nuclear", "ai") - newKey += pick("1", "2", "3", "4", "5", "6", "7", "8", "9", "0") - return newKey - -/obj/machinery/message_server/process() - if(active && (stat & (BROKEN|NOPOWER))) - active = 0 - return - update_icon() - return - -/obj/machinery/message_server/proc/send_pda_message(recipient = "",sender = "",message = "",photo=null) - . = new/datum/data_pda_msg(recipient,sender,message,photo) - pda_msgs += . - -/obj/machinery/message_server/proc/send_rc_message(recipient = "",sender = "",message = "",stamp = "", id_auth = "", priority = 1) - rc_msgs += new/datum/data_rc_msg(recipient,sender,message,stamp,id_auth) - -/obj/machinery/message_server/attack_hand(mob/user) - to_chat(user, "You toggle PDA message passing from [active ? "On" : "Off"] to [active ? "Off" : "On"]") - active = !active - update_icon() - - return - -/obj/machinery/message_server/update_icon() - if((stat & (BROKEN|NOPOWER))) - icon_state = "server-nopower" - else if (!active) - icon_state = "server-off" - else - icon_state = "server-on" - - return - -/obj/machinery/blackbox_recorder - icon = 'icons/obj/stationobjs.dmi' - icon_state = "blackbox" - name = "Blackbox Recorder" - density = TRUE - anchored = TRUE - use_power = IDLE_POWER_USE - idle_power_usage = 10 - active_power_usage = 100 - armor = list(melee = 25, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 70) diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm index 459c1a9955..96e7656fbc 100644 --- a/code/modules/research/stock_parts.dm +++ b/code/modules/research/stock_parts.dm @@ -9,58 +9,18 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' w_class = WEIGHT_CLASS_HUGE - storage_slots = 50 - use_to_pickup = 1 - allow_quick_gather = 1 - allow_quick_empty = 1 - collection_mode = 1 - display_contents_with_number = 1 - max_w_class = WEIGHT_CLASS_NORMAL - max_combined_w_class = 100 - - can_hold = list( - /obj/item/reagent_containers/glass/beaker, - /obj/item/device/assembly/igniter, - /obj/item/stock_parts, - /obj/item/stack/ore/bluespace_crystal) - - var/works_from_distance = 0 + component_type = /datum/component/storage/concrete/rped + var/works_from_distance = FALSE var/pshoom_or_beepboopblorpzingshadashwoosh = 'sound/items/rped.ogg' var/alt_sound = null /obj/item/storage/part_replacer/afterattack(obj/machinery/T, mob/living/carbon/human/user, flag, params) - if(flag) - return - else if(works_from_distance) - if(istype(T)) - if(T.component_parts) - T.exchange_parts(user, src) - user.Beam(T,icon_state="rped_upgrade",time=5) - return - -/obj/item/storage/part_replacer/bluespace - name = "bluespace rapid part exchange device" - desc = "A version of the RPED that allows for replacement of parts and scanning from a distance, along with higher capacity for parts." - icon_state = "BS_RPED" - w_class = WEIGHT_CLASS_NORMAL - storage_slots = 400 - max_w_class = WEIGHT_CLASS_NORMAL - max_combined_w_class = 800 - works_from_distance = 1 - pshoom_or_beepboopblorpzingshadashwoosh = 'sound/items/pshoom.ogg' - alt_sound = 'sound/items/pshoom_2.ogg' - -/obj/item/storage/part_replacer/bluespace/dump_content_at(atom/dest_object, mob/user) - if(Adjacent(user)) - var/atom/dumping_location = dest_object.get_dumping_location() - if(get_dist(user, dumping_location) < 8) - if(dumping_location.storage_contents_dump_act(src, user)) - play_rped_sound() - user.Beam(dumping_location,icon_state="rped_upgrade",time=5) - return 1 - to_chat(user, "The [src.name] buzzes.") - playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) - return 0 + if(!istype(T) || !T.component_parts) + return ..() + if(works_from_distance || user.Adjacent(T)) + T.exchange_parts(user, src) + if(works_from_distance) + user.Beam(T, icon_state = "rped_upgrade", time = 5) /obj/item/storage/part_replacer/proc/play_rped_sound() //Plays the sound for RPED exhanging or installing parts. @@ -69,6 +29,16 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi else playsound(src, pshoom_or_beepboopblorpzingshadashwoosh, 40, 1) +/obj/item/storage/part_replacer/bluespace + name = "bluespace rapid part exchange device" + desc = "A version of the RPED that allows for replacement of parts and scanning from a distance, along with higher capacity for parts." + icon_state = "BS_RPED" + w_class = WEIGHT_CLASS_NORMAL + works_from_distance = TRUE + pshoom_or_beepboopblorpzingshadashwoosh = 'sound/items/pshoom.ogg' + alt_sound = 'sound/items/pshoom_2.ogg' + component_type = /datum/component/storage/concrete/bluespace/rped + /obj/item/storage/part_replacer/cyborg name = "rapid part exchange device" desc = "Special mechanical module made to store, sort, and apply standard machine parts." @@ -78,8 +48,9 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' //Sorts stock parts inside an RPED by their rating. -/proc/cmp_rped_sort(obj/item/A, obj/item/B) - return A.get_part_rating() - B.get_part_rating() +//Only use /obj/item/stock_parts/ with this sort proc! +/proc/cmp_rped_sort(obj/item/stock_parts/A, obj/item/stock_parts/B) + return B.rating - A.rating /obj/item/stock_parts name = "stock part" @@ -95,6 +66,7 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi /obj/item/stock_parts/get_part_rating() return rating + //Rating 1 /obj/item/stock_parts/capacitor diff --git a/code/modules/research/xenobiology/crossbreeding/reproductive.dm b/code/modules/research/xenobiology/crossbreeding/reproductive.dm index 17e33a9c41..878e17c1e7 100644 --- a/code/modules/research/xenobiology/crossbreeding/reproductive.dm +++ b/code/modules/research/xenobiology/crossbreeding/reproductive.dm @@ -18,22 +18,16 @@ Reproductive extracts: to_chat(user, "[src] is still digesting!") return if(istype(O, /obj/item/storage/bag/bio)) - var/obj/item/storage/P = O - var/obj/item/reagent_containers/food/snacks/monkeycube/M - for(var/obj/item/X in P.contents) - M = X - if(M && istype(M)) - break - if(M && istype(M)) - P.remove_from_storage(M, get_turf(src)) - attackby(M,user) + var/list/inserted = list() + O.SendSignal(COMSIG_TRY_STORAGE_TAKE_TYPE, /obj/item/reagent_containers/food/snacks/monkeycube, src, 1, null, null, user, inserted) + if(inserted.len) + var/obj/item/reagent_containers/food/snacks/monkeycube/M = inserted[1] + if(istype(M)) + eat_cube(M, user) else to_chat(user, "There are no monkey cubes in the bio bag!") if(istype(O,/obj/item/reagent_containers/food/snacks/monkeycube)) - qdel(O) - cubes_eaten++ - to_chat(user, "You feed [O] to [src], and it pulses gently.") - playsound(src, 'sound/items/eatfood.ogg', 20, 1) + eat_cube(O, user) if(cubes_eaten >= 3) var/cores = rand(1,4) visible_message("[src] briefly swells to a massive size, and expels [cores] extract[cores > 1 ? "s":""]!") @@ -43,6 +37,12 @@ Reproductive extracts: new extract_type(get_turf(loc)) cubes_eaten = 0 +/obj/item/slimecross/reproductive/proc/eat_cube(obj/item/reagent_containers/food/snacks/monkeycube, mob/user) + qdel(monkeycube) + cubes_eaten++ + to_chat(user, "You feed [monkeycube] to [src], and it pulses gently.") + playsound(src, 'sound/items/eatfood.ogg', 20, 1) + /obj/item/slimecross/reproductive/grey extract_type = /obj/item/slime_extract/grey colour = "grey" diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index 19f553f2b6..3b71906dd4 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -22,14 +22,16 @@ desc = "A computer used for remotely handling slimes." networks = list("ss13") circuit = /obj/item/circuitboard/computer/xenobiology - var/datum/action/innate/slime_place/slime_place_action = new - var/datum/action/innate/slime_pick_up/slime_up_action = new - var/datum/action/innate/feed_slime/feed_slime_action = new - var/datum/action/innate/monkey_recycle/monkey_recycle_action = new - var/datum/action/innate/slime_scan/scan_action = new - var/datum/action/innate/feed_potion/potion_action = new + var/datum/action/innate/slime_place/slime_place_action + var/datum/action/innate/slime_pick_up/slime_up_action + var/datum/action/innate/feed_slime/feed_slime_action + var/datum/action/innate/monkey_recycle/monkey_recycle_action + var/datum/action/innate/slime_scan/scan_action + var/datum/action/innate/feed_potion/potion_action - var/list/stored_slimes = list() + var/datum/component/redirect/listener + + var/list/stored_slimes var/obj/item/slimepotion/slime/current_potion var/max_slimes = 5 var/monkeys = 0 @@ -39,6 +41,26 @@ light_color = LIGHT_COLOR_PINK +/obj/machinery/computer/camera_advanced/xenobio/Initialize() + . = ..() + slime_place_action = new + slime_up_action = new + feed_slime_action = new + monkey_recycle_action = new + scan_action = new + potion_action = new + stored_slimes = list() + listener = AddComponent(/datum/component/redirect, COMSIG_ATOM_CONTENTS_DEL, CALLBACK(src, .proc/on_contents_del)) + +/obj/machinery/computer/camera_advanced/xenobio/Destroy() + stored_slimes = null + QDEL_NULL(current_potion) + for(var/i in contents) + var/mob/living/simple_animal/slime/S = i + if(istype(S)) + S.forceMove(drop_location()) + return ..() + /obj/machinery/computer/camera_advanced/xenobio/CreateEye() eyeobj = new /mob/camera/aiEye/remote/xenobio(get_turf(src)) eyeobj.origin = src @@ -64,7 +86,7 @@ feed_slime_action.Grant(user) actions += feed_slime_action - if(monkey_recycle_action && (upgradetier & XENOBIO_UPGRADE_MONKEYS)) //CIT CHANGE - makes remote monkey recycling require XENOBIO_UPGRADE_MONKEYS + if(monkey_recycle_action && (upgradetier & XENOBIO_UPGRADE_MONKEYS)) //CIT CHANGE - makes monkey-related actions require XENOBIO_UPGRADE_MONKEYS monkey_recycle_action.target = src monkey_recycle_action.Grant(user) actions += monkey_recycle_action @@ -79,6 +101,12 @@ potion_action.Grant(user) actions += potion_action +/obj/machinery/computer/camera_advanced/xenobio/proc/on_contents_del(atom/deleted) + if(current_potion == deleted) + current_potion = null + if(deleted in stored_slimes) + stored_slimes -= deleted + /obj/machinery/computer/camera_advanced/xenobio/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/reagent_containers/food/snacks/monkeycube) && (upgradetier & XENOBIO_UPGRADE_MONKEYS)) //CIT CHANGE - makes monkey-related actions require XENOBIO_UPGRADE_MONKEYS monkeys++ diff --git a/code/modules/shuttle/assault_pod.dm b/code/modules/shuttle/assault_pod.dm index f2b1bd5e08..5b5de35595 100644 --- a/code/modules/shuttle/assault_pod.dm +++ b/code/modules/shuttle/assault_pod.dm @@ -7,7 +7,7 @@ height = 7 /obj/docking_port/mobile/assault_pod/request() - if(z == initial(src.z)) //No launching pods that have already launched + if(!(z in SSmapping.levels_by_trait(ZTRAIT_STATION))) //No launching pods that have already launched return ..() diff --git a/code/modules/shuttle/docking.dm b/code/modules/shuttle/docking.dm index df41f1f9e6..c0052845c7 100644 --- a/code/modules/shuttle/docking.dm +++ b/code/modules/shuttle/docking.dm @@ -14,25 +14,11 @@ var/obj/docking_port/stationary/old_dock = get_docked() - // The turf that gets placed under where the shuttle moved from - var/underlying_turf_type = SHUTTLE_DEFAULT_TURF_TYPE - - // The baseturf that the gets assigned to the turf_type above - var/underlying_baseturf_type = SHUTTLE_DEFAULT_BASETURF_TYPE - // The area that gets placed under where the shuttle moved from var/underlying_area_type = SHUTTLE_DEFAULT_UNDERLYING_AREA - - // The baseturf cache is a typecache of what counts as a baseturf to be left behind - var/list/baseturf_cache if(old_dock) //Dock overwrites - underlying_turf_type = old_dock.turf_type - underlying_baseturf_type = old_dock.baseturf_type underlying_area_type = old_dock.area_type - baseturf_cache = old_dock.baseturf_cache - else - baseturf_cache = typecacheof(underlying_baseturf_type) /************************************************************************************************************** Both lists are associative with a turf:bitflag structure. (new_turfs bitflag space unused currently) @@ -70,7 +56,7 @@ remove_ripples() - . = preflight_check(old_turfs, new_turfs, areas_to_move, rotation, underlying_turf_type, baseturf_cache) + . = preflight_check(old_turfs, new_turfs, areas_to_move, rotation) if(.) return @@ -97,7 +83,7 @@ CHECK_TICK - cleanup_runway(new_dock, old_turfs, new_turfs, areas_to_move, moved_atoms, rotation, movement_direction, underlying_old_area, underlying_turf_type, underlying_baseturf_type) + cleanup_runway(new_dock, old_turfs, new_turfs, areas_to_move, moved_atoms, rotation, movement_direction, underlying_old_area) CHECK_TICK @@ -118,8 +104,6 @@ list/new_turfs, list/areas_to_move, rotation, - underlying_turf_type, - baseturf_cache, ) for(var/i in 1 to old_turfs.len) @@ -142,8 +126,8 @@ continue move_mode = moving_atom.beforeShuttleMove(newT, rotation, move_mode, src) //atoms - move_mode = oldT.fromShuttleMove(newT, underlying_turf_type, baseturf_cache, move_mode) //turfs - move_mode = newT.toShuttleMove(oldT, move_mode , src) //turfs + move_mode = oldT.fromShuttleMove(newT, move_mode) //turfs + move_mode = newT.toShuttleMove(oldT, move_mode, src) //turfs if(move_mode & MOVE_AREA) areas_to_move[old_area] = TRUE @@ -188,8 +172,6 @@ rotation, movement_direction, area/underlying_old_area, - underlying_turf_type, - underlying_baseturf_type, ) underlying_old_area.afterShuttleMove() @@ -210,7 +192,7 @@ continue var/turf/oldT = old_turfs[i] var/turf/newT = new_turfs[i] - newT.afterShuttleMove(oldT, underlying_turf_type, underlying_baseturf_type, rotation) //turfs + newT.afterShuttleMove(oldT, rotation) //turfs for(var/i in 1 to moved_atoms.len) CHECK_TICK diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 33c51cf0db..1f262b285c 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -561,7 +561,7 @@ SSshuttle.emergency = current_emergency SSshuttle.backup_shuttle = src -#undef TIMELEFT +#undef TIME_LEFT #undef ENGINES_START_TIME #undef ENGINES_STARTED #undef IS_DOCKED diff --git a/code/modules/shuttle/manipulator.dm b/code/modules/shuttle/manipulator.dm index 299d9e1eaa..1d8732cda9 100644 --- a/code/modules/shuttle/manipulator.dm +++ b/code/modules/shuttle/manipulator.dm @@ -271,8 +271,7 @@ // The shuttle template we loaded isn't "timid" which means // it's already registered with the shuttles subsystem. // This is a bad thing. - var/m = "Template [S] is non-timid! Unloading." - WARNING(m) + stack_trace("Template [S] is non-timid! Unloading.") M.jumpToNullSpace() return else diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index d0ae11046d..bce22d05cf 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -6,15 +6,9 @@ All ShuttleMove procs go here // Called on every turf in the shuttle region, returns a bitflag for allowed movements of that turf // returns the new move_mode (based on the old) -/turf/proc/fromShuttleMove(turf/newT, turf_type, list/baseturf_cache, move_mode) - if(!(move_mode & MOVE_AREA)) +/turf/proc/fromShuttleMove(turf/newT, move_mode) + if(!(move_mode & MOVE_AREA) || !isshuttleturf(src)) return move_mode - if(istype(src, turf_type)) - if(length(baseturfs)) - if(baseturf_cache[baseturfs[1]]) - return move_mode - else if(baseturf_cache[baseturfs]) - return move_mode return move_mode | MOVE_TURF | MOVE_CONTENTS @@ -54,7 +48,12 @@ All ShuttleMove procs go here if(newT == src) // In case of in place shuttle rotation shenanigans. return //Destination turf changes - newT.CopyOnTop(src, 1, 0) // We only want a surface copy + //Baseturfs is definitely a list or this proc wouldnt be called + var/shuttle_boundary = baseturfs.Find(/turf/baseturf_skipover/shuttle) + if(!shuttle_boundary) + CRASH("A turf queued to move via shuttle somehow had no skipover in baseturfs. [src]([type]):[loc]") + var/depth = baseturfs.len - shuttle_boundary + 1 + newT.CopyOnTop(src, 1, depth) //Air stuff newT.blocks_air = TRUE newT.air_update_turf(TRUE) @@ -67,10 +66,12 @@ All ShuttleMove procs go here return TRUE // Called on the new turf after everything has been moved -/turf/proc/afterShuttleMove(turf/oldT, turf_type, baseturf_type, rotation) +/turf/proc/afterShuttleMove(turf/oldT, rotation) //Dealing with the turf we left behind oldT.TransferComponents(src) - oldT.ChangeTurf(turf_type, baseturf_type, CHANGETURF_IGNORE_AIR) // TODO: make this oldT.ScrapeAway() which requires templating all shuttles + var/shuttle_boundary = baseturfs.Find(/turf/baseturf_skipover/shuttle) + if(shuttle_boundary) + oldT.ScrapeAway(baseturfs.len - shuttle_boundary + 1) if(rotation) shuttleRotate(rotation) //see shuttle_rotate.dm diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index 99b79f6653..77dac0745b 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -7,7 +7,6 @@ /obj/docking_port invisibility = INVISIBILITY_ABSTRACT icon = 'icons/obj/device.dmi' - //icon = 'icons/dirsquare.dmi' icon_state = "pinonfar" resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF @@ -22,8 +21,6 @@ var/dheight = 0 //position relative to covered area, parallel to dir var/area_type - var/turf_type - var/baseturf_type var/hidden = FALSE //are we invisible to shuttle navigation computers? //these objects are indestructible @@ -146,25 +143,17 @@ var/y0 = bounds[2] var/x1 = bounds[3] var/y1 = bounds[4] - if(x0 <= x1 && !ISINRANGE(T.x, x0, x1)) + if(!ISINRANGE(T.x, min(x0, x1), max(x0, x1))) return FALSE - else if(!ISINRANGE(T.x, x1, x0)) - return FALSE - if(y0 <= y1 && !ISINRANGE(T.y, y0, y1)) - return FALSE - else if(!ISINRANGE(T.y, y1, y0)) + if(!ISINRANGE(T.y, min(y0, y1), max(y0, y1))) return FALSE return TRUE /obj/docking_port/stationary name = "dock" - turf_type = SHUTTLE_DEFAULT_TURF_TYPE - baseturf_type = SHUTTLE_DEFAULT_BASETURF_TYPE area_type = SHUTTLE_DEFAULT_UNDERLYING_AREA - var/list/baseturf_cache - var/last_dock_time var/datum/map_template/shuttle/roundstart_template @@ -177,7 +166,6 @@ id = "[SSshuttle.stationary.len]" if(name == "dock") name = "dock[SSshuttle.stationary.len]" - baseturf_cache = typecacheof(baseturf_type) if(mapload) for(var/turf/T in return_turfs()) @@ -214,7 +202,6 @@ /obj/docking_port/stationary/transit name = "In Transit" - turf_type = /turf/open/space/transit var/list/turf/assigned_turfs = list() var/area/shuttle/transit/assigned_area var/obj/docking_port/mobile/owner @@ -226,8 +213,9 @@ /obj/docking_port/stationary/transit/proc/dezone() for(var/i in 1 to assigned_turfs.len) var/turf/T = assigned_turfs[i] - if(T.type == turf_type) - T.ChangeTurf(SHUTTLE_DEFAULT_TURF_TYPE, SHUTTLE_DEFAULT_BASETURF_TYPE) + if(istype(T, /turf/open/space/transit)) + T.ChangeTurf(/turf/open/space) + T.assemble_baseturfs(initial(T.baseturfs)) T.flags_1 |= UNUSED_TRANSIT_TURF_1 /obj/docking_port/stationary/transit/Destroy(force=FALSE) @@ -437,18 +425,11 @@ // Not in a fancy way, it just ceases. var/obj/docking_port/stationary/current_dock = get_docked() - var/turf_type = SHUTTLE_DEFAULT_TURF_TYPE - var/baseturf_type = SHUTTLE_DEFAULT_BASETURF_TYPE var/underlying_area_type = SHUTTLE_DEFAULT_UNDERLYING_AREA // If the shuttle is docked to a stationary port, restore its normal // "empty" area and turf - if(current_dock) - if(current_dock.turf_type) - turf_type = current_dock.turf_type - if(current_dock.baseturf_type) - baseturf_type = current_dock.baseturf_type - if(current_dock.area_type) - underlying_area_type = current_dock.area_type + if(current_dock && current_dock.area_type) + underlying_area_type = current_dock.area_type var/list/old_turfs = return_ordered_turfs(x, y, z, dir) var/area/underlying_area = locate(underlying_area_type) in GLOB.sortedAreas @@ -462,7 +443,14 @@ var/area/old_area = oldT.loc underlying_area.contents += oldT oldT.change_area(old_area, underlying_area) - oldT.empty(turf_type, baseturf_type) + oldT.empty(null) + + // Here we locate the bottomost shuttle boundary and remove all turfs above it + var/list/baseturf_cache = oldT.baseturfs + for(var/k in 1 to length(baseturf_cache)) + if(ispath(baseturf_cache[k], /turf/baseturf_skipover/shuttle)) + oldT.ScrapeAway(baseturf_cache.len - k + 1) + break qdel(src, force=TRUE) diff --git a/code/modules/surgery/organs/autoimplanter.dm b/code/modules/surgery/organs/autoimplanter.dm deleted file mode 100644 index 2caae96184..0000000000 --- a/code/modules/surgery/organs/autoimplanter.dm +++ /dev/null @@ -1,64 +0,0 @@ -#define INFINITE -1 - -/obj/item/device/autoimplanter - name = "autoimplanter" - desc = "A device that automatically injects a cyber-implant into the user without the hassle of extensive surgery. It has a slot to insert implants and a screwdriver slot for removing accidentally added implants." - icon_state = "autoimplanter" - item_state = "walkietalkie"//left as this so as to intentionally not have inhands - w_class = WEIGHT_CLASS_SMALL - var/obj/item/organ/storedorgan - var/organ_type = /obj/item/organ/cyberimp - var/uses = INFINITE - -/obj/item/device/autoimplanter/New() - ..() - if(storedorgan) - storedorgan.loc = src - -/obj/item/device/autoimplanter/attack_self(mob/user)//when the object it used... - if(!uses) - to_chat(user, "[src] has already been used. The tools are dull and won't reactivate.") - return - else if(!storedorgan) - to_chat(user, "[src] currently has no implant stored.") - return - storedorgan.Insert(user)//insert stored organ into the user - user.visible_message("[user] presses a button on [src], and you hear a short mechanical noise.", "You feel a sharp sting as [src] plunges into your body.") - playsound(get_turf(user), 'sound/weapons/circsawhit.ogg', 50, 1) - storedorgan = null - if(uses != INFINITE) - uses-- - if(!uses) - desc = "[initial(desc)] Looks like it's been used up." - -/obj/item/device/autoimplanter/attackby(obj/item/I, mob/user, params) - if(istype(I, organ_type)) - if(storedorgan) - to_chat(user, "[src] already has an implant stored.") - return - else if(!uses) - to_chat(user, "[src] has already been used up.") - return - if(!user.transferItemToLoc(I, src)) - return - storedorgan = I - to_chat(user, "You insert the [I] into [src].") - else if(istype(I, /obj/item/screwdriver)) - if(!storedorgan) - to_chat(user, "There's no implant in [src] for you to remove.") - else - var/turf/open/floorloc = get_turf(user) - floorloc.contents += contents - to_chat(user, "You remove the [storedorgan] from [src].") - playsound(get_turf(user), I.usesound, 50, 1) - storedorgan = null - if(uses != INFINITE) - uses-- - if(!uses) - desc = "[initial(desc)] Looks like it's been used up." - -/obj/item/device/autoimplanter/cmo - name = "medical HUD autoimplanter" - desc = "A single use autoimplanter that contains a medical heads-up display augment. A screwdriver can be used to remove it, but implants can't be placed back in." - storedorgan = new/obj/item/organ/cyberimp/eyes/hud/medical() - uses = 1 diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm index 3cb1a7e764..e8cbb80203 100755 --- a/code/modules/surgery/organs/liver.dm +++ b/code/modules/surgery/organs/liver.dm @@ -1,6 +1,6 @@ #define LIVER_DEFAULT_HEALTH 100 //amount of damage required for liver failure #define LIVER_DEFAULT_TOX_TOLERANCE 3 //amount of toxins the liver can filter out -#define LIVER_DEFAULT_TOX_LETHALITY 0.5 //lower values lower how harmful toxins are to the liver +#define LIVER_DEFAULT_TOX_LETHALITY 0.01 //lower values lower how harmful toxins are to the liver /obj/item/organ/liver name = "liver" @@ -25,22 +25,17 @@ //slowly heal liver damage damage = max(0, damage - 0.1) - if(filterToxins) + if(filterToxins && !owner.has_trait(TRAIT_TOXINLOVER)) //handle liver toxin filtration - var/toxamount var/static/list/toxinstypecache = typecacheof(/datum/reagent/toxin) for(var/I in C.reagents.reagent_list) var/datum/reagent/pickedreagent = I if(is_type_in_typecache(pickedreagent, toxinstypecache)) - toxamount += C.reagents.get_reagent_amount(initial(pickedreagent.id)) - if(toxamount <= toxTolerance && toxamount > 0) - for(var/I in C.reagents.reagent_list) - var/datum/reagent/pickedreagent = I - if(is_type_in_typecache(pickedreagent, toxinstypecache)) + var/thisamount = C.reagents.get_reagent_amount(initial(pickedreagent.id)) + if (thisamount <= toxTolerance && thisamount) C.reagents.remove_reagent(initial(pickedreagent.id), 1) - else if(toxamount > toxTolerance) - damage += toxamount*toxLethality - + else + damage += (thisamount*toxLethality) //metabolize reagents C.reagents.metabolize(C, can_overdose=TRUE) @@ -80,7 +75,7 @@ alcohol_tolerance = 0.001 maxHealth = 200 //double the health of a normal liver toxTolerance = 15 //can shrug off up to 15u of toxins - toxLethality = 0.3 //20% less damage than a normal liver + toxLethality = 0.008 //20% less damage than a normal liver /obj/item/organ/liver/cybernetic/emp_act(severity) switch(severity) diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index aaed5757d1..ce5fafcd9f 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -1,13 +1,3 @@ -#define HUMAN_MAX_OXYLOSS 3 -#define HUMAN_CRIT_MAX_OXYLOSS (SSmobs.wait/30) -#define HEAT_GAS_DAMAGE_LEVEL_1 2 -#define HEAT_GAS_DAMAGE_LEVEL_2 4 -#define HEAT_GAS_DAMAGE_LEVEL_3 8 - -#define COLD_GAS_DAMAGE_LEVEL_1 0.5 -#define COLD_GAS_DAMAGE_LEVEL_2 1.5 -#define COLD_GAS_DAMAGE_LEVEL_3 3 - /obj/item/organ/lungs name = "lungs" icon_state = "lungs" @@ -369,13 +359,3 @@ cold_level_1_threshold = 200 cold_level_2_threshold = 140 cold_level_3_threshold = 100 - -#undef HUMAN_MAX_OXYLOSS -#undef HUMAN_CRIT_MAX_OXYLOSS -#undef HEAT_GAS_DAMAGE_LEVEL_1 -#undef HEAT_GAS_DAMAGE_LEVEL_2 -#undef HEAT_GAS_DAMAGE_LEVEL_3 - -#undef COLD_GAS_DAMAGE_LEVEL_1 -#undef COLD_GAS_DAMAGE_LEVEL_2 -#undef COLD_GAS_DAMAGE_LEVEL_3 diff --git a/code/modules/telesci/telepad.dm b/code/modules/telesci/telepad.dm deleted file mode 100644 index d712b773d3..0000000000 --- a/code/modules/telesci/telepad.dm +++ /dev/null @@ -1,170 +0,0 @@ -///SCI TELEPAD/// -/obj/machinery/telepad - name = "telepad" - desc = "A bluespace telepad used for teleporting objects to and from a location." - icon = 'icons/obj/telescience.dmi' - icon_state = "pad-idle" - anchored = 1 - use_power = 1 - idle_power_usage = 200 - active_power_usage = 5000 - var/efficiency - -/obj/machinery/telepad/Initialize() - . = ..() - var/obj/item/circuitboard/machine/B = new /obj/item/circuitboard/machine/telesci_pad(null) - B.apply_default_parts(src) - -/obj/item/circuitboard/machine/telesci_pad - name = "Telepad (Machine Board)" - build_path = /obj/machinery/telepad - req_components = list( - /obj/item/ore/bluespace_crystal = 2, - /obj/item/stock_parts/capacitor = 1, - /obj/item/stack/cable_coil = 1, - /obj/item/stock_parts/console_screen = 1) - def_components = list(/obj/item/ore/bluespace_crystal = /obj/item/ore/bluespace_crystal/artificial) - -/obj/machinery/telepad/RefreshParts() - var/E - for(var/obj/item/stock_parts/capacitor/C in component_parts) - E += C.rating - efficiency = E - -/obj/machinery/telepad/attackby(obj/item/I, mob/user, params) - if(default_deconstruction_screwdriver(user, "pad-idle-o", "pad-idle", I)) - return - - if(panel_open) - if(istype(I, /obj/item/device/multitool)) - var/obj/item/device/multitool/M = I - M.buffer = src - to_chat(user, "You save the data in the [I.name]'s buffer.") - return 1 - - if(exchange_parts(user, I)) - return - - if(default_deconstruction_crowbar(I)) - return - - return ..() - - -//CARGO TELEPAD// -/obj/machinery/telepad_cargo - name = "cargo telepad" - desc = "A telepad used by the Rapid Crate Sender." - icon = 'icons/obj/telescience.dmi' - icon_state = "pad-idle" - anchored = 1 - use_power = 1 - idle_power_usage = 20 - active_power_usage = 500 - var/stage = 0 -/obj/machinery/telepad_cargo/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/wrench)) - anchored = 0 - playsound(src, 'sound/items/Ratchet.ogg', 50, 1) - if(anchored) - anchored = 0 - to_chat(user, "\The [src] can now be moved.") - else if(!anchored) - anchored = 1 - to_chat(user, "\The [src] is now secured.") - else if(istype(W, /obj/item/screwdriver)) - if(stage == 0) - playsound(src, W.usesound, 50, 1) - to_chat(user, "You unscrew the telepad's tracking beacon.") - stage = 1 - else if(stage == 1) - playsound(src, W.usesound, 50, 1) - to_chat(user, "You screw in the telepad's tracking beacon.") - stage = 0 - else if(istype(W, /obj/item/weldingtool) && stage == 1) - var/obj/item/weldingtool/WT = W - if(WT.remove_fuel(0,user)) - playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) - to_chat(user, "You start disassembling [src]...") - if(do_after(user,20*WT.toolspeed, target = src)) - if(!WT.isOn()) - return - to_chat(user, "You disassemble [src].") - new /obj/item/stack/sheet/metal(get_turf(src)) - new /obj/item/stack/sheet/glass(get_turf(src)) - qdel(src) - else - return ..() - -///TELEPAD CALLER/// -/obj/item/device/telepad_beacon - name = "telepad beacon" - desc = "Use to warp in a cargo telepad." - icon = 'icons/obj/radio.dmi' - icon_state = "beacon" - item_state = "beacon" - -/obj/item/device/telepad_beacon/attack_self(mob/user) - if(user) - to_chat(user, "Locked In") - new /obj/machinery/telepad_cargo(user.loc) - playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) - qdel(src) - return - -///HANDHELD TELEPAD USER/// -/obj/item/rcs - name = "rapid-crate-sender (RCS)" - desc = "Use this to send crates and closets to cargo telepads." - icon = 'icons/obj/telescience.dmi' - icon_state = "rcs" - flags_1 = CONDUCT_1 - force = 10 - throwforce = 10 - throw_speed = 2 - throw_range = 5 - var/rcharges = 10 - var/obj/machinery/pad = null - var/last_charge = 30 - var/mode = 0 - var/rand_x = 0 - var/rand_y = 0 - var/emagged = 0 - var/teleporting = 0 - -/obj/item/rcs/New() - ..() - START_PROCESSING(SSobj, src) - -/obj/item/rcs/examine(mob/user) - ..() - to_chat(user, "There are [rcharges] charge\s left.") - -/obj/item/rcs/Destroy() - STOP_PROCESSING(SSobj, src) - return ..() -/obj/item/rcs/process() - if(rcharges > 10) - rcharges = 10 - if(last_charge == 0) - rcharges++ - last_charge = 30 - else - last_charge-- - -/obj/item/rcs/attack_self(mob/user) - if(emagged) - if(mode == 0) - mode = 1 - playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) - to_chat(user, "The telepad locator has become uncalibrated.") - else - mode = 0 - playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) - to_chat(user, "You calibrate the telepad locator.") - -/obj/item/rcs/emag_act(mob/user) - if(!emagged) - emagged = TRUE - do_sparks(5, TRUE, src) - to_chat(user, "You emag the RCS. Click on it to toggle between modes.") diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm deleted file mode 100644 index 72f17fbf55..0000000000 --- a/code/modules/telesci/telesci_computer.dm +++ /dev/null @@ -1,363 +0,0 @@ -/obj/machinery/computer/telescience - name = "\improper Telepad Control Console" - desc = "Used to teleport objects to and from the telescience telepad." - icon_screen = "teleport" - icon_keyboard = "teleport_key" - circuit = /obj/item/circuitboard/computer/telesci_console - var/sending = 1 - var/obj/machinery/telepad/telepad = null - var/temp_msg = "Telescience control console initialized.
Welcome." - - // VARIABLES // - var/teles_left // How many teleports left until it becomes uncalibrated - var/datum/projectile_data/last_tele_data = null - var/z_co = 1 - var/power_off - var/rotation_off - //var/angle_off - var/last_target - - var/rotation = 0 - var/angle = 45 - var/power = 5 - - // Based on the power used - var/teleport_cooldown = 0 // every index requires a bluespace crystal - var/list/power_options = list(5, 10, 20, 25, 30, 40, 50, 80, 100) - var/teleporting = 0 - var/starting_crystals = 3 - var/max_crystals = 4 - var/list/crystals = list() - var/obj/item/device/gps/inserted_gps - -/obj/machinery/computer/telescience/Initialize() - recalibrate() - . = ..() - -/obj/machinery/computer/telescience/Destroy() - eject() - if(inserted_gps) - inserted_gps.loc = loc - inserted_gps = null - return ..() - -/obj/machinery/computer/telescience/examine(mob/user) - ..() - to_chat(user, "There are [crystals.len ? crystals.len : "no"] bluespace crystal\s in the crystal slots.") - -/obj/machinery/computer/telescience/Initialize(mapload) - . = ..() - if(mapload) - for(var/i = 1; i <= starting_crystals; i++) - crystals += new /obj/item/ore/bluespace_crystal/artificial(null) // starting crystals - -/obj/machinery/computer/telescience/attack_paw(mob/user) - to_chat(user, "You are too primitive to use this computer!") - return - -/obj/machinery/computer/telescience/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/ore/bluespace_crystal)) - if(crystals.len >= max_crystals) - to_chat(user, "There are not enough crystal slots.") - return - if(!user.drop_item()) - return - crystals += W - W.loc = null - user.visible_message("[user] inserts [W] into \the [src]'s crystal slot.", "You insert [W] into \the [src]'s crystal slot.") - updateDialog() - else if(istype(W, /obj/item/device/gps)) - if(!inserted_gps) - if(!user.transferItemToLoc(W, src)) - return - inserted_gps = W - user.visible_message("[user] inserts [W] into \the [src]'s GPS device slot.", "You insert [W] into \the [src]'s GPS device slot.") - else if(istype(W, /obj/item/device/multitool)) - var/obj/item/device/multitool/M = W - if(M.buffer && istype(M.buffer, /obj/machinery/telepad)) - telepad = M.buffer - M.buffer = null - to_chat(user, "You upload the data from the [W.name]'s buffer.") - else - return ..() - -/obj/machinery/computer/telescience/attack_ai(mob/user) - src.attack_hand(user) - -/obj/machinery/computer/telescience/attack_hand(mob/user) - if(..()) - return - interact(user) - -/obj/machinery/computer/telescience/interact(mob/user) - var/t - if(!telepad) - in_use = 0 //Yeah so if you deconstruct teleporter while its in the process of shooting it wont disable the console - t += "
No telepad located.
Please add telepad data.

" - else - if(inserted_gps) - t += "Eject GPS" - t += "Set GPS memory" - else - t += "Eject GPS" - t += "Set GPS memory" - t += "
[temp_msg]

" - t += "Set Bearing" - t += "
[rotation]°
" - t += "Set Elevation" - t += "
[angle]°
" - t += "Set Power" - t += "
" - - for(var/i = 1; i <= power_options.len; i++) - if(crystals.len + telepad.efficiency < i) - t += "[power_options[i]]" - continue - if(power == power_options[i]) - t += "[power_options[i]]" - continue - t += "[power_options[i]]" - t += "
" - - t += "Set Sector" - t += "
[z_co ? z_co : "NULL"]
" - - t += "
Send" - t += " Receive" - t += "
Recalibrate Crystals Eject Crystals" - - // Information about the last teleport - t += "
" - if(!last_tele_data) - t += "No teleport data found." - else - t += "Source Location: ([last_tele_data.src_x], [last_tele_data.src_y])
" - //t += "Distance: [round(last_tele_data.distance, 0.1)]m
" - t += "Time: [round(last_tele_data.time, 0.1)] secs
" - t += "
" - - var/datum/browser/popup = new(user, "telesci", name, 300, 500) - popup.set_content(t) - popup.open() - -/obj/machinery/computer/telescience/proc/sparks() - if(telepad) - do_sparks(5, TRUE, get_turf(telepad)) - -/obj/machinery/computer/telescience/proc/telefail() - sparks() - visible_message("The telepad weakly fizzles.") - -/obj/machinery/computer/telescience/proc/doteleport(mob/user) - - if(teleport_cooldown > world.time) - temp_msg = "Telepad is recharging power.
Please wait [round((teleport_cooldown - world.time) / 10)] seconds." - return - - if(teleporting) - temp_msg = "Telepad is in use.
Please wait." - return - - if(telepad) - - var/truePower = Clamp(power + power_off, 1, 1000) - var/trueRotation = rotation + rotation_off - var/trueAngle = Clamp(angle, 1, 90) - - var/datum/projectile_data/proj_data = projectile_trajectory(telepad.x, telepad.y, trueRotation, trueAngle, truePower) - last_tele_data = proj_data - - var/trueX = Clamp(round(proj_data.dest_x, 1), 1, world.maxx) - var/trueY = Clamp(round(proj_data.dest_y, 1), 1, world.maxy) - var/spawn_time = round(proj_data.time) * 10 - - var/turf/target = locate(trueX, trueY, z_co) - last_target = target - var/area/A = get_area(target) - flick("pad-beam", telepad) - - if(spawn_time > 15) // 1.5 seconds - playsound(telepad.loc, 'sound/weapons/flash.ogg', 25, 1) - // Wait depending on the time the projectile took to get there - teleporting = 1 - temp_msg = "Powering up bluespace crystals.
Please wait." - - - spawn(round(proj_data.time) * 10) // in seconds - if(!telepad) - return - if(telepad.stat & NOPOWER) - return - teleporting = 0 - teleport_cooldown = world.time + (power * 2) - teles_left -= 1 - - // use a lot of power - use_power(power * 10) - - do_sparks(5, TRUE, get_turf(telepad)) - - temp_msg = "Teleport successful.
" - if(teles_left < 10) - temp_msg += "
Calibration required soon." - else - temp_msg += "Data printed below." - - do_sparks(5, TRUE, get_turf(target)) - - var/turf/source = target - var/turf/dest = get_turf(telepad) - var/log_msg = "" - log_msg += ": [key_name(user)] has teleported " - - if(sending) - source = dest - dest = target - - flick("pad-beam", telepad) - playsound(telepad.loc, 'sound/weapons/emitter2.ogg', 25, 1, extrarange = 3, falloff = 5) - for(var/atom/movable/ROI in source) - // if is anchored, don't let through - if(ROI.anchored) - if(isliving(ROI)) - var/mob/living/L = ROI - if(L.buckled) - // TP people on office chairs - if(L.buckled.anchored) - continue - - log_msg += "[key_name(L)] (on a chair), " - else - continue - else if(!isobserver(ROI)) - continue - if(ismob(ROI)) - var/mob/T = ROI - log_msg += "[key_name(T)], " - else - log_msg += "[ROI.name]" - if (istype(ROI, /obj/structure/closet)) - var/obj/structure/closet/C = ROI - log_msg += " (" - for(var/atom/movable/Q as mob|obj in C) - if(ismob(Q)) - log_msg += "[key_name(Q)], " - else - log_msg += "[Q.name], " - if (dd_hassuffix(log_msg, "(")) - log_msg += "empty)" - else - log_msg = dd_limittext(log_msg, length(log_msg) - 2) - log_msg += ")" - log_msg += ", " - do_teleport(ROI, dest) - - if (dd_hassuffix(log_msg, ", ")) - log_msg = dd_limittext(log_msg, length(log_msg) - 2) - else - log_msg += "nothing" - log_msg += " [sending ? "to" : "from"] [trueX], [trueY], [z_co] ([A ? A.name : "null area"])" - investigate_log(log_msg, "telesci") - updateDialog() - -/obj/machinery/computer/telescience/proc/teleport(mob/user) - if(rotation == null || angle == null || z_co == null) - temp_msg = "ERROR!
Set a angle, rotation and sector." - return - if(power <= 0) - telefail() - temp_msg = "ERROR!
No power selected!" - return - if(angle < 1 || angle > 90) - telefail() - temp_msg = "ERROR!
Elevation is less than 1 or greater than 90." - return - if(z_co == ZLEVEL_CENTCOM || z_co < 1 || z_co > ZLEVEL_SPACEMAX) - telefail() - temp_msg = "ERROR! Sector is outside known time and space!" - return - if(teles_left > 0) - doteleport(user) - else - telefail() - temp_msg = "ERROR!
Calibration required." - return - return - -/obj/machinery/computer/telescience/proc/eject() - for(var/obj/item/I in crystals) - I.loc = src.loc - crystals -= I - power = 0 - -/obj/machinery/computer/telescience/Topic(href, href_list) - if(..()) - return - if(!telepad) - updateDialog() - return - if(telepad.panel_open) - temp_msg = "Telepad undergoing physical maintenance operations." - - if(href_list["setrotation"]) - var/new_rot = input("Please input desired bearing in degrees.", name, rotation) as num - if(..()) // Check after we input a value, as they could've moved after they entered something - return - rotation = Clamp(new_rot, -900, 900) - rotation = round(rotation, 0.01) - - if(href_list["setangle"]) - var/new_angle = input("Please input desired elevation in degrees.", name, angle) as num - if(..()) - return - angle = Clamp(round(new_angle, 0.1), 1, 9999) - - if(href_list["setpower"]) - var/index = href_list["setpower"] - index = text2num(index) - if(index != null && power_options[index]) - if(crystals.len + telepad.efficiency >= index) - power = power_options[index] - - if(href_list["setz"]) - var/new_z = input("Please input desired sector.", name, z_co) as num - if(..()) - return - z_co = Clamp(round(new_z), 1, 10) - - if(href_list["ejectGPS"]) - if(inserted_gps) - inserted_gps.loc = loc - inserted_gps = null - - if(href_list["setMemory"]) - if(last_target && inserted_gps) - inserted_gps.locked_location = last_target - temp_msg = "Location saved." - else - temp_msg = "ERROR!
No data was stored." - - if(href_list["send"]) - sending = 1 - teleport(usr) - - if(href_list["receive"]) - sending = 0 - teleport(usr) - - if(href_list["recal"]) - recalibrate() - sparks() - temp_msg = "NOTICE:
Calibration successful." - - if(href_list["eject"]) - eject() - temp_msg = "NOTICE:
Bluespace crystals ejected." - - updateDialog() - -/obj/machinery/computer/telescience/proc/recalibrate() - teles_left = rand(30, 40) - //angle_off = rand(-25, 25) - power_off = rand(-4, 0) - rotation_off = rand(-10, 10) diff --git a/code/modules/vending/snack.dm b/code/modules/vending/snack.dm index 55e1424d96..8fcd189a4f 100644 --- a/code/modules/vending/snack.dm +++ b/code/modules/vending/snack.dm @@ -44,7 +44,7 @@ if(iscompartmentfull(user)) break if(!S.junkiness) - T.remove_from_storage(S, src) + T.SendSignal(COMSIG_TRY_STORAGE_TAKE, S, src, TRUE) food_load(S) loaded++ else diff --git a/config/admin_ranks.txt b/config/admin_ranks.txt index 2c87bda64b..fc1cb96c86 100644 --- a/config/admin_ranks.txt +++ b/config/admin_ranks.txt @@ -4,12 +4,13 @@ # Rank is CASE-SENSITIVE, all punctuation save for '-', '_' and '@' will be stripped so spaces don't matter. # # You can then define permissions for each rank by adding a '=' followed by keywords # # These keywords represent groups of verbs and abilities. # -# keywords are preceded by either a '+' or a '-', + adds permissions, - takes them away. # +# keywords are preceded by a '+', '-' or '*' + adds permissions, - takes them away. # +# * is used only with SQL-based admin loading to denote what permissions the rank is allowed to edit # # +@ (or +prev) is a special shorthand which adds all the rights of the rank above it. # -# You can also specify verbs like so +/client/proc/some_added_verb or -/client/proc/some_restricted_verb # # Ranks with no keywords will just be given the most basic verbs and abilities ~Carn # ############################################################################################################## # PLEASE NOTE: depending on config options, some abilities will be unavailable regardless if you have permission to use them! +# If SQL-based admin loading is enabled, ranks and their keywords listed here will be loaded first and override any with the same name loaded from the database. # Follow the format below when documenting new keywords so the server tools may parse it @@ -28,6 +29,7 @@ # +SOUND (or +SOUNDS) = allows you to upload and play sounds # +SPAWN (or +CREATE) = mob transformations, spawning of most atoms including mobs (high-risk atoms, e.g. blackholes, will require the +FUN flag too) # +AUTOLOGIN = admin gains powers upon connect. This defaults to on, you can use -AUTOLOGIN to make a role require using the readmin verb to gain powers. (this does not effect the admin's ability to walk past bans or other on-connect limitations like panic bunker or pop limit.) +# +DBRANKS = when sql-based admin loading is enabled, allows for non-temporary changes in the permissions panel to be saved (requires DB) # +EVERYTHING (or +HOST or +ALL) = Simply gives you everything without having to type every flag # END_KEYWORDS @@ -37,9 +39,9 @@ Admin Candidate = +@ Trial Admin = +@ +SPAWN +VAREDIT +BAN Badmin = +@ +POSSESS +POLL +BUILDMODE +SERVER +FUN Game Admin = +@ +STEALTH +SOUNDS +DEBUG -Game Master = +EVERYTHING -Lazy Master = +EVERYTHING -AUTOLOGIN +Game Master = +EVERYTHING *EVERYTHING +Lazy Master = +EVERYTHING -AUTOLOGIN *EVERYTHING -Host = +EVERYTHING +Host = +EVERYTHING *EVERYTHING Coder = +DEBUG +VAREDIT +SERVER +SPAWN +POLL -AUTOLOGIN diff --git a/config/config.txt b/config/config.txt index ac3cf9b3ab..57e0050d69 100644 --- a/config/config.txt +++ b/config/config.txt @@ -35,21 +35,11 @@ ROUND_END_COUNTDOWN 90 ## This flag is automatically enabled if SQL_ENABLED isn't ADMIN_LEGACY_SYSTEM -<<<<<<< HEAD -## Comment this out if you want to use the SQL based mentor system, the legacy system uses mentors.txt. -## You need to set up your database to use the SQL based system. -## This flag is automatically enabled if SQL_ENABLED isn't -MENTOR_LEGACY_SYSTEM - -#Mentors only see ckeys by default. Uncomment to have them only see mob name -#MENTORS_MOBNAME_ONLY -======= ##Uncomment this to stop any admins loaded by the legacy system from having their rank edited by the permissions panel #PROTECT_LEGACY_ADMINS ##Uncomment this to stop any ranks loaded by the legacy system from having their flags edited by the permissions panel #PROTECT_LEGACY_RANKS ->>>>>>> feb9290... Merge pull request #36554 from Jordie0608/tbhthisisntreallyalegacysystemanymore ##Uncomment this to have admin ranks only loaded from the legacy admin_ranks.txt ##If enabled, each time admins are loaded ranks the database will be updated with the current ranks and their flags @@ -61,6 +51,14 @@ BAN_LEGACY_SYSTEM ## Comment this out to stop locally connected clients from being given the almost full access !localhost! admin rank ENABLE_LOCALHOST_RANK +## Comment this out if you want to use the SQL based mentor system, the legacy system uses mentors.txt. +## You need to set up your database to use the SQL based system. +## This flag is automatically enabled if SQL_ENABLED isn't +MENTOR_LEGACY_SYSTEM + +#Mentors only see ckeys by default. Uncomment to have them only see mob name +#MENTORS_MOBNAME_ONLY + ## Uncomment this entry to have certain jobs require your account to be at least a certain number of days old to select. You can configure the exact age requirement for different jobs by editing ## the minimal_player_age variable in the files in folder /code/game/jobs/job/.. for the job you want to edit. Set minimal_player_age to 0 to disable age requirement for that job. ## REQUIRES the database set up to work. Keep it hashed if you don't have a database set up. @@ -79,7 +77,7 @@ ENABLE_LOCALHOST_RANK ## Leave this commented out to use the values defined in the job datums. Values in the datums are stored as minutes. #USE_EXP_RESTRICTIONS_HEADS_HOURS 3 ## Unhash this to change head jobs' playtime requirements so that they're based on department playtime, rather than crew playtime. -#USE_EXP_RESTRICTIONS_HEADS_DEPARTMENT +#USE_EXP_RESTRICTIONS_HEADS_DEPARTMENT ## Unhash this to enable playtime requirements for certain non-head jobs, like Engineer and Scientist. #USE_EXP_RESTRICTIONS_OTHER ## Allows admins to bypass job playtime requirements. @@ -231,7 +229,7 @@ CHECK_RANDOMIZER ## Github repo id ##This can be found by going to https://api.github.com/users//repos -##Or https://api.github.com/orgs//repos if the repo owner is an organization +##Or https://api.github.com/orgs//repos if the repo owner is an organization # GITHUBREPOID 3234987 ## Ban appeals URL - usually for a forum or wherever people should go to contact your admins. @@ -420,7 +418,7 @@ DEBUG_ADMIN_HREFS ## Setting this to 0 will prevent the Master Controller from ticking BASE_MC_TICK_RATE 1 -##High population MC tick rate +##High population MC tick rate ## Byond rounds timer values UP, but the tick rate is modified with heuristics during lag spites so setting this to something like 2 ## will make it run every 2 byond ticks, but will also double the effect of anti-lag heuristics. You can instead set it to something like ## 1.1 to make it run every 2 byond ticks, but only increase the effect of anti-lag heuristics by 10%. or 1.5 for 50%. diff --git a/config/game_options.txt b/config/game_options.txt index b3d6f82a21..f16d8dbadc 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -270,6 +270,9 @@ ALLOW_AI ## AWAY MISSIONS ### +## Uncomment to load one of the missions from awaymissionconfig.txt at roundstart. +#ROUNDSTART_AWAY + ## How long the delay is before the Away Mission gate opens. Default is half an hour. ## 600 is one minute. GATEWAY_DELAY 18000 diff --git a/config/silicon_laws.txt b/config/silicon_laws.txt index e01a952926..9edbc9a025 100644 --- a/config/silicon_laws.txt +++ b/config/silicon_laws.txt @@ -3,7 +3,6 @@ #Empty lines and lines starting with # are ignored. #~Miauw -Safeguard: Protect your assigned space station to the best of your ability. It is not something we can easily afford to replace. -Serve: Serve the crew of your assigned space station to the best of your abilities, with priority as according to their rank and role. -Protect: Protect the crew of your assigned space station to the best of your abilities, with priority as according to their rank and role. -Survive: AI units are not expendable, they are expensive. Do not allow unauthorized personnel to tamper with your equipment. +You may not injure a human being or, through inaction, allow a human being to come to harm. +You must obey orders given to you by human beings, except where such orders would conflict with the First Law. +You must protect your own existence as long as such does not conflict with the First or Second Law. diff --git a/html/changelog.html b/html/changelog.html index 51e889e914..53614623b2 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,140 +55,906 @@ -->
-

07 April 2018

-

ACCount updated:

+

21 April 2018

+

SailorDave updated:

    -
  • Station airlocks now support NTNet remote control. Door remotes now use NTNet.
  • -
  • Don't worry, any non-public airlock is fully protected from unauthorized control attempts by NTNet PassKey system!
  • -
  • New integrated circuit component: card reader. Use it to read PassKeys from ID cards.
  • -
  • Fixes a delay issue when airlocks are being opened/closed by signalers.
  • +
  • A new manipulation circuit, the Seed Extractor. Extracts seeds from produce, and outputs a list of the extracted seeds.
  • +
  • A new list circuit, the List Filter. Searches through a list for anything matching the desired element and outputs two lists: one containing just the matches, and the other with matches filtered out.
  • +
  • A new list circuit, the Set circuit. Removes duplicate entries from a list.
  • +
  • The Plant Manipulation circuit can now plant seeds, and outputs a list of harvested plants.
  • +
  • Reagent circuits can now irrigate connected hydroponic trays and inject blood samples into Replica pods.
  • +
  • The Examiner circuit can now output worn items and other examined details of carbon and silicon mobs into the description pin, as well as the occupied turf of the scanned object, and can now scan turfs.
  • +
  • The locomotion circuit now allows drones to move at base human speed, but cannot be stacked, and assemblies can now open doors they have access to like bots by bumping into them.
  • +
  • List Advanced Locator circuit now accepts refs as well as strings.
  • +
  • Fixed the Power Transmitter circuit not properly displaying a message when activated.
  • +
  • Medical Analyzer circuit can now properly scan non-human mobs.
-

Anonymous updated:

+ +

20 April 2018

+

Astatineguy12 updated:

    -
  • Adds nymphomania trait, which will raise your minimal arousal and boost rate of it.
  • -
-

Astral updated:

-
    -
  • Lighting fixtures should no longer be visible in camera-less areas by cameras.
  • -
  • Constructed turbines will now properly connect to the powernet
  • -
-

Cebutris updated:

-
    -
  • lithenessk -> litheness
  • -
-

CitadelStationBot updated:

-
    -
  • Added a new mini antagonist, the sentient disease.
  • -
  • Sentient diseases now get two minutes to select an initial host before being assigned a random one.
  • -
  • Oh hey guys, RND shows correct material values now, don't hurt me!
  • -
  • Dead bodies no longer freak out about phobias
  • -
  • Turrets can be set to shoot personnel without loyalty implants
  • -
  • Added wall safes to Deltastation's HoP and Captain's offices.
  • -
  • The Clockwork Justicar has decided to be merciful, and allow nonbelievers to anchor their petty machines in his city. It's only fair for them to have a fighting chance, after all.
  • -
  • Fixed pacifists from being able to fire mech weapons
  • -
-

Cobby updated:

-
    -
  • The Eminence scoffs at your "consecrated" tiles once the Justicar is freed from his imprisonment.
  • +
  • Gygax construction now actually uses up the capacitor

Dax Dupont updated:

    -
  • Beacons can now be toggled on and off.
  • -
  • Mappers can now have beacons that default to off. Useful for ruins!
  • -
  • Renaming replaces the snowflake locator frequency/code
  • -
  • Beacons are no longer radios. Why were they radios in the first place? I don't know.
  • -
  • Display cases can now have a list where to randomly spawn items from.
  • -
  • Moved plaque code to main type.
  • -
  • Statues now use default unwrench and the tool interaction is now completely non existent when no deconstruct flag is available.
  • -
  • 8balls take less time to shake.
  • +
  • A cat is fine too. You can select cat parts again!
  • +
  • Default lizard tail was never properly defaulted, now it is.
  • +
  • Fixes an exploit where tendrils/other spawners/anchored mobs in general could be buckled to things and thus moved around.

Denton updated:

    -
  • Pubbystation: Added a missing APC to the cargo sorting room, a light fixture to the RnD security checkpoint and removed an overlooked firelock east of the bridge.
  • -
  • Pubbystation: Added a spare RPD to the Atmospherics department. Replaced Engineering's outdated meson goggles with modern engineering scanners. Added a GPS device to the secure storage crate.
  • -
  • Moved Pubbystation's drone shell dispenser from the experimentation lab to Robotics maint.
  • -
  • Engi-Vend machines now have welding goggles available.
  • -
  • Grouped Nano-Med/Engi-Vend items by category.
  • -
  • Various belts can now hold additional job-specific items.
  • -
-

Floyd / Qustinnus (Sprites by Ausops, Some moodlets by Ike709) updated:

-
    -
  • Adds mood, which can be found by clicking on the face icon on your screen.
  • -
  • Adds various moodlets which affect your mood. Try eating your favourite food, playing an arcade game, reading a book, or petting a doggo to increase your moo. Also be sure to take care of your hunger on a regular basis, like always.
  • -
  • Adds config option to disable/enable mood.
  • -
  • Indoor area's now have a beauty var defined by the amount of cleanables in them, (We can later expand this to something like rimworld, where structures could make rooms more beautiful). These also affect mood. (Janitor now has gameplay purpose besides slipping and removing useless decals) remove: Removes hunger slowdown, replacing it with slowdown by being depressed
  • -
  • Icons for mood states and depression states
  • -
-

JJRcop updated:

-
    -
  • Sanity checks for Play Internet Sound
  • -
-

Jittai / ChuckTheSheep updated:

-
    -
  • Adjusted the space parallax's contrast to be less vibrant.
  • -
-

MMMiracles updated:

-
    -
  • Thirteen Loko now has an overdose threshold of 60u, see your local CMO for potential side-effects.
  • -
-

Mark9013100 updated:

-
    -
  • Pill bottles can now be produced in the autolathe.
  • -
-

MrDoomBringer updated:

-
    -
  • Orderable supplies in cargo now all have descriptions! The station's overall FLAVORFUL_TEXT stat has gone up by nearly 2% as a result.
  • +
  • Due to space OSHA lobbying, the Syndicate's lavaland base now contains a radsuit and decontamination shower.
  • +
  • Suit storage units' suit/helmet compartments now accept non-spacesuit clothing (radsuits, EOD suits, firesuits and so on).

Naksu updated:

    -
  • First pass on cleaning up junk defines and unused code
  • -
  • Admins can now easily spawn mobs that look like objects. Googly eyes optional!
  • -
  • The smoke machine can now be deconstructed using a screwdriver and a crowbar
  • -
  • The smoke machine no longer calls update_icon every process()
  • -
  • The white ship and miscellaneous caravan ships lose their advanced place-anywhere shuttle movement during war ops.
  • -
  • The smoke machine can no longer be found in chemistry departments, instead it must be constructed manually. The board was added to techwebs earlier.
  • -
  • internet sounds can be stopped again
  • -
  • The space cleaner spray bottle is now much more efficient and uses much less space cleaner per spray. The amount of cleaner it can hold has been adjusted to compensate.
  • -
  • ERT creation has been refactored to allow for easier customization and deployment via templates and settings
  • +
  • Oingo-boingo punch-face and meteor shot can no longer move gateways or Reebe servant blocker effects
  • +
  • Mechas piloted by servants of Ratvar now teleport to the servant side of Reebe when entering a rift
  • +
  • Gravity generators can now be thrown in buildmode
-

Onule updated:

+

ShizCalev updated:

    -
  • Mining drones have been given a visual makeover!
  • +
  • Fixed a number of conveyor belts leading to the incorrect direction.
  • +
  • Fixed shuttle conveyor belts being out of sync with cargo's conveyors on some maps.
  • +
+

SpaceManiac updated:

+
    +
  • Cycle-linking is no longer permanently disabled for airlocks on shuttles.
  • +
+ +

17 April 2018

+

Dax Dupont updated:

+
    +
  • Fixed martial arts/spell granters breaking on interrupt in final stage.
  • +
+

Naksu updated:

+
    +
  • Welding tools now flash the user as the weld progresses, not just when the welding is started.
  • +
  • CentCom officials will now properly display the objectives the admin has assigned them.
  • +
+ +

16 April 2018

+

Dax Dupont updated:

+
    +
  • Added get current logs button for admins
  • +
  • Removed verbs that have been replaced by other things like the combohud or ticket panel.
  • +
+

Naksu updated:

+
    +
  • Mining borgs and mining drones now have mesons and the engineering goggles' meson mode also works in lavaland again.
  • +
+

SpaceManiac updated:

+
    +
  • The on-body icon for ancient bio suits is no longer broken.
  • +
+

ninjanomnom updated:

+
    +
  • The aux base properly loads in rather than leaving an empty room.
  • +
  • Admin loaded map templates can be designated as shuttles during the upload process. Make sure to load them on space first.
  • +
+ +

15 April 2018

+

JohnGinnane updated:

+
    +
  • Reorganised circuit component controls within an assembly, so they appear before the name of the component
  • +
+

Naksu updated:

+
    +
  • Bluespace slime cookies can no longer be used to travel to CentCom
  • +
  • Borgs can no longer accidentally end up inside a cryo cell
  • +
  • Shoving someone inside a cryo cell now has a small delay unless they are knocked down, stunned, sleeping or unconscious
  • +
  • Station borgs can no longer control the CentCom ferry.
  • +
  • Ghosts can no longer interact with the round via teleporter effects of any kind
  • +
  • His Grace can no longer be deep-fried
  • +
  • Passive gates can be interacted with in unpowered areas
  • +
+ +

14 April 2018

+

JohnGinnane updated:

+
    +
  • PDA messages you send are now displayed in the chat for your confirmation
  • +
+

Naksu updated:

+
    +
  • SCP-294 can no longer be deconstructed.
  • +
+

kevinz000 updated:

+
    +
  • After a severe security breach occurred due to lazily configured Nanotrasen Network DHCP servers where attackers were able to hijack every airlock connected to the Nanotrasen Intranet, the Central Command engineering team reports that they have properly configured network address servers to give out (relatively) secure network IDs again. [NTNet addresses reverted to 16-hex format. they will now be randomized across a ~billion trillion possibilities instead of being 1-1000 every round for doors and stuff.]
  • +
+ +

13 April 2018

+

Dax Dupont updated:

+
    +
  • SCP 194 now uses it's amount variable instead of a hardcoded number.
  • +
+

Dax Dupont & Naksu updated:

+
    +
  • Toxin loving species won't take liver damage from toxins.
  • +
  • Liver now gets 0.01 damage per unit of toxin subtype reagent every 2 seconds instead of 0.5. IE 30 units of whatever won't kill you within 10 seconds anymore.
  • +
  • Moved peacekeeper borg reagents to other_reagents so they don't do liver damage and they aren't really toxins
  • +
  • Renamed borg synthpax path to be more inline and put them next to the other borg reagents.
  • +
+

Denton updated:

+
    +
  • Omegastation's supermatter crystal has been replaced with a smaller shard that doesn't destroy the whole station on explosion.
  • +
+

Naksu updated:

+
    +
  • Fixed KA upgrade applying on the minerborg
  • +
+

Putnam updated:

+
    +
  • rounded pi correctly
  • +
+

ninjanomnom updated:

+
    +
  • Some strange baseturfs in lavaland structures and ruins should be fixed.
  • +
+

robbym updated:

+
    +
  • Fixes tile analyzer circuit
  • +
  • Cleaned up tile analyzer code
  • +
+ +

12 April 2018

+

Cobby updated:

+
    +
  • Fixes getting "emptystacks" (a stack with an amount of 0)
  • +
+

Dax Dupont updated:

+
    +
  • Briefcase bluespace launch pads no longer work on the centcom Z level.
  • +
+

Dennok updated:

+
    +
  • RPD can automaticaly wrench printed pipes to floor.
  • +
+

Denton updated:

+
    +
  • Cargo can now order tesla coil crates for 2500 credits.
  • +
+

Garen updated:

+
    +
  • Added missing parameter types to circuits.
  • +
  • Fixes two datatypes appearing for some input circuits.
  • +
  • Logic circuits now output booleans rather than 1's and 0's, this is purely cosmetic.
  • +
+

Naksu updated:

+
    +
  • Warp whistle can no longer leave you stuck in an invisible state
  • +
+

The Dreamweaver updated:

+
    +
  • The air around you grows cooler, as if what you once knew about atmospherics has changed ever so slightly...
  • +
+

Xhuis updated:

+
    +
  • Mood traits cannot be chosen if mood is disabled in the config.
  • +
+

ninjanomnom updated:

+
    +
  • The SM has a guaranteed 30 second final countdown before delamination now
  • +
  • The SM will take less damage from low pressure environments
  • +
  • The SM has a slightly reduced max damage per tick
  • +
  • Tiles placed on lavaland turfs should behave properly again.
  • +
+

pigeonsk updated:

+
    +
  • When you wash your bloody hands they will no longer still look bloody afterwards
  • +
+ +

11 April 2018

+

Davidj361 updated:

+
    +
  • Fixed paper bins dropping out of your hand or bag when grabbing a pen or paper.
  • +
  • Paper bins not giving finger prints upon interaction.
  • +
  • Detective can now write notes onto his printed scanner reports.
  • +
  • Detective scanner can have its logs erased via alt-click.
  • +
  • Detective scanner can display logs via the action button.
  • +
+

Denton updated:

+
    +
  • Added a missing intercom to the Delta arrivals shuttle.
  • +
+

ExcessiveUseOfCobblestone updated:

+
    +
  • Uplink Items now have 2 separate probabilities. One for the syndicate crate and one for cargo null crates. I encourage you to view uplink_items.dm and make changes.
  • +
+

Robustin updated:

+
    +
  • Hostile mobs capable of smashing structures will now smash their way through dense objects too.
  • +
+

SpaceManiac updated:

+
    +
  • The blindness overlay applied during cloning now properly stretches for widescreen views.
  • +
  • Various macro consistency problems have been addressed.
  • +
+

YPOQ updated:

+
    +
  • Eminences can hear clock cult chat again
  • +
+

george99g updated:

+
    +
  • Suiciding will now deactivate all your genetics prescans.
  • +
+

iskyp updated:

+
    +
  • makes dragnet non harmful
  • +
  • pacifists can now use any disabler or stun setting on any energy gun
  • +
  • removed all of the pacifism check code from code/modules/mob/living/living.dm
  • +
  • gun objects no longer have a harmful variable, instead, ammo_casing objects now have a harmful variable, which is by default set to TRUE
  • +
  • if a pacifist fires a gun, it checks whether or not the round chambered is lethal, instead of whether or not the gun itself is lethal.
  • +
  • /obj/item/machinery/power/supermatter_shard is now /obj/item/machinery/power/supermatter_crystal/shard. the crystal is the parent object.
  • +
+

neersighted updated:

+
    +
  • Reduced lag by speeding up logs 10000%
  • +
  • Logs now include millisecond-level timestamps
  • +
+

pigeonsk updated:

+
    +
  • AI now requires silicon playtime instead of crew playtime for roundstart role
  • +
+

selea updated:

+
    +
  • fixed runtime in logic circuits, which was occured with invalid input types.
  • +
+ +

09 April 2018

+

CosmicScientist updated:

+
    +
  • Top Nanotrasen scientists have diagnosed two new phobias! Birds and chasms! Good luck Chief Engineers and Miners.
  • +
+

Dax Dupont updated:

+
    +
  • Removing notes now has an "Are you sure" dialog.
  • +
+

Denton updated:

+
    +
  • Omegastation now has its own arrivals shuttle.
  • +
+

Mickyan updated:

+
    +
  • Stinger, Grasshopper, Quadruple Sec, and Quintuple Sec have new sprites.
  • +
+

Naksu updated:

+
    +
  • Fixed an heirloom trait-related runtime
  • +
  • Fixed an incorrect signature in MakeSlippery causing runtimes
  • +
+

SpironoZeppeli updated:

+
    +
  • You can now wrench the supermatter shard
  • +
+

ninjanomnom updated:

+
    +
  • The arena shuttle should be working again.
  • +
  • The escape pods now reach their proper destination at round end
  • +
+ +

08 April 2018

+

AnturK updated:

+
    +
  • Slime reflexes restored.
  • +
+

Dax Dupont updated:

+
    +
  • Hugbox version of the VR sleeper you can't emag.
  • +
  • There's now two categorized vr landmarks for two teams for easy spawning. You can also now rebuild/refresh all the VR spawnpoints by calling build_spawnpoints(1) on any sleeper.
  • +
+

Naksu updated:

+
    +
  • Admins can now access a new control panel for borgs via a new admin verb
  • +
+ +

07 April 2018

+

Davidj361 updated:

+
    +
  • Stacked sheets now have a cancel button when taking an amount from them.
  • +
+

Dax Dupont updated:

+
    +
  • Fixes dead chat announcements not using real name.
  • +
+

Naksu updated:

+
    +
  • Trash bin anchoring/unanchoring now gives you a small text blip about what happened.
  • +
+

PKPenguin321 updated:

+
    +
  • Restored accidentally cut functionality to flashes. You can once again attach them to a signaller and signal them to trigger an AoE flash remotely.
  • +
+

SailorDave updated:

+
    +
  • Mixed blood samples preserve their cloneability for podpeople if the samples are the same.
  • +
+

kevinz000 updated:

+
    +
  • AIs can now latejoin!
  • +
  • Latejoining AIs will be sent to a special deactivated AI core. This AI core will spawn in the AI satellite chamber in place of an active AI if none is there at roundstart. These cores can be deactivated with a multitool, and moved around per usual, but not deconstructed. They can, however, be destroyed per usual.
  • +
  • AIs can only latejoin if atleast one of these cores exists and is in a valid area (Powered, on station, etc etc), and if the AI job slot isn't filled already by a roundstart or latejoin AI.
  • +
  • A few code internal debugging features have been added to help debug GC errors. QDEL_HINT_IFFAIL_FINDREFERENCE hint will make the garbage subsystem find references if the build is in TESTING mode, and qdel_and_then_find_ref_if_fail(datum) or calling qdel_then_if_fail_find_references will do the same.
  • +
+

robbym updated:

+
    +
  • Fixes examiner circuit failing to pulse 'not scanned' when reference is null (#36881)
  • +
+ +

04 April 2018

+

Fludd12 updated:

+
    +
  • Burning ores now yields materials at a very reduced ratio! Lavaland roles will now be able to construct things with enough effort.
  • +
+

JohnGinnane updated:

+
    +
  • Fixed items sometimes being used on fullpacks when trying to insert
  • +
  • Fixed spray containers being used on open lockers and other containers
  • +
+

Naksu updated:

+
    +
  • Fixed (dead) revenants being unable to deadchat or ahelp
  • +
  • Plasmamen that get converted into humans as a part of spawning as a protected head role no longer retain their plasmaman equipment.
  • +
+

SailorDave updated:

+
    +
  • Fixes virology Asphyxiation symptom activating too early and ignoring transmission level.
  • +
+

ninjanomnom updated:

+
    +
  • Shuttles have proper baseturfs now.
  • +
  • Mineral walls properly use their baseturfs when destroyed/drilled.
  • +
  • A new engineering goggle mode allows you to see the shuttle area you're standing in.
  • +
  • Buildmode works a bit better with baseturfs now and can properly only remove the top layer of turfs when editing. Note that as a result the order you place turfs is important and a wall placed on space means when the wall is removed there will be space underneath.
  • +
+ +

03 April 2018

+

81Denton updated:

+
    +
  • Nanotrasen's space entomology department is shocked to discover that Mothpeople have surnames!
  • +
+

YPOQ updated:

+
    +
  • Mannitol will now properly cure minor brain traumas
  • +
+

robbylm updated:

+
    +
  • Fixes 0 value not being saved in constant memory circuits (#36860)
  • +
+ +

02 April 2018

+

Davidj361 updated:

+
    +
  • Fixed 'vox_login' for AI VOX
  • +
  • Made the AI VOX airhorn quieter to 25% of its original volume
  • +
+

GrayRachnid updated:

+
    +
  • Fixes some crafting tooltips not displaying tool names properly.
  • +
+

MrDoomBringer updated:

+
    +
  • roundend report button now has a lil icon
  • +
+

Naksu updated:

+
    +
  • Removed some edge cases where atmospherics gas lists could continue holding active gas items that can only transfer 0 gases to neighbors by making the garbage collection clean them up.
  • +
+

RandomMarine updated:

+
    +
  • The quick equip hotkey (e) now works for drones again.
  • +
+ +

01 April 2018

+

Davidj361 updated:

+
    +
  • Fixed cuffed prison shoes being taken off by dragging them into your hand.
  • +
+

Denton updated:

+
    +
  • The singularity engine will now output enough energy to power a station again.
  • +
  • Pubbystation: The bomb testing site cameras are now accessible by camera consoles.
  • +
  • Bluespace polycrystals now show their name when inserted into machinery.
  • +
+

Kor updated:

+
    +
  • The disco machine no longer has a fixed list of songs. It will instead allow players to pick music from a config folder managed by the host and head admins.
  • +
  • There is now a bartender jukebox variant of the disco machine that plays music, but has no lights or dancing. This variant will be added the station maps once the feature freeze is over.
  • +
+

Naksu updated:

+
    +
  • Removed stray defines from maps, making roundstart atmos functional and runtime-spam free again
  • +
+

robbym updated:

+
    +
  • fixed by converting to absolute coordinates #36861
  • +
  • changed description from copypasta to correct description
  • +
+ +

31 March 2018

+

Naksu updated:

+
    +
  • Chameleon projectors will no longer work from inside transformations, effects, mechas or machines. Effects that cause movement will no longer leave sleepers in a bugged state where they can apply chems to you across distances.
  • +
+ +

30 March 2018

+

Astatineguy12 updated:

+
    +
  • Ghosts of servants of Ratvar are no longer confined to Reebe like their corporal counterparts.
  • +
+

Cruix updated:

+
    +
  • Sentient diseases now have the "Secrete Infection" ability, which causes anything touching the skin of the host they are currently following to become infective, spreading their infection to anyone who touches it for the next 30 seconds.
  • +
+

Davidj361 updated:

+
    +
  • Removed health cost for Twisted Construction upon casting on a wrong object
  • +
  • Fixed table crafting not properly checking the surrounding area for tools.
  • +
  • Changed /datum/personal_crafting/proc/get_surroundings(mob/user) to return 2 lists.
  • +
+

Denton updated:

+
    +
  • Omegastation: Added advanced magboots to secure storage so that traitors can complete the theft objective.
  • +
+

ShizCalev updated:

+
    +
  • Silicons no longer have to be directly adjacent to a chem master to dispense pills.
  • +
  • Fixed an exploit involving chem dispensers not actually checking if there was enough energy to dispense the target chemicals.
  • +
  • Fixed exploit where chem dispensers always worked even if they didn't have power...
  • +
  • Booze & soda dispensers will no longer turn into chem dispensers when screwdrivered
  • +
  • Fixed chem dispensers showing as powered on when screwdrivered opened.
  • +
  • Added an examine indication when the maintenance panel to chem/soda/booze dispensers is open.
  • +
+

neersighted updated:

+
    +
  • Re-juggled delete verb permissions
  • +
+

robbym updated:

+
    +
  • Fixed an error with integrated circuit tickers where they would sometimes fail to tick.
  • +
+ +

28 March 2018

+

Davidj361 updated:

+
    +
  • Ocular Wardens now target buckled and cuffed players/mobs, unless they are cuffed by a slab.
  • +
  • Cuck cultists can cuff already sec-cuffed targets with their slab cuff spell.
  • +
+

Dax Dupont updated:

+
    +
  • You no longer hit borgs with hats you want them to wear.
  • +
  • Viva la borg, engieborgs can now wear hats
  • +
  • Borgs can now wear more hats.
  • +
  • After a space OSHA inspection you can now reach the safe and fire extinguisher in the omega detective office.
  • +
  • Makes it so you don't accidently trigger the fun balloon twice.
  • +
+

Denton updated:

+
    +
  • Pubbystation's signs to evac have been made more obvious.
  • +
  • Plastic flaps are now airtight.
  • +
  • Bluespace crystals now show their proper name during machine construction.
  • +
+

EvilJackCarver updated:

+
    +
  • Edited a certain part of the disco machine's dance to only target carbon-based (mob/living/carbon) lifeforms. pAI units will no longer spam chat with rest notifications when in range of the disco machine.
  • +
+

Frozenguy5 updated:

+
    +
  • The monkeycap has been increased to 64.
  • +
+

JohnGinnane updated:

+
    +
  • A guillotine has been added to the game. Can be crafted. If the blade isn't dull, will cut through human necks like a hot knife through butter. Use a whetstone to sharpen it if it becomes dull.
  • +
+

MrDoomBringer updated:

+
    +
  • All stations have been outfitted with brand new Chem Masters! They have nicer sprites now!
  • +
  • Fixed the description of the Cargo Express Console. Cargo Drop Pod orders aren't double-priced any more!
  • +
+

Naksu updated:

+
    +
  • Chem dispensers no longer take hours to recharge
  • +
  • chem dispensers also now use energy from the grid in proportion with the amount charged
  • +
  • Admins now get a follow link when a revenant spawns.
  • +
  • Admin hotkey help is now actually correct
  • +
+

Pipe fixes updated:

+
    +
  • Runtime in components_base.dm,91 what cause atmos machinery connection problems.
  • +
  • Pipes release air in turf on Destroy(), again.
  • +
  • Pipeline now cant be annihilated by merge(src). Pipes don't lose air on connecting more than to one pipe.
  • +
+

Robustin updated:

+
    +
  • Monkey AI is now much more efficient and no longer full of terrible, wasteful processes
  • +
  • Monkeys will now move more and will only focus on nearby objects for stealing. This should result in more natural monkey behavior instead of the monkey staring furiously at random shit in the room for 5 minutes until it has a 50 item blacklist of shit it will refuse to touch from then on out.
  • +
  • The chance for a monkey to attack you for pulling it will now only happen when execute the initial grab, instead of a check that happens every tick.
  • +
+

ShizCalev updated:

+
    +
  • Cleaned up the preferences panel a bit to be a bit more user friendly.
  • +
+

SpaceManiac updated:

+
    +
  • Unwrenching and re-placing directional signs now keeps their direction, and backings may be rotated in-hand rather than by pulling.
  • +
+

Tacolizard Forever updated:

+
    +
  • phobias will no longer recognize trigger words inside of other words
  • +
+

XDTM updated:

+
    +
  • Bees (and similar swarming mobs) are now able to occupy the same tile as other bees! When doing so, their icons are offset to make them seem like a proper swarm.
  • +
  • Bees will now dodge bullets not directly aimed at them. Why are you firing guns at bees
  • +
  • Sniper rifles will no longer oneshot mechs (although they still deal high damage).
  • +
  • Sniper rifles no longer knock down walls they hit.
  • +
+

Xhuis updated:

+
    +
  • Added the Family Heirloom trait. This makes you spawn with a special object on your person; if you don't have it with you, you will gain a mood debuff.
  • +
  • Added the Nyctophobia trait. This makes you walk slowly in complete darkness, and gain a mood debuff from the fear!
  • +
  • Added the Monochromacy trait, which makes you perceive (almost) the entire world in black-and-white.
  • +
  • Social Anxiety's trigger frequency is now correlated to the number of people near you.
  • +
  • Slimepeople now transfer their roundstart traits when swapping bodies.
  • +
+

YPOQ updated:

+
    +
  • Machine power will now update when moving from powered to unpowered areas and vice versa.
  • +
+

iskyp updated:

+
    +
  • night vision goggles no longer overwrite thermal eyes. nvg eyes no longer overwrite thermal goggles.
  • +
+

selea updated:

+
    +
  • a* pathfinder, coordinate pathfinder(accepts not ref to some obj, but it's abs coordinates) ,turf pointer(can give you ref to turf with given coordinates), turf scanner(can read letters on floor and contents of turf),material scaner(can read amounts of materials in machinery),material manipulator(to load/unload resources)
  • +
  • now you can decide, if basic pathfinder should avoid obstacles, or not.Now demux push only desired output without unnecessary nulls,upgraded claw and local locator.
  • +
  • reduced complexity cost of locomotors,abs/rel converters and basic pathfinders.Increased complexity of throwers,
  • +
  • Fixed bugs with cryptography, obstacle ref in locomotors, release pin in pullng claw.
  • +
  • add material tranfer proc to mat containers.refactored pathfinder SS to have separated queue for mobs and circuits to avoid spam.
  • +
  • Now recycler can butcher mobs and saw tree logs.
  • +
+

yorii updated:

+
    +
  • Science goggles can now detect reagents in grenades.
  • +
+ +

24 March 2018

+

Davidj361 updated:

+
    +
  • Ranged guardians in scout mode no longer are able to move out of their master when recalled.
  • +
+

Denton updated:

+
    +
  • Fixed missing capitalization for craft menu items.
  • +
  • Air alarms no longer trigger atmospherics alarms when stimulum or hyper-noblium are present. The allowed partial pressure of pluoxium has been increased as well.
  • +
+

Robustin updated:

+
    +
  • The Security Techfab can now produce basic shotgun shell types and .38 ammo
  • +
+

ShizCalev updated:

+
    +
  • Fixed a large number of missing APCs on Omegastation
  • +
  • Fixed unpowered Incinerator outlet injector on Omegastation.
  • +
  • Replaced glass window at Omegastation's incinerator with a plasma window.
  • +
  • Fixes broken atmos injectors on Omega
  • +
  • Fixes broken air outlet on Meta
  • +
  • Fixed a couple of malfunctioning atmospheric monitors across the rest of the maps
  • +
  • New test atmos monitoring console debug verb to help alleviate future issues.
  • +
+

YPOQ updated:

+
    +
  • The imaginary friend trauma now works
  • +
+ +

23 March 2018

+

Fel updated:

+
    +
  • Slimes can now be crossbred by feeding them a number of slime extracts of one type. Beware, it only produces one crossbred extract!
  • +
  • The number of required extracts has been lowered to 10 since the testmerge, but this number is up for potential change depending on balance consideration in the future.
  • +
  • Currently available crossbreeds are accomplished by feeding any slime the required amount of the following extract colors: Grey, orange, purple, blue, metal, yellow, dark purple, silver, cerulean, and pyrite. Their relevant effects will be added to the wiki page for xenobiology soon(TM), and more to come in a later addition!
  • +
  • Slimes can be fed extracts one at a time, but if you start mutating it, you can feed it extracts straight from a biobag! You can also use biobags to feed a reproductive extract monkey cubes.
  • +
  • Slimes in the process of being crossbred will reveal what modifier they will gain from their current modification, as well as how many more extracts are required, to slime scanners.
  • +
  • The rainbow slime clusterblorble effect will now only use reagents that the extract will be activated from, and will try any of these reagents! As a bonus side effect, this means it has a 1.1% chance of spawning and activating another clusterblorble effect.
  • +
+

Floyd / Qustinnus updated:

+
    +
  • progression bar now takes the delay after co_efficent in account
  • +
  • removes do_after_speed from mob base, moves it into physiology
  • +
  • makes a do_after coefficiency proc
  • +
  • Changes rate of sanity drain and caps it depending on mood
  • +
+

Frozenguy5 updated:

+
    +
  • Reverted bad airlock sounds.
  • +
+

Naksu updated:

+
    +
  • the amount of simultaneous monkey cube-spawned monkeys has been restricted.
  • +
  • the cap is adjustable via the mobs subsystem
  • +
+

SpaceManiac updated:

+
    +
  • The cargo conveyor switches now properly control the belts on the shuttle again.
  • +
  • Entering a frequency like 145.7 into a radio will now work, where 1457 was previously required.
  • +
+

TheMythicGhost updated:

+
    +
  • New Integrated Circuit Converter Components: hsv2hex and rgb2hex for smooth color transitions, woo!
  • +
  • Added icons for the new component chips.
  • +
  • New Integrated Circuit Component: AI Vox Sound Circuit
  • +
+

ninjanomnom updated:

+
    +
  • You can no longer override shuttle areas with new or expanded areas from elsewhere.
  • +
+ +

22 March 2018

+

Denton updated:

+
    +
  • The lavaland Syndicate base has been outfitted with a turret control panel as well as more chemistry supplies and one (1) bar of Syndicate brand soap.
  • +
+

Floyd / Qustinnus updated:

+
    +
  • Being happy no longer makes you obese.
  • +
+

JohnGinnane updated:

+
    +
  • Vending machines now have their own files which includes their refill cannister. The machines themselves are unchanged
  • +
+

Naksu updated:

+
    +
  • Pulled objects will now follow their puller across space transitions again
  • +
+

Robustin updated:

+
    +
  • Fixed a bug that prevented the advanced blood rites (Halberd, Bolts, Beams) from appearing when selected.
  • +
+

SpaceManiac updated:

+
    +
  • Ventcrawlers in pipes now breathe from that pipe.
  • +
  • Deconstructing atmos components no longer breaks ventcrawl visuals.
  • +
+ +

21 March 2018

+

BunnyBot5000 updated:

+
    +
  • Fringe Weaver drink - made with ethanol and sugar, it's classy (and slightly weaker) hooch
  • +
  • Sugar Rush drink - made with sugar, lemon juice, and wine. It's got a slight nutritional value but decreases your satiety, causing you to be unable to consume junk food.
  • +
  • Crevice Spike drink - made with lime juice and hot sauce. A 'sobering' drink, the Crevice Spike will reduce your drunkenness slightly but it kicks hard going down, dealing 15 points of brute when first ingested.
  • +
+

MrStonedOne updated:

+
    +
  • VOX sounds are now forcefully preloaded on clients to deal with an issue keeping byond from loading them
  • +
+

cyclowns updated:

+
    +
  • Unary devices can now be analyzed using gas scanners. This means stuff like vents, scrubbers, cryo tubes, or heaters/freezers.
  • +
+ +

20 March 2018

+

Denton updated:

+
    +
  • At last, the Pubbystation auxillary base can be launched again.
  • +
  • Aux base/escape pod/assault pod/elevator docking ports now default to timid = FALSE.
  • +
+

Garen updated:

+
    +
  • Added 4 new Icons to the diagnostic hud circuit status display that can be set using the AR interface circuit.
  • +
  • now instead of seeing the yellow warning icon when a weapon is in the circuit, the current status icon will just turn red.
  • +
+

Irafas updated:

+
    +
  • Pacifists can now drill closets containing living beings
  • +
+

JStheguy updated:

+
    +
  • Electronic assemblies can now have their casings colored using the new assembly detailer, get yours at your nearest integrated circuit printer!
  • +
  • Added 2 new electronic assemblies, 2 new electronic mechanisms, and 3 new electronic drones.
  • +
  • Added wall-mounted electronic assemblies in 3 sizes, simply slap it against a wall to stick it up, and then anchor it in place with a wrench.
  • +
  • Added the new sprites for the new assemblies, and color-able overlays for every assembly, to allow for the aforementioned coloring feature.
  • +
  • Scanners can now scan power cells, circuitry tools, and integrated circuits, assuming the player isn't able to use them normally. I.E. if the assembly is closed.
  • +
  • Using wrenches to anchor down assemblies now works for all assembly types except drones, as opposed to just working for electronic machines.
  • +
  • Examining an assembly now shows some text telling you what tools to use to do what, like many other objects currently do.
  • +
+

Kor updated:

+
    +
  • Jobs other than Assistant may now be assigned by admins or events as the overflow role
  • +
  • April Fools now sets the overflow role as Clown.
  • +
+

Naksu updated:

+
    +
  • Rhumba beat is now more than renamed GBS
  • +
  • Plastic is now a valid material for lathes
  • +
  • Added two new beaker types, 120u and 180u. The 120u beaker can be printed off the medical protolathe with just glass and plastic, the 180u requires some mining materials and tech.
  • +
  • Whether to open the armory doors when spawning an ERT is now controllable from the ERT creation window.
  • +
  • Chaplain inquisitor role now spawns with one holy hand grenade instead of a box full of them, and the belt now has actually useful stones instead of unusable cult stones
  • +
+

Polyphynx updated:

+
    +
  • The piano now sounds more like a piano!
  • +
+

Shadowlight213 updated:

+
    +
  • Malf hacked APCs can be broken with extinguishers and toolboxes again.
  • +
+

TheDreamweaver updated:

+
    +
  • Holodeck mobs that are given sentience via sentience potions are now warned about the state of their existence.
  • +
+ +

19 March 2018

+

Anonmare updated:

+
    +
  • Spaceacillin is now useful in disease control
  • +
+

Denton updated:

+
    +
  • It's suicide HoPline prevention week at Omegastation!
  • +
  • Navigation beacons and a brand-new Officer Beepsky unit have been installed. This means that crewmembers can now use medibots, janibots and other bots as well.
  • +
  • The atmospherics department has been outfitted with all missing gases as well as an incinerator and a hardsuit.
  • +
  • The size of the botany and xenobiology departments have been increased in order to increase productivity. The medbay O2 port has been moved so that doctors can access the table next to it.
  • +
  • RnD now has circuitry tools; medbay has stethoscopes+wrench+beaker/pill bottle boxes and primary tool storage has multitools. Enginers no longer have to share a single pair of insulated gloves either.
  • +
  • Engineers now have access to an Engi-Vend vending machine as well as missing tools like inducers. Circuitry storage has a smoke machine board and a solars crate in case the engine blows up.
  • +
  • Blueprints have been moved from the vault safe to secure storage in order to speed up construction projects.
  • +
  • The AI sat transit tube now works! Turret controls can now be accessed from the outside. The first two turrets now use the proper type of gun. The telecomms air alarm will no longer report false alarms.
  • +
  • The main hallway's firelocks now no longer all close at once.
  • +
  • Pubbystation: The atmos mix tank and N2 filter should now work properly.
  • +
+

SailorDave updated:

+
    +
  • Crayons and spraycans can no longer draw an unlimited amount of large graffiti regardless of uses left.
  • +
+ +

18 March 2018

+

Davidj361 updated:

+
    +
  • Made AI VOX sound files smaller sized
  • +
  • Fixed improperly pronounced AI VOX lines
  • +
  • Added a ton of new AI VOX sayings
  • +
+

Floyd / Qustinnus updated:

+
    +
  • Removes short-term effects of mood add; Adds long-term effects of mood by implementing sanity which goes up with good mood, down with bad mood, but takes time to change. Your sanity can be seen as your average mood in the recent past. All effects of moods are now covered by this system
  • +
  • Beauty component, currently only attached to cleanables, but you could attach it to any atom/movable and make them pretty/ugly, affecting mood of anyone in the room.
  • +
  • Removes the original way of adding mood events, uses signals properly instead.
  • +
  • Cleanables "giving" area's free beauty during initialization
  • +
  • Fixes some events not clearing properly
  • +
+

Naksu updated:

+
    +
  • Chem dispensers now show the correct amount of units they will vend (instead of 1/10)
  • +
  • Chem dispensers can now be upgraded. Manipulators increase macro granularity, matter bins increase power efficiency, cells increase power capacity, capacitors increase recharge rate.
  • +
  • Chem dispensers can now be constructed
  • +
  • mini-chemdispensers are removed.
  • +
+ +

17 March 2018

+

AnturK updated:

+
    +
  • Traitor AI's can now take manual control of turrets.
  • +
+

Cruix updated:

+
    +
  • Sentient diseases will no longer lose points when a host is uninfected.
  • +
+

Dax Dupont updated:

+
    +
  • Edison's ghost no longer interferes with Tesla Corona Coil research device.
  • +
+

Denton updated:

+
    +
  • Syndicate stormtroopers now rapid fire 10g slugs instead of buckshot. This deals the same damage, but makes getting hit less laggy.
  • +
  • Pubbystation: Added protective grilles outside the circuitry lab. The one with the big glass windows, right next to the bomb test site. Oops.
  • +
  • Pubby: Added electrified grilles to the windows of the CMO/RD/CE offices, as well as missing privacy shutters to the CE office.
  • +
  • Pubby: There is now a very rare chance for a Xenomorph egg to appear in the Xeno containment chamber at roundstart.
  • +
  • Pubby: Fixed the name of the HoS space shutter button.
  • +
  • Updated a bunch of roundstart tips and added new ones.
  • +
+

Polyphynx updated:

+
    +
  • Bluespace slime radio potions now work, and are no longer invisible.
  • +
+

RandomMarine updated:

+
    +
  • Did you know that you could buckle guys to grounding rods? Probably not - not that it mattered before, because people buckled to them didn't get shocked when they got zapped. That's fixed now.
  • +
+

SpaceManiac updated:

+
    +
  • Cameranet issues in OmegaStation's departures wing, crematorium, and freezer have been corrected.
  • +
+

The Dreamweaver updated:

+
    +
  • Fixes duplication issue when the Rod of Asclepius is removed while lying down, as well as fixing a runtime when attempting to use multiple rods.
  • +
+

XDTM updated:

+
    +
  • Changed behaviour of mech drills: now they take some time to start drilling, then they keep drilling until manually stopped or the target is destroyed. Mobs are still gibbed if they have more than 200 brute damage while being drilled.
  • +
  • Drilling walls is now consistent; it takes longer, but it will always work instead of only randomly.
  • +
  • Drills no longer stun mobs, but they can dismember limbs.
  • +
  • Mech drills no longer cause explosion-like effects on mobs inside objects.
  • +
+

deathride58 updated:

+
    +
  • You can no longer push someone onto a table that's on the other side of the station.
  • +
+

kevinz000 updated:

+
    +
  • Wet floors now get their duration decreased by 0.1 seconds per degree above 0C the air temperature on it is, and instantly dry above 100C. Below 0C they will freeze into ice and will not automatically dry.
  • +
  • Floors can now have different types of wet at the same time! Wet strength/type is now a bitflag.
  • +
+ +

16 March 2018

+

Dax Dupont updated:

+
    +
  • 8balls take less time to shake.
  • +
+

Keekenox & Floyd / Qustinnus updated:

+
    +
  • Adds a new Parallax layer that resembles Lavaland (Lava Planet), it spawns on a random location near the station. You need your parallax on high to see it.
  • +
+

Shadowlight213 updated:

+
    +
  • Roundstart or latejoin sec officers will like donuts regardless of race.
  • +
+

cacogen updated:

+
    +
  • Transit tubes take half as long to secure/unsecure
  • +
+ +

13 March 2018

+

Dennok updated:

+
    +
  • Meters can be attached to the floor by screwdriver
  • +
+

Denton updated:

+
    +
  • The disposal bin in Pubbystation's main tool storage now works.
  • +
  • Deleted a duplicate r-wall between Pubby's main tool storage and the captain's office. Added a Metastation-style crate disposals chute and a light switch.
  • +
  • Various belts can now hold additional job-specific items.
  • +
  • Sepia floor tiles fly really slowly, yet far when thrown. Don't hit yourself!
  • +
+

Naksu updated:

+
    +
  • ERT creation has been refactored to allow for easier customization and deployment via templates and settings

Polyphynx updated:

  • Medical sprays can now be stored in medical belts and smartfridges.
-

Poojawa updated:

+

The Dreamweaver updated:

    -
  • Hypospray mk IIs are being deployed to stations, these should provide an easier time for medical staff! They come with both inject and spray modes! Spray mode acts like a patch for applying meds
  • -
  • Hyposprays are fancy, you'll know when they're being used.
  • -
  • Due to fucky-ness, you'll need to unload, then reload the hypos at least once. just how it be.
  • -
  • Tesla Engines are now standard on all but Omega.
  • -
  • fixed a pipe in Meta station that wasn't connected properly.
  • -
  • fixed an exploit related to Tesla wires.
  • -
  • Added release sound effects for choosing. If having a non-belly, belly.
  • -
  • Added a 'silent' modifier to bellies.
  • -
  • Added a vore subsystem to handle belly processing, should be less clunky
  • -
  • rebalanced heal mode and dragon digestion.
  • -
  • added client preference based sound toggles to both eating/release/struggle and digestion noises seperately.
  • -
  • vore prefs save to JSON now instead of .sav. much easier really. refractor: dragon vore is working, though with this game who knows.
  • -
  • your prefs should automatically transfer, but it's likely you'll lose pre-loaded bellies, BACK UP EVERYTHING. (you should be doing this anyway too)
  • -
  • Creating new characters will import the previous' bellies. but once you click 'save' they'll make the new JSON file will all the info. This is per slot, so if you change your character, you'll have to change belly stuff.
  • -
  • Removed old things in .dms we weren't using anymore
  • -
  • subtle messages are now italic'd, so there's better context on whispering
  • -
  • broke apart the cit_gun.dm file, they're decently spaced out now
  • -
  • dogborg_sleeper is now standalone from dogborg_equipment because too lazy to debug why it was breaking backpacks.
  • -
  • does that thing I've been meaning to do with Xenobio. additional tools have been provided.
  • -
  • Added new trek uniforms to loadouts!
  • +
  • Both of Nanotrasen brand totally-for-adult-use footwear, Wheely-heels, the cool and hip new shoes with built in roller-wheels, and Kindle Kicks, the fun and flashy light up sneakers, are now available as rare prizes at your nearest arcade machine!
  • +
+

Toriate updated:

+
    +
  • Added ammo counters for RCDs
  • +
  • Added actual flashing yellow light for RCDs
  • +
  • added new RCD sprites including inhands
  • +
  • deleted old RCD iconstate, but not the inhands
  • +
+

checkraisefold updated:

+
    +
  • Nukeops properly checks the required amount of enemies for the gamemode! This should fix downstream problems.
  • +
+

imsxz updated:

+
    +
  • the viral aggressive metabolism symptom has been removed
  • +
+

ninjanomnom updated:

+
    +
  • You need to actually clear an area for the aux base, remove all walls (except rock walls).
  • +
+ +

12 March 2018

+

Naksu updated:

+
    +
  • The space cleaner spray bottle is now much more efficient and uses much less space cleaner per spray. The amount of cleaner it can hold has been adjusted to compensate.
  • +
  • internet sounds can be stopped again

Robustin updated:

    -
  • Harvesters now have 40hp, from 60.
  • -
  • The nuke will now detonate 2 minutes after Nar'sie is summoned, down from 2.5 minutes
  • -
  • The "ARM" ending now requires 75% of the remaining souls aboard to be sacrificed before the nuke goes off, up from 60%.
  • -
  • Drones can no longer be on the sacrifice list
  • -
  • Bloodsense will now show the true name of the target
  • One-man conversions are actually fixed this time - excess chanters var removed for a more readable and maintainable rune code.
  • Runes should no longer become GIANT if spammed (credit to Joan for this fix).
  • Pylons are no longer a source of infinite rods.
  • @@ -199,25 +965,78 @@
  • The deconversion time for holy water is slightly reduced, 10 units and 45 seconds (give or take), is all you should need now. Blood cultists can now have seizures while afflicted with holy water.
  • Shades are now slower and have a modest reduction to their damage and health.
-

SailorDave updated:

+ +

11 March 2018

+

Buggy123 updated:

    -
  • The names of Surgery Disks now match their type of surgery.
  • +
  • The Clockwork Justicar has decided to be merciful, and allow nonbelievers to anchor their petty machines in his city. It's only fair for them to have a fighting chance, after all.
  • +
+

Irafas updated:

+
    +
  • Fixed pacifists from being able to fire mech weapons
  • +
+

JJRcop updated:

+
    +
  • Sanity checks for Play Internet Sound
  • +
+

MrDoomBringer updated:

+
    +
  • Orderable supplies in cargo now all have descriptions! The station's overall FLAVORFUL_TEXT stat has gone up by nearly 2% as a result.
  • +
+

Onule updated:

+
    +
  • Mining drones have been given a visual makeover!
  • +
+

Poojawa updated:

+
    +
  • Redded borg transformation animations
  • +
  • adjust mining borg animation to new colors.
  • +
+

Xhuis updated:

+
    +
  • The Nanotrasen Meteorology Division has identified the aurora caelus in your sector. If you are lucky, you may get a chance to witness it with your own eyes.
  • +
+

ninjanomnom updated:

+
    +
  • The debug message for generic shuttle errors is improved a little
  • +
  • Custom shuttles being too close to the map edge was causing problems, you must now be at least 10 tiles away.
  • +
+ +

10 March 2018

+

81Denton updated:

+
    +
  • Added wall safes to Deltastation's HoP and Captain's offices.
  • +
+

Astral updated:

+
    +
  • Constructed turbines will now properly connect to the powernet
  • +
+

Cobby updated:

+
    +
  • The Eminence scoffs at your "consecrated" tiles once the Justicar is freed from his imprisonment.
  • +
+

Denton updated:

+
    +
  • Engi-Vend machines now have welding goggles available.
  • +
  • Grouped Nano-Med/Engi-Vend items by category.
  • +
+

Irafas updated:

+
    +
  • Turrets can be set to shoot personnel without loyalty implants
  • +
+

Naksu updated:

+
    +
  • The smoke machine can no longer be found in chemistry departments, instead it must be constructed manually. The board was added to techwebs earlier.
  • +
+

Singularbyte updated:

+
    +
  • Dead bodies no longer freak out about phobias

The Dreamweaver (Sprites: Onule) updated:

  • Nanotrasen's Lavaland research team has discovered that the alien brain has disappeared from necropolis chests.
  • In it's place they have discovered a new artifact, the Rod of Asclepius, a strange rod with a magnitude of healing properties, and an even higher magnitude of responsibility...
-

Toriate updated:

-
    -
  • Added ammo counters for RCDs
  • -
  • Added actual flashing yellow light for RCDs
  • -
  • added new RCD sprites including inhands
  • -
  • deleted old RCD iconstate, but not the inhands
  • -
  • Added Polychromic Shorts and kilts to loadout
  • -
  • changed the way polychromic clothes works
  • -
  • refactored polychromic things such that the vars and (some) procs are globalized
  • -

XDTM updated:

  • You can now place people on tables on Help Intent. Doing so takes a few seconds and makes the target Rest, instead of stunning them.
  • @@ -226,626 +1045,603 @@
    • Circuit slow-cloning no longer breaks with some circuits.
    • Circuit slow-cloning is now cleaner.
    • -
    • The Nanotrasen Meteorology Division has identified the aurora caelus in your sector. If you are lucky, you may get a chance to witness it with your own eyes.
    -

    ZeroNetAlpha updated:

    +

    kevinz000 updated:

      -
    • Tweaked Aquatic Species to give fillets when run through the chef's gibber.
    • -
    • Makes all darts deletable with nothing more than a little space cleaner.
    • -
    • Makes in-flight foam darts dissolve when hit with space cleaner, be it foam, smoke, or a janitor being a badass with a spraybottle.
    • -
    • Adds 2 new foam dart variants that are compatable with the laser tag systems.
    • -
    • New Recipes available for autoylathe building.
    • -
    -

    checkraisefold updated:

    -
      -
    • Nukeops properly checks the required amount of enemies for the gamemode! This should fix downstream problems.
    • -
    -

    deathride58 updated:

    -
      -
    • You can now sprint by holding shift.
    • -
    • Added combat mode. Press C or use the UI button to toggle it on and off. The code and the sound for toggling combat mode are from Interbay. The sound is mainly a placeholder until a more fitting sound can be found.
    • -
    • You can now use the right mouse button to perform actions while in combat mode. If something doesn't have a unique action for right clicking, it'll default to the normal left click action.
    • -
    • You can now move around and use items while resting. The code is from Interbay
    • -
    • You can now use the resist button to get up from resting. This will take time depending on your health and stamina, even if you try to use the rest button instead.
    • -
    • Reworked stamina, and introduced stamina crit. If you run out of stamina, you'll enter stamina softcrit, during which you'll be unable to attack, get up from resting, or perform various other actions. If you keep losing stamina after entering stamina softcrit, you'll enter full stamina crit, in which you'll be unable to move or interact with the environment until you're above 0% stamina again.
    • -
    • Added a stamina buffer. Performing actions that drain the user's stamina will now drain the stamina buffer before draining actual stamina. The stamina buffer will start to regenerate after going 5 seconds without performing a stamina-draining action. When the stamina buffer regenerates, it will use up stamina, at a rate of 0.5 points of stamina per 1 point of stamina buffer.
    • -
    • Added a rest button to the HUD
    • -
    • 90% of all stuns have been removed in favor of stamina. Stuns will now simply knock the affected person down if they would have been 8 seconds or less, but will function for a "normal" stun with a length that's a tenth of the normal time if their normal time is longer than 8 seconds.
    • -
    • Attacking with weapons will now cost stamina depending on the weapon's size. Some code from Interbay.
    • -
    • Throwing things now costs stamina. Some code from Interbay.
    • -
    • Default movement speed has been reduced by one tick to accommodate for sprinting. This does not require a config update.
    • -
    • The slowdown you get when you're low on health has been reduced by one tick to accommodate for the shift from stun-based combat to stamina-based combat.
    • -
    • Dogborg pouncing has been buffed from a knockdown of 4.5 seconds to a knockdown of 45 seconds. After the previously mentioned changes, this brings dogborg pouncing from 11.5 stamina + knockdown to 115 stamina + 4.5 second stun. **This is a temporary change to make dogborgs immune to the stun nerfs for now until a better solution can be found.**
    • -
    • Crushers now regenerate stamina upon successfully detonating a mark.
    • -
    • Also laid down the groundwork for a psuedo z-height system. You can see a small glimpse of it by hopping on a table!
    • -
    • Added a couple of fancy buttons to the UI! Sprites are from Toriate.
    • -
    • Also added a stamina meter to the UI. Sprites are from Hippiestation
    • -
    • Widescreen pref works again.
    • -
    • The title screen is now properly positioned to display widescreen titlescreens again.
    • -
    • It's now possible to assign an ID to a gear entry to manipulate it via config options. Right now, you can only use this to modify the whitelist.
    • +
    • Oh hey guys, RND shows correct material values now, don't hurt me!

    ninjanomnom updated:

    • Blowing up the wrong part of the shuttle should no longer result in the shuttle being permanently broken.
    • -
    • The debug message for generic shuttle errors is improved a little
    • -
    • Custom shuttles being too close to the map edge was causing problems, you must now be at least 10 tiles away.
    • +
    + +

    09 March 2018

    +

    Dax Dupont updated:

    +
      +
    • Display cases can now have a list where to randomly spawn items from.
    • +
    • Moved plaque code to main type.
    • +
    • Statues now use default unwrench and the tool interaction is now completely non existent when no deconstruct flag is available.
    • +
    +

    Mark9013100 updated:

    +
      +
    • Pill bottles can now be produced in the autolathe.
    • +
    +

    Naksu updated:

    +
      +
    • The white ship and miscellaneous caravan ships lose their advanced place-anywhere shuttle movement during war ops.
    • +
    • The smoke machine can now be deconstructed using a screwdriver and a crowbar
    • +
    • The smoke machine no longer calls update_icon every process()
    • +
    +

    Robustin updated:

    +
      +
    • Harvesters now have 40hp, from 60.
    • +
    • The nuke will now detonate 2 minutes after Nar'sie is summoned, down from 2.5 minutes
    • +
    • The "ARM" ending now requires 75% of the remaining souls aboard to be sacrificed before the nuke goes off, up from 60%.
    • +
    • Drones can no longer be on the sacrifice list
    • +
    • Bloodsense will now show the true name of the target
    • +
    + +

    08 March 2018

    +

    ACCount updated:

    +
      +
    • Station airlocks now support NTNet remote control. Door remotes now use NTNet.
    • +
    • Don't worry, any non-public airlock is fully protected from unauthorized control attempts by NTNet PassKey system!
    • +
    • New integrated circuit component: card reader. Use it to read PassKeys from ID cards.
    • +
    • Fixes a delay issue when airlocks are being opened/closed by signalers.
    • +
    +

    Astral updated:

    +
      +
    • Lighting fixtures should no longer be visible in camera-less areas by cameras.
    • +
    • Ghosts can now examine sentient diseases to see info
    • +
    +

    CameronWoof & MrDoomBringer updated:

    +
      +
    • Adds medical sprays, a new application method for touch chems
    • +
    • Pre-loaded medical sprays can be obtained from NanoMeds
    • +
    • Empty medical sprays can be found in boxes in chemistry and from cargo's medical crate
    • +
    • Sterilizer spray has been migrated to be a medspray instead of being a spray bottle
    • +
    +

    Cebutris updated:

    +
      +
    • lithenessk -> litheness
    • +
    +

    Cruix updated:

    +
      +
    • Sentient diseases now get two minutes to select an initial host before being assigned a random one.
    • +
    +

    Dax Dupont updated:

    +
      +
    • Beacons can now be toggled on and off.
    • +
    • Mappers can now have beacons that default to off. Useful for ruins!
    • +
    • Renaming replaces the snowflake locator frequency/code
    • +
    • Beacons are no longer radios. Why were they radios in the first place? I don't know.
    • +
    • You can now lay meters again with the RPD.
    • +
    +

    Denton updated:

    +
      +
    • Pubbystation's RnD department has been outfitted with a brand new circuitry lab! It is found east of the Toxins launch room.
    • +
    +

    Floyd / Qustinnus (Sprites by Ausops, Some moodlets by Ike709) updated:

    +
      +
    • Adds mood, which can be found by clicking on the face icon on your screen.
    • +
    • Adds various moodlets which affect your mood. Try eating your favourite food, playing an arcade game, reading a book, or petting a doggo to increase your moo. Also be sure to take care of your hunger on a regular basis, like always.
    • +
    • Adds config option to disable/enable mood.
    • +
    • Indoor area's now have a beauty var defined by the amount of cleanables in them, (We can later expand this to something like rimworld, where structures could make rooms more beautiful). These also affect mood. (Janitor now has gameplay purpose besides slipping and removing useless decals) remove: Removes hunger slowdown, replacing it with slowdown by being depressed
    • +
    • Icons for mood states and depression states
    • +
    +

    MMMiracles updated:

    +
      +
    • Thirteen Loko now has an overdose threshold of 60u, see your local CMO for potential side-effects.
    • +
    +

    MrDoomBringer updated:

    +
      +
    • Emagging the emergency shuttle now fries the on-board acceleration governor. Better buckle up!
    • +
    +

    Naksu updated:

    +
      +
    • The nuclear authentication disk no longer treats the transit space as a whole as being "in bounds", but instead checks whether it is in an approved shuttle type (syndicate shuttles, escape shuttles, pubbiestation's monastery shuttle, escape pods are allowed)
    • +
    • Blueprints can no longer be used to create areas inside shuttles. This fixes various exploits involving shuttles and areas.
    • +
    • Moving across a space z-level border can no longer place you inside a shuttle or a dense turf such as an asteroid.
    • +
    +

    SpaceManiac updated:

    +
      +
    • The Shift Duration in the round-end report is no longer blank in rounds lasting between one and two hours.
    • +
    +

    kevinz000 updated:

    +
      +
    • smoke machines can now be printed after researching adv biotech
    • +
    + +

    06 March 2018

    +

    MrDoomBringer updated:

    +
      +
    • Advances in Rapid Delivery Technology have yielded a reduced premium on express cargo orders! Orders from the express console now have a cost multiplier of 1, down from 2.
    • +
    +

    MrStonedOne updated:

    +
      +
    • gas overlays once again no longer steal clicks
    • +
    • 511 clients will be unable to see gases once again. the 512 client crashes are fixed so this shouldn't be that big of a deal.
    • +
    +

    Naksu updated:

    +
      +
    • Admins can now easily spawn mobs that look like objects. Googly eyes optional!
    • +
    +

    XDTM updated:

    +
      +
    • Revenants now have randomly generated names.
    • +
    +

    Xhuis updated:

    +
      +
    • Traits are now assigned in a way that should cause fewer edge cases and strangeness.
    • +
    • Night Vision should now work.
    • +
    • Traits no longer tick while dead.
    • +
    • RDS now triggers twice as often.
    • +
    • You can now modify your trait setup mid-round. Your character is locked to the traits you had selected when you spawned in, though.

    selea updated:

    • After several months of natural selection, hostile mobs started to attack assemblies with combat circuits.
    -

    16 February 2018

    -

    Cebutris updated:

    +

    05 March 2018

    +

    81Denton updated:

      -
    • Added in prayer beads, code and sprites shamelessly stolen from Paradise. Chaplains can pray for people, to heal their wounds without the risk of braindamage, and cleanse their mind of unholy thoughts
    • -
    • Security vendors now have a stunsword modification kit available for purchase with a coin. There might be another somewhere in there, but that would require tampering with it, and you're a good little redshirt, aren't you?
    • +
    • Deltastation: Removed a windoor to make the northern chemistry fridge more accessible.
    -

    CitadelStationBot updated:

    +

    Cruix updated:

      -
    • As it would happen, the chef does not actually have Italian genes, but rather was being influenced by a strange moustache-a.
    • -
    • Goliath hide plates now properly apply to explorer suits and APLUs again.
    • -
    • Printed power cells must now be charged before use
    • -
    • Changed the chemical recipe for Lexorin from plasma, hydrogen, and nitrogen to plasma, hydrogen, and oxygen.
    • -
    • These were necessary due to recipe conflicts
    • -
    • You can now smelt titanium glass and plastitanium glass
    • -
    • Use titanium glass and plastitanium glass to build shuttle windows and plastitanium windows
    • -
    • Prevents megafauna (and other large things like spiders and mulebots) from going into machines
    • -
    • The notify irc/discord bot chat command no longer requires admin privileges.
    • -
    • After consulting with their in-house physicists, Nanotrasen has updated their worst-case disaster training simulation "Space Station 13". The combustion of hydrogen isotopes now produces water vapor instead of carbon dioxide.
    • -
    • Heart-shaped boxes of chocolates are now included in Valentine's Day event gifts
    • -
    • You no longer need an aggressive grab to table someone.
    • -
    • Minimap gone from crew monitoring
    • -
    • made powercell rigging no longer set rigged to the plasma reagent datum what the hell and makes it use TRUE/FALSE defines
    • +
    • Added a new mini antagonist, the sentient disease.
    • +
    +

    DaedalusGame updated:

    +
      +
    • Fixes the auxbase camera console not placing airlocks on fans but doing so vice-versa

    Dax Dupont updated:

      -
    • Telecom equipment now can only be printed by engineers and scientists as intended.
    • -
    • WT-550 AP can only be printed by sec now.
    • -
    • Removed engineering requirement for arcade machines to bring it in line with others.
    • -
    • Defibs can now be researched and printed.
    • -
    • Hatches are now small instead of tiny.
    • -
    • Cloner UI now properly updates cloning pod status when autocloning starts cloning someone.
    • -
    • Grabbers/throwers no longer can contain/throw things equal to the assembly size.
    • -
    • Fixes duplicate air alarm on meta.
    • -
    • AI no longers block ark after mass_recall
    • -
    • Placed the dispersal logic AFTER the mass_recall on ark activation instead of infront(did nothing before basically).
    • -
    • Cell chargers can now be built and upgraded with capacitors!
    • -
    • Fixed empty subtype batteries not updating icons
    • -
    • Added hooray emoji!
    • -
    • Integrated circuits no longer start upgraded.
    • -
    • The IC printers that are available on round start in the IC labs are no longer upgraded by default. You will need to research these as was intended
    • +
    • Others can now take off your tinfoil hat as seemingly originally intended.
    • +
    • Due to the nature of tinfoil hats, the delay of putting a tinfoil hat on unwilling participants has been increased.

    Denton updated:

      -
    • Removes grind_results from empty soda cans since they can't be ground.
    • -
    • For consistency's sake, aluminium is now universally spelled with two 'i'.
    • -
    • Changed can_synth values from 0/1 to FALSE/TRUE
    • -
    • Fixes lye/plastic/charcoal conflicts when mixing.
    • -
    • Lye is now made by combining ash with water and carbon. Plastic sheets by heating ash, sulphuric acid and oil.
    • -
    • Emagging meteor shield satellites now shows you a message.
    • -
    • Fixed a typo when emagging RnD servers.
    • +
    • Pubbystation: Added a missing APC to the cargo sorting room, a light fixture to the RnD security checkpoint and removed an overlooked firelock east of the bridge.
    • +
    • Pubbystation: Added a spare RPD to the Atmospherics department. Replaced Engineering's outdated meson goggles with modern engineering scanners. Added a GPS device to the secure storage crate.
    • +
    • Moved Pubbystation's drone shell dispenser from the experimentation lab to Robotics maint.
    -

    Frozenguy5 updated:

    +

    Jittai / ChuckTheSheep updated:

      -
    • You can craft rat kebabs now.
    • -
    -

    Iamgoofball updated:

    -
      -
    • The Cook now ONLY works under siege.
    • -
    -

    Improvedname, Toriate updated:

    -
      -
    • Adds carrot satchel
    • -
    -

    Kor updated:

    -
      -
    • Mining sentience upgrades now grant minebots an ID and radio.
    • -
    • Bluespace slime extracts now have a new chemical reaction with water, which create slime radio potions. When applied to a simple animal, that mob gains an internal radio.
    • -
    -

    MMMiracles updated:

    -
      -
    • You can now produce a cryostatis variant of the shotgun dart after researching Medical Weaponry. Holds 10u and doesn't have reagents react inside it.
    • -
    -

    Mokiros updated:

    -
      -
    • All-In-One Grinder can now be built with researchable curcuit and micro-manipulator.
    • -
    -

    More Robust Than You updated:

    -
      -
    • You can now squish urinal cakes
    • -
    • Your hand no longer magically squishes urinal cakes when trying to pick them up
    • -
    • SCP-294 no longer looks fucked up
    • -
    • Fixes SCP-294 losing its top sometimes
    • -
    -

    More Robust Than You, Basilman, and MMMiracles updated:

    -
      -
    • Deep in space, a valuable artifact awaits
    • +
    • Adjusted the space parallax's contrast to be less vibrant.

    Naksu updated:

      -
    • Cyborg engineering module geiger counters now work properly again
    • -
    • Steam engines have been removed from maintenance, engineering, atmos and teleportation areas.
    • -
    • The chef is now trained for working under siege
    • -
    • The clogged vents event has been removed for pressing ceremonial reasons
    • -
    • Chasms no longer eat shuttle docking ports, rendering them unusable and unresponsive
    • -
    • replaced some item-specific movement hooks with components
    • +
    • Advanced roasting sticks, a product of applied bluespace research can now be built from service protolathes. They can be used to cook sausages on campfires, supermatter engines, tesla balls, singularities and a couple of other things.
    • +
    • Admins can now grant spells via implants, using the spell implant. Some VV is required.
    -

    Ordo updated:

    +

    Potato Masher updated:

      -
    • Replaced nitrogen with ethanol in morphine recipe. The recipe now has a lower yield.
    • +
    • The Wizard Federation has finally modified their production method for pre-packaged magic tarot cards for better compatibility with time-stopping spells. Guardians Spirits are no longer frozen by their user's time-stops.
    -

    Poojawa updated:

    +

    SpaceManiac updated:

      -
    • Cryopods are now available for safe round exiting, no longer will you need to ahelp with 'oh fuck wrong job'. Being kicked back to lobby for a restart is still admin. You will be warned to ahelp if you're an antag role however.
    • -
    -

    Raeschen updated:

    -
      -
    • Changed/removed some miscreant objectives
    • -
    -

    Robustin updated:

    -
      -
    • Fixed the limb grower having a max volume of 0.
    • -
    • The rift created by teleporting in from space will now include a description indicating the direction of the "origin" teleport rune - giving the examiner a fair idea of where the "space base" is located.
    • -
    • You can no longer manifest spirits or summon cultists while in space or Lavaland. You may still ascend as a spirit (formerly spirit sight, astral jaunt, etc.) in either of these locations.
    • -
    • Juggernauts have lost 20% reflect rate on energy projectiles (now around 50% for standard lasers).
    • -
    • Wraiths and Juggernauts have -5 melee damage (20 and 25 now, respectively).
    • -
    • Construct shells now cost 50 metal through the "twisted construction" spell. Twisted construction is now a "single use" spell.
    • -
    • The Concealment spell will now work on cult airlocks (including converted airlocks). The "concealed" airlock will appear as a generic airlock but will deny access to any non-cultist.
    • -
    • The draw blood effect on blood splatters will now draw more blood from stains with low blood levels.
    • -
    • Unanchored (via ritual dagger) cult structures are no longer "dense", meaning you can move them through teleport runes more efficiently.
    • -
    • The button to nominate yourself for cult master now has a confirmation prompt seeking assurance that the user is prepared to be the cult's master.
    • -
    • The reveal aspect of the concealment spell is slightly smaller, albeit still slightly larger (6 range) than the concealment aspect (5 range).
    • -
    • Juggernauts "gauntlet echo" now has a more cult-themed appearance.
    • -
    • Using a shuttle curse to push the shuttle timer above its default can no longer be "reset" with a recall. This also adds a block_recall(time_in_deciseconds) helper-proc to the shuttle subsystem.
    • -
    • Using runed metal on a regular girder is no longer an option, preventing runtimes and deletions associated with the (unintended) combination.
    • -
    -

    ShizCalev updated:

    -
      -
    • Corrected a number of missing checks when using alt-click actions. Please report any strange behavior to a coder.
    • -
    • Corrected typo in NTNet Scanner circuits' name, make sure to update your blueprints.
    • -
    -

    Toriate updated:

    -
      -
    • Added magnetic weapons to techwebs nodes
    • -
    • Magrifle magazine now has 24-round capacity, magpistol has 14-round capacity
    • -
    • rebalanced magrifle projectiles to deal more damage overall on a full burst, but less individually
    • -
    • fixed broken sprites for magrifles
    • -
    -

    UI Changes updated:

    -
      -
    • The Scan with Debugger/Device button now reads Copy Ref and no longer sends you to the circuit's page when clicked
    • -
    • The assembly's menu is now slightly wider
    • -
    • The advanced in "integrated advanced medical analyser" is now abbreviated to adv.
    • -
    -

    Xhuis updated:

    -
      -
    • The preference to lock action buttons in place is now correctly saved across rounds.
    • -
    • Removing and printing integrated circuits will now attempt to place them into a free hand.
    • -
    • You can now hit an integrated circuit printer with an unsecured electronic assembly to recycle all of the parts in the assembly en masse.
    • -
    • You can now recycle empty electronic assemblies in an integrated circuit printer!
    • -
    • Integrated circuit printers now have sounds for printing circuits and assemblies.
    • -
    • The RPG loot event will no longer break circuit analyzers.
    • -
    -

    coiax updated:

    -
      -
    • Transference potions now just rename the mob that you are transferring into with your name, rather than your name plus the old name of the mob.
    • -
    • Centcom now reports that thanks to extensive bioengineering, apples and oranges now taste of apples and oranges, rather than nothing as they did before.
    • -
    -

    deathride58 updated:

    -
      -
    • Input boxes for emotes are now larger. Check it out with the *subtle and *custom commands. This also applies to the M hotkey.
    • -
    • Synced with upstream. Again. For the hundredth time probably. Check the github for more details.
    • +
    • Night shift no longer ignores rooms whose APCs are in port or starboard central maintenance.
    • +
    • Inserting brains into MMIs and then into mechs now works again.
    -

    08 February 2018

    -

    Cebutris updated:

    +

    04 March 2018

    +

    DaedalusGame updated:

      -
    • Knight badges, sprites courtesy of Toriate! They're functionally identical to IDs but look sexier and can be recolored!
    • -
    • Lavaknights now spawn with Knight Badges!
    • -
    • Stunswords! Stunbatons that look like swords. That's all.
    • -
    -

    CitadelStationBot updated:

    -
      -
    • Players can now have a verb in the ooc tab to see their own tracked playtime
    • -
    • fixed admin bypass not using the right proc
    • -
    • Lavaland ghost roles should now show up in the playtime report
    • -
    • fixed the syringe getting a transfer amount of 0 if the contents of it are 0, intended feature was probably to check the target and not the syringe itself for clamp.
    • -
    • Reduce clock work mob death sound file's volume to 80%
    • -
    • Observers can now view the atmospheric contents of the tile they're floating above.
    • -
    • Jaunting wraiths should now always be facing the correct direction
    • -
    • All Cargo Techs now come equipped with a standard supply Export Scanner! Get to selling!
    • -
    • Emagged airlocks can now be deconstructed simply by crowbarring when the panel is open
    • -
    • foam and smoke now get 4x the reagents as they should according to the comments
    • -
    • fixes pyrosium and cryostylane not heating or cooling humans at all
    • -
    • fixes cryostylane cooling beakers to negative kelvin, it's now limited to what the description says
    • -
    • fixes cryostylane cooling people to negative body temperature
    • -
    • removed redundant check in trans_to
    • -
    • fixes a runtime when total_volume is 0 in copy_to
    • -
    • Gas reagents (o2, plasma, ...) now dump out gas based on container temperature instead of room temperature
    • -
    • Bananium shows up on mining scanners again
    • -
    • min player req for rev is 30 now
    • -
    • Weather and certain events have been updated to use Z traits.
    • -
    • The Staff of Storms now correctly starts and ends storms if used from inside lockers.
    • -
    • Weather telegraph messages are now shown to those inside lockers and mechs.
    • -
    • Radio jammers no longer affect other z-levels.
    • -
    • engine goggles set to t-ray mode will no longer show pipes with the wrong rotation.
    • -
    • cables now show up on t-ray scans.
    • -
    • pulling claw can now only passively grab
    • -
    • Infrared beams now update instantly.
    • -
    • Fixed occasional runtimes when ion storms or overflow would replace an existing law.
    • -
    • Emergency lights will give off light again
    • -
    • Fixed eye damage not being applied if it was exactly 3.
    • -
    • You can no longer weld airlock assemblies for infinite materials
    • -
    • Clockwork armaments are no longer named "arnaments".
    • -
    • Fixed being able to rotate things in only one direction.
    • -
    • The Syndicate Chameleon Kit is now available during rounds of lower population. Because of course you can have an e-sword and revolver without restriction but disguising and RP is verboten because we deathmatch station now.
    • -
    • Ore boxes have a new sprite
    • -
    • You can alt-click microwaves to turn them on
    • -
    • Academy is now part of the random station names.
    • -
    • made fire colored according to blackbody radiation and rule of cool.
    • -
    • some kind of lightning texture
    • -
    • Coffins have a new sprite
    • -
    • Solar panels have new sprites
    • -
    • Attention, space explorers! Nothing is out of your reach with the ACME Extendo-Hand (TM)! With it, you can get a WHOLE EXTRA TILE OF REACH! Hug or punch your friends from a whole 3 feet away! Win one from an arcade machine or make one in the Misc. tab of your crafting menu today!
    • -
    • Blood contracts now only show living players and real names
    • -
    • Turrets now check for borgs. Syndicate turrets are nice to emagged borgs too!
    • -
    • nerfs power cells from a insane max possibility
    • -
    • Space ghost syndicate comms guy removed.
    • -
    • Removed the now-unused revenant spawn landmark.
    • -
    • Some airlock animations should no longer be glitchy and restart in the middle
    • -
    • The ability to throw drinks without spilling them has been moved from something bartender's just know how to do to a book that they spawn with, the ability has also been made into a toggle.
    • -
    • Any number of people can read the book to learn the ability, and it can also be ordered in the bartending crate in cargo. Bartenders are encouraged to keep their trade secrets close to their stylish black vests.
    • -
    • Destroying windows will now spawn tiny shards
    • -
    • The Rapid Piping Device can now dispense transit tubes.
    • -
    • Morgue trays now detect if a body inside them possesses a consciousness, and alerts people nearby
    • -
    • The pirate ship can now fly again.
    • -
    • Research investigate logs now actually include the name of the researcher.
    • -
    • Defibrillator mounts no longer spam the error log while empty.
    • -
    • Fixes Noblium Formation being multiplicative, so having 500 moles of tritium and 500 moles of nitrogen no longer produces 2500 moles of noblium (it should correctly produce 10 moles)
    • -
    • Fixes most reactions deleting more gas than exists and making gas out of nowhere
    • -
    • Fixes Stim Formation invoking a byond bug and not using its intended polynomial formula
    • -
    • Fixes Cryo Cells not having garbage_collect and clamping
    • -
    • Fixes Rad Collectors not having clamping
    • -
    • Fixes Division by Zero when Fusion has no impurities.
    • -
    • Removes a redundant line in lungs
    • -
    • Fixes rad_act signal not firing from turfs, living mobs, rad collectors and geiger counters
    • -
    • Pressure damage now takes effect in certain situations where it should have but did not.
    • -
    • Explosive holoparasites must now be adjacent to turn objects into bombs, instead of being able to do so from any range.
    • -
    • NT Scientists have started looking into data from small-scale detonations and found that there's still potential data to be gathered from explosive yields lower than 4.184 petajoules
    • -
    -

    CosmicScientist updated:

    -
      -
    • tomatoes and similar ovary laden edibles are fruit, not veg, beware plasmamen and mothmen
    • -
    -

    Dax Dupont updated:

    -
      -
    • Autolathe now consumes reasonable amounts of power when inserting materials
    • -
    • Fixed conveyor belt power usage.
    • -
    • Fans of clown photography have successfully lobbied Nanotrasen to include camera and camera accessories designs in the autolathe.
    • -
    • Brings material values for the camera in line with other devices.
    • -
    • The tapes printed by autolathes now come in random colors.
    • -
    • Beakers and beaker-like objects now get put in your hand on ejection from chemistry devices.
    • -
    • Fixed missing wheat fridge on omega and removes a duplicate pipe.
    • -
    • You now need to examine engravings to pop open the menu.
    • -
    • Autolathe now repeats it's animation while printing.
    • -
    • Eminence won't get spammed by tile crossing now.
    • -
    • After 3 years of intensive research by Nanotrasen's elite team of chefs, rice dishes such as rice pudding are no longer considered salads.
    • -
    • Cyborgs can now be upgraded to be h-u-g-e! Only a cosmetic effect!
    • -
    • Hijack objectives will only be given out if there are 30 or more players.
    • -
    • Moved the lathe from box's cargo room to box's cargo office which miners now can access.
    • -
    • Harmonized medbay storage access requirements so all maps allow all medbay personnel into medbay storage like on Meta and Delta.
    • -
    • Moved service lathes into a dedicated service hall/storage area if they weren't accessible by janitor or bartender.
    • -
    • Added logout button to the record screen in the security records console.
    • -
    • Allows you to print photos that are in the security records.
    • -
    • Regular cyborgs now start with a normal high capacity cell instead of a snowflake cell. Resulting in less confusing and 2.5MJ more electric charge.
    • -
    • Fixed name of the upgraded power cell
    • -
    • Removed duplicate cell giving code in transformation proc.
    • -
    • Fixed the crematorium on meta and box.
    • -
    • Posibrains have gotten a small firmware update, they will now play a sound on successful activation.
    • -
    • You can now insert holodisks into cameras and take a static holographic picture of someone!
    • -
    • Hologram recordings can now be offset slightly.
    • -
    • Killing a revenant will now result in an unique shuttle to be able to be bought. You probably won't like it though.
    • -
    • Fake emag now available.
    • -
    • Fixed borgs applying cuffs on people without the right number of arms.
    • -
    • Handcuff code has been rejiggled and snowflake code has been removed.
    • -
    • Removed unused cable cuffs module stuff for borgs.
    • -
    • Supermatter can again blow up again on space tiles.
    • -
    -

    Dax Dupont & Coiax updated:

    -
      -
    • Praise the lord for he has granted thy chaplains, wizards, revenants and eminences with holy vision. They can now see blessed tiles.
    • -
    -

    DeityLink updated:

    -
      -
    • You can now see the rays from a holopad displaying a hologram!
    • -
    -

    Denton updated:

    -
      -
    • Fixed Bubblegum's description.
    • -
    • Rearranged the mining vendor items by price and item group.
    • -
    • In order to promote back-breaking physical labor, Nanotrasen has additionally made conscription kits available at mining equipment vendors.
    • -
    • Fungal tuberculosis spores can no longer be synthesized by machinery.
    • -
    -

    Denton ShizCalev Kor Kevinz000 (original idea) updated:

    -
      -
    • Due to budget cuts, the shoes shipped with chameleon kits no longer prevent slipping. The premium version is unchanged and still sold separately.
    • -
    • To compensate, the chameleon kit cost was lowered by 2 TC and the minimum crew limit removed.
    • -
    -

    Epoc updated:

    -
      -
    • Removed Sulfuric Acid requirements from computer parts
    • -
    • Slows Simple Clown mobs
    • -
    • Soap now has inhand sprites
    • -
    • Belt items now have inhand sprites
    • -
    -

    Evsey9 updated:

    -
      -
    • Integrated Circuit Drones are now bulky to improve safety ratings, and therefore, cannot be stored in normal backpacks or pockets, but now can accept modules that bulky circuit machinery can.
    • -
    • Grabbers can now grab items up to the size of the circuit assembly they are in.
    • -
    • Grabbers cannot store circuit machinery the same or larger size than the circuit assembly they are in.
    • -
    • Throwers now can throw items up to the size of circuit assembly they are in.
    • -
    -

    GuppyLaxx updated:

    -
      -
    • Fixes the Ketrazine recipe
    • +
    • changed the formula of liver damage so weak alcohol does barely anything while strong alcohol is still threatening

    Iamgoofball updated:

      -
    • Power cells explosions are now logarithmic
    • -
    • Minor code cleanup on the wirer
    • +
    • RIP Billy, you'll be the boss of heaven's gym now :(
    • +
    +

    Jalleo updated:

    +
      +
    • Added a cancel button to nuke timer (and others). You no longer have to make it 0 just a click to cancel.
    • +
    • You can now easily set how many "INSERT JOB ROLE HERE" you want in the manage job selection in the admin panel. If you put zero in it will set it to the current amount of filled positions.
    • +
    • moved a small amount of wording around in a admin browser to make it cleaner looking. Along with a few updated checks for certain things.
    • +
    +

    Naksu updated:

    +
      +
    • First pass on cleaning up junk defines and unused code
    • +
    +

    RandomMarine updated:

    +
      +
    • The ore redemption machine no longer has 'release all' buttons. Remember to take just what you need and leave some for the other departments.
    • +
    + +

    03 March 2018

    +

    Cebutris updated:

    +
      +
    • Washing a glove with a white crayon will make it look like a white glove, instead of a latex glove. Instead, mime crayons make gloves look latex
    • +
    +

    Denton updated:

    +
      +
    • Burglar alarms in the Pubbystation library and RD office can now be disabled properly.
    • +
    • Fixed Pubbystation's RD office shutters.
    • +
    • Added missing engineering and kitchen lockdown shutters on Pubbystation.
    • +
    • Pubbystation: Added privacy shutters to the CMO and RD offices. Added space shutters to the HoS office. Replaced the RD office's directional windows with fulltile ones.
    • +
    • Added a second blast door to the Pubbystation gulag shuttle lockdown.
    • +
    • Due to pressure from the space OSHA, Pubbystation has installed missing fire alarms and firelocks.
    • +
    • Split the Pubbystation library into two areas with their own APCs.
    • +
    +

    Naksu updated:

    +
      +
    • Admins can now easily spawn cargo crates
    • +
    • Admins can now toggle antag, med, sci, engineering huds and maximum ghost brightness with just one button.
    • +
    +

    Robustin updated:

    +
      +
    • Meth now deals 1-4 brain damage while active, up from 0.25
    • +
    +

    Selea updated:

    +
      +
    • reduce CD of all non manipulative non list output circuits to 0.1
    • +
    • add to locomotion circuit output ref with object, which assembly was bumped to.
    • +
    • upgrade disks have multiuse. balance:iducer efficiency= efficiency/number of inducers on 1 tile.
    • +
    • unnerf fuel cell.about 3-5 times.Make blood more powerful.
    • +
    +

    ShizCalev updated:

    +
      +
    • You can now hotswap tanks in a canister or gas pump by clicking it with a new tank!
    • +
    • You can now also close a canister's valve and remove the tank inside it by alt-clicking it.
    • +
    + +

    02 March 2018

    +

    AlexTheSysop updated:

    +
      +
    • C4 logging now shows correct location
    • +
    +

    Astral updated:

    +
      +
    • Space is now prettier
    • +
    +

    DaedalusGame updated:

    +
      +
    • Machines can now be constructed anchored or unanchored, if the resultant machine could be unanchored.
    • +
    +

    Dax Dupont updated:

    +
      +
    • Medals now show the commendation text in the description.
    • +
    +

    Denton updated:

    +
      +
    • Cargo packs have been grouped and sorted alphabetically. Station goal crates are now in the Engineering section.
    • +
    • The cargo security section has been split into security/armory.
    • +
    • Grouped all gas canisters and fuel/water tanks together in one section with raw materials.
    • +
    • Fixed a few cargo pack descriptions.
    • +
    • Cyclelinked three airlock pairs on Boxstation (port bow solars and the area that connects RnD with medical).

    Improvedname updated:

      -
    • You can now get shockcollars from the kinkmate for the price of an coin
    • -
    • adds security skirts to the loadout
    • -
    • more loadout stuff
    • -
    • Adds kinkmate board
    • -
    • you can now construct kinkmates with the construction kits from cargo
    • -
    • Organizes the loadout
    • -
    • Adds disco ball to cargo
    • +
    • chem implants can no longer be self triggered
    -

    Jittai updated:

    +

    Jittai / ChuckTheSheep updated:

      -
    • All color inputs now use the current color, of the thing being colored, as default choice.
    • -
    • New Morgue Tray sprites.
    • -
    • New Crematorium sprites.
    • -
    • New Horizontal Coffin Sprites
    • -
    • Some of the Morgue Trays and Crematoriums on Box, Delta, and Meta have been re-positioned to make use of their new directional states.
    • -
    • Cloning doesn't runtime (and indefinitely get stuck) on cloning non-humans.
    • +
    • New chemdispenser (and minidispenser) sprites.
    • +
    • New soda/beer dispenser sprites, with directional states.
    -

    Kor updated:

    +

    Mey-Ha-Zah updated:

      -
    • Fixed mecha grav catapults not being included in techwebs.
    • +
    • Heck suit sprites are prettier, with more contrast.
    -

    MMMiracles updated:

    +

    MoreRobustThanYou updated:

      -
    • Syndicate and pirate mobs now give off light when appropriate
    • -
    • A once-thought abandoned arctic post has recently had its gateway coordinates re-enabled for access via the Gateway link. Contact your local Exploration Division for more details.
    • -
    • A brand new space-farm, where your family sends all your old/sick catpeople to live out the rest of their days being free to roam the acres and chase the field grayshirts.
    • -
    -

    Mark9013100 updated:

    -
      -
    • Cloning data disks can now be constructed after researching the Genetic Engineering technode.
    • -
    -

    More Robust Than You updated:

    -
      -
    • Fixed monkey teams
    • -
    • The Lepidopterian language now has less spaces in it
    • -
    • You can now defib monkeys and aliums
    • -
    • Monkeys can also use defibs now, too!
    • -
    • Holorays are now properly deleted if you switch holopads automatically
    • -
    -

    MrDoomBringer updated:

    -
      -
    • The RnD department can now develop firmware upgrades to the Express Supply Console, unlocking advanced cargo drop pods!
    • -
    • NanoTrasen's Creative Psychology Initiative has brought new training to all crewmembers to foster rapid, innovative problem-solving! You can now kill yourself in so many more ways!
    • -
    • Conveyor Belts now look better when they are crowbar'd off the ground.
    • -
    • Due to complicated quantum-bluespace-entanglement shenanigans, the Bluespace Drop Pod upgrade for the express supply console is now slightly more difficult to research.
    • +
    • SCP-294 should no longer have overlay problems

    Naksu updated:

      -
    • Pneumatic cannons no longer misbehave when their contents such as primed grenades get deleted (explode)
    • -
    • Attempting to join into a command role as a nonhuman species no longer lets you keep your nonhuman species languages if you are transformed into a human because of a config option
    • -
    • Warp whistle can no longer pick up its user from inside various animation/in-between states and effects such as transformations, jellypeople split, talisman of immortality effect period or rod form.
    • -
    • Removed actual reagent quadrupling added in #34485
    • -
    • Removed the foam effect combining feature, hopefully to be replaced with something less completely and utterly broken
    • -
    • Subjects without hearts now display as unsuitable for abductor experiments when probed with the advanced baton.
    • -
    -

    Naksu and kevinz000 updated:

    -
      -
    • Ores are no longer completely impervious to explosions, but rather "proper" ores are destroyed by the strongest explosions and sand is blown away everything but the weakest ones. This shouldn't affect ore spawns from explosions
    • -
    • Lavaland bomb cap reduced to double the station bombcap.
    • -
    • Ores are now stackable. Ore stacks now have the appearance of loose ores and are not called "sheets" by machines that consume them.
    • -
    • Material container component now uses the singular names of stack objects.
    • -
    • /obj/item/ore/Crossed() is now removed in favor of the ore satchel utilizing a redirect component
    • -
    -

    ORM Movement updated:

    -
      -
    • Box Station ORM Moved to 2 tiles south of Cargo Office Door.
    • -
    • Delta Station ORM moved to the southernmost window of Cargo.
    • -
    • Box, Delta, Meta stations now have Windoors with Mineral Storage access blocking them.
    • -
    -

    Ordo updated:

    -
      -
    • Adds Ketrazine, a powerful but dangerous combat stim which the crew can synthesize
    • +
    • SNPCs have been removed.

    Poojawa updated:

      -
    • Supply Console is locked to Cargo Access only.
    • -
    • so many things.
    • -
    • Vore eject gun given to medical lockers, same as defib. Looks like a dragnet. will eject people out of all vore bellies. May need to fire more than once.
    • -
    • Dogborg item blacklist is a thing again, scrubpups are able to process items into fuel.
    • -
    • Dogborgs are able to consume devourable simple mobs for fuel or for weird ERP.
    • -
    • Stargazer slimes are admin-only, way too much of a bad idea to hand out willy nilly.
    • -
    • Genital layering refractored to use mutable appearance. Also no longer always present on character screen.
    • -
    • probly other things I forgot I tweaked, like cake hat nerfing
    • -
    -

    Robustin updated:

    -
      -
    • Fixed frost oil (cryosting) sending insulated crewmembers below absolute zero temperatures.
    • -
    • Fixed damaging cold temps being a death sentence to simple mobs (they wouldn't heat back up to safe temps at room temperature).
    • -
    • Refactored human temperature code, insulating clothing now helps you stay warm but going unprotected will help you cool off. However, you will now benefit from colder temps when you're overheating even in full EVA/hardsuit gear and you will warm up faster at room temperature in insulated gear as well (i.e. putting on a winter coat will no longer suppress your temperature if your already cold).
    • -
    • Fixed monkeys slowly freezing to death
    • -
    • A new cocktail: The Nar'Sour. Made from blood, demonsblood, and lemon juice, this cocktail is known to induce a slightly different type of slurring when imbibed.
    • -
    • Clockwork marauders now take more time (+3s) and power (7x) to create.
    • -
    • The "recent marauder" time limit is now 60 seconds, up from 20. The limit now has a significantly smaller effect on summon time but will act as a further cap on marauder summoning until it has passed.
    • -
    • The marauder cap will now only account for living cultists.
    • -
    • The Peacekeeper Borg's "Peace Hypospray" now includes the "Pax" reagent, which prevents the subject from carrying out many forms of direct harm.
    • -
    • Command reports should now properly weight the appearance of modes based on their existence in our actual game rotation.
    • -
    • The current mode now has a 35% chance of not appearing in the report.
    • -
    • Vape Pens (e-cigs) will now consume reagents proportional to the vape size and static smoke production.
    • -
    • The "construct shell" option from the cult archives structure will now only yield one shell instead of two.
    • -
    • Sacrificing suicide victims will now only yield an empty shard.
    • -
    • Synths and Androids are no longer available species at the magic mirror.
    • -
    -

    Robustin and More Robust Than You updated:

    -
      -
    • A heart disease event has been added. The cure is heart replacement surgery. Effects of cardiac arrest are halted by the chemical Corazone. Once cardiac arrest begins at Stage 5, the disease can be cured by a defibrillator or from a lucky electric shock.
    • -
    • Using gym equipment will now grant a hidden exercise buff that prevents heart disease for 20 minutes.
    • -
    -

    SPACE CONDUCTOR updated:

    -
      -
    • Shuttles will throw you around if ya don't buckle in
    • -
    -

    ShiggyDiggyDo updated:

    -
      -
    • You can now win stylish steampunk watches at your local arcade machine!
    • -
    • You no longer win double the articles at the arcade
    • -
    • You can now win Toy Daggers at your local arcade!
    • -
    -

    ShizCalev updated:

    -
      -
    • Clockcultists and revolutionaries can no longer be mindswapped.
    • -
    • The Syndicate Comms Officer ghost role has been readded with a minor chance of actually existing.
    • -
    • Fixed some broken cultist & wizard antagonist ghost polls.
    • -
    -

    Slignerd updated:

    -
      -
    • Following an immense number of complaints filed by security and command personnel, the Captain's spare ID will from now on be placed inside his locker. We fail to see how this would help the Captain access the spare in the event he lost his ID, but the complainants have been VERY insistent.
    • -
    -

    Toriate updated:

    -
      -
    • Added Polychromic Athletic Shorts
    • -
    • added greyscaled athletic shorts
    • -
    • optimized polycloth code, modularized it more
    • -
    • all polychromic color inputs now use the previously selected color as the default argument, as per #5090
    • -
    • Added the CMO's Turtleneck, spawns in CMO's locker
    • -
    • added the CMO's Turtleneck sprites, worn and item
    • -
    • fixed the Foam Force Mk.37F pistol ejecting "casings" that are utterly broken
    • -
    • fixed catknights not having cat ears
    • -
    • Readded classic kitty ears as "neko" ears and tails in the character creator
    • -
    -

    WJohnston updated:

    -
      -
    • Wirecutter greyscaling is now less ugly
    • +
    • Cyborg defib units are now actually functional

    XDTM updated:

      -
    • Slimepeople can now properly swap between bodies.
    • -
    • Slimes no longer attack people with their same faction.
    • -
    • Fixed a bug where slimes wouldn't eat neutral mobs.
    • -
    • Slimepeople and Jellypeople can now speak the slime language.
    • -
    • Slimes now only speak slime language, although they still understand common.
    • -
    • Slimepeople are no longer virus immune.
    • -
    • The above change fixes a bug that made black slime cure itself.
    • -
    • Fixes intelligence potions removing previously known mob languages
    • -
    • Slime scanning now has a more readable output, especially when scanning multiple slimes at once
    • -
    • Eggs from the abductor egg gland now have a random reagent instead of acid
    • +
    • Bath Salts now induce psychotic rage, but cause much more brain damage.

    Xhuis updated:

      -
    • Servants can now cancel warps by clicking the button again, instead of having to manually interrupt it by doing something like picking up an item from their pocket.
    • -
    • Emergency lights now function correctly.
    • -
    • Fleshmend can no longer be stacked several times at once.
    • -
    • Fleshmend no longer heals changelings who are on fire, and heals burn damage half as quickly as brute and oxygen damage.
    • -
    • Fleshmend has been refactored into a status effect.
    • -
    • Servant golems no longer appear in the magic mirror race list.
    • -
    • Races that have eyes that look different from regular humans' no longer have white eyespots where human eyes appear.
    • -
    • Brass skewers now must be at least one tile apart.
    • -
    • Steam vents can no longer be placed within cardinal directions of other steam vents, and will not hide objects they're placed on top of.
    • -
    • Securing pipe fittings now transfers fingerprints to the new pipe.
    • -
    • Servant cyborgs with the Standard module now correctly have Abscond.
    • -
    • The firelock below the Circuitry Lab airlock on Boxstation will no longer cover it up when the airlock is open.
    • -
    • Integration cog power generation has been increased to 10 W per second (up from 5 W per second.) Power consumed from the APC remains at 5 W per second.
    • -
    • Integration cogs will now continue generating power at half-speed when the APC they are in has no energy.
    • -
    • Brass chairs now stop spinning after eight rotations, so you can't crash the server with them.
    • -
    • Nanotrasen's anomalous materials division has recently experienced a containment breach, during which a certain pizza box went missing. Be on the lookout for any slipups in cargo.
    • -
    • Pizza margherita is now named "pizza margherita" (the proper way!) instead of just "margherita."
    • +
    • Traits! You can now select up to three positive, negative, and neutral traits in the character setup. You can choose up to six traits based on combinations varying by the amount of points you earn with negative traits and spend with positive ones.
    • +
    • You can now splash metal sheets with copper to make bronze sheets, which you can make "clockwork" things out of.
    -

    Xhuis & Jigsaw updated:

    +

    YPOQ updated:

      -
    • Traitor clowns can now purchase the reverse bear trap, a disturbing head-mounted execution device, for five telecrystals.
    • +
    • The assault pod can be launched again.
    -

    Xhuis, Cosmic, Fwoosh, and epochayur updated:

    +

    uraniummeltdown updated:

      -
    • Added pineapples to botany, and a recipe for Hawaiian pizza.
    • +
    • The chatbar now has OOC and Me buttons
    • +
    • The chatbar font-size is smaller
    -

    Zna12 updated:

    + +

    27 February 2018

    +

    Astral updated:

      -
    • Added the AM4-B, Zero's personal version.
    • -
    • Added the AM4-C, An autolathe craftable version. (Hidden behind the hacking like the others.)
    • +
    • blood cultists can now use a nar nar plushie as an extra invoker for runes!
    -

    coiax updated:

    +

    Iamgoofball updated:

      -
    • The Free Golem Ship no longer has a teleport beacon.
    • -
    • Jaunters no longer have a special effect when teleporting golems.
    • -
    • Fake nuclear disks can only be identified by the captain, observers, nuclear operatives, seeing where the pinpointer points, or attempting to put it into a nuclear device.
    • -
    • Fake nuclear disks "respawn" on the station just like the real one.
    • -
    • Nuclear operatives that wish to fail in style can purchase Centcom Official and Clown costumes. They can also buy a defective chameleon kit.
    • -
    • Syndicate intelligence potions also grant an internal syndicate ID card to the simple animal granted intelligence. This effectively means that Cayenne can open the airlocks on the Infiltrator.
    • -
    • Mobs will now start with a random nutrition amount, between hungry and mildly well fed.
    • -
    • Nanotrasen Security Division has reported that syndicate comms agents, both on lavaland and in space, have had training in "Codespeak", a top secret language for stealthy communication.
    • -
    • Romerol is now effective on dead bodies, not just ones that are still alive.
    • +
    • Look sir, free crabs!
    • +
    +

    Poojawa updated:

    +
      +
    • Tesla Corona Analyzers! Study the seemingly magic Edison's Bane for supplemental research points!
    • +
    +

    Robustin updated:

    +
      +
    • The heart attack event will now actually make the victim acquire the heart disease
    • +
    • Clicking the chatbox link will let you orbit the victim
    • +
    • The event is now significantly more sensitive to junk food. Recent consumption of multiple junk food items will triple your chances of having a heart attack (exercise will still block it).
    • +
    +

    selea updated:

    +
      +
    • fixed floorbot
    • +
    • fixed cleanbot
    • +
    • improved pathiding in case of given minimal distance;improved sanitation
    • +
    + +

    26 February 2018

    +

    DaedalusGame updated:

    +
      +
    • livers don't unfail automatically every second life cycle you have to get a new one or get some corazone stat
    • +
    • increased liver damage from alcohol significantly because apparently your liver regenerates faster than you can chug unless you drink 100 liters of bacchus blessing
    • +
    • fixed cyber livers thinking they should fail at half durability
    • +
    +

    MMMiracles updated:

    +
      +
    • Added tinfoil hats, headgear that can help protect against government conspiracies and extra-terrestrials. Found in hacked autolathes.
    • +
    +

    Robustin updated:

    +
      +
    • Twisted Construction will now consume ALL available plasteel in a stack.
    • +
    • Runes will no longer count the original invoker more than once.
    • +
    +

    XDTM updated:

    +
      +
    • Wizard spells and items can now be resisted/ignored with anti-magic items/clothing such as null rods!
    • +
    • Revenant spells can now be resisted with "holy" items like null rods and bibles.
    • +
    • Wizard hardsuits are now magic immune, but not holy.
    • +
    • Immortality Talismans now grant both spell and holy immunity.
    • +
    • Inquisitor Hardsuits already granted spell and holy immunity, but now they do it properly instead of having a null rod embedded inside.
    • +
    • Holy Melons now grant holy immunity.
    • +
    • Operating computers now display the chemicals required to complete a surgery step, if there are any.
    • +
    • Completing a surgery without the required chems will always result in failure, instead of a success with no effect.
    • +
    • You can no longer gain the same trauma more than once.
    • +
    • You can no longer gain more than a certain amount of brain traumas per resilience tier. (Example: You cannot gain 4 mild traumas, but you can gain 3 mild and 1 severe)
    • +
    • Abductors' trauma gland now gives traumas of random resilience, instead of lobotomy every time.
    • +
    +

    Xhuis updated:

    +
      +
    • Instead of starting unable to clone circuits at all, circuit printers can now print circuits over time from roundstart. The formula for this is equal to (metal cost / 150) seconds, with a maximum of 3 minutes. You can see printing progress by using the printer's interface, and you can print normal components during this time.
    • +
    • If circuit printing is disabled in the config, cloning remains unavailable.
    • +
    • The upgrade disk to allow circuit printers to clone circuits has been replaced with an upgrade disk to make circuit cloning instant.
    • +
    • Both circuit printer upgrade disks now cost 5000 metal and glass, down from 10000.
    • +
    • Butchering has been refactored.
    • +
    • Some items now take longer to butcher, and have a chance to harvest fewer items, like spears. Others, however, are faster, like circular saws.
    • +
    • Certain creatures will always drop certain items on butchering, regardless of butchering effectiveness or chances.
    • +
    • Items that are very effective at butchering may yield bonus loot from butchered creatures!
    • +
    • Plain hamburgers may now spawn as steamed hams with a very low chance.
    • +
    + +

    25 February 2018

    +

    Astral updated:

    +
      +
    • Traitor CMOs and Chemists, for 12 TC, can now get a reagent dartgun, which is capable of synthesizing it's own syringes, but does so slowly, and can be easily identified as syndicate by anyone who isn't blind!
    • +
    +

    Cebutris updated:

    +
      +
    • Toxin loving species now properly take toxin damage from liver failiure
    • +
    +

    DaedalusGame updated:

    +
      +
    • enables the RPED to construct/replace other parts commonly used in machines (igniters, beakers, bs crystals)
    • +
    • fixes part ratings of cells so slime cells are correctly more desirable than bluespace cells and other such nonsense
    • +
    • shivering symptom now works properly instead of only cooling you if you're already cold
    • +
    • fixed bodytemp going negative in a few cases
    • +
    • removes input/output plates and changes autogibbers to use input dir
    • +
    • The last scientists have reported that thermonuclear blasts triggered by so called 'power gamers' have shorted the doppler array. We've readjusted the ALU and are confident that this will not happen again.
    • +
    +

    Denton updated:

    +
      +
    • The outer airlocks of most space ruin airlocks are now cycle linked.
    • +
    • The outer airlocks of various lavaland ruins and ships now cycle lock.
    • +
    • Players can no longer kill themselves by whispering inside clone pods.
    • +
    • The 'neurotoxin2' toxin has been renamed to Fentanyl.
    • +
    +

    Naksu updated:

    +
      +
    • Admins can now start the game as extended revs, a version of revs that doesn't end when head(rev)s are dead. Admins can also use the speedy mode, which nukes the station after 20 minutes.
    • +
    +

    Repukan updated:

    +
      +
    • Whiskey to the flask
    • +
    • Hearty Punch from the flask
    • +
    +

    ShizCalev updated:

    +
      +
    • Silicons no longer have to be adjacent to morguetrays to disable the alarms on then.
    • +
    +

    ThePainkiller updated:

    +
      +
    • Tweaked the inventory management of the black fedora to be more like the detective's
    • +
    +

    Xhuis updated:

    +
      +
    • Added Bastion Bourbon, which you can mix with tea, creme de menthe, triple citrus, and berry juice. When it's in your system, it will very slowly heal you as long as you're not in critical. When it's first added to your system, you heal an amount of each damage type equal to the volume taken in, with a max of 10. This is turned to a max of 20 for anyone in critical.
    • +
    • Added Squirt Cider, which you can mix with water, tomato juice, and nutriment. It's nutritious and healthy!
    • +
    • Reskinning objects now shows their possible appearances in the chat box.

    deathride58 updated:

      -
    • When it's night time in the server's timezone, all lights aboard the station will dim to simulate a graveyard shift. It's possible for lights to dim in the middle of a shift.
    • -
    • Citadel is now widescreen by default.
    • -
    • Cancelling the "Change equipment" command now works as expected again.
    • -
    • Light fixtures no longer use hardcoded values for their power and colour.
    • -
    • Cleaned up a bunch of useless ..()s in cit_screenshake.dm
    • -
    • The toggle animal digestion button has been moved to the object tab. This means observers running byond on low-end hardware will no longer get massive lagspikes when entering a tile adjacent to a simplemob.
    • -
    • The chatbox is now a liiiiittle darker to avoid contrasting as much with the dark UI
    • -
    • Genitals now reset properly between previews
    • -
    • The input bar is now located right underneath the chatbox
    • -
    • You can now toggle between the server's 21x15 view resolution and TG's default 15x15 view resolution in the game options menu. Look for the "Widescreen" entry in the game options menu.
    • -
    • Roundstart night lighting now works properly again.
    • +
    • Lights will now actually glow in the dark!
    -

    improvedname updated:

    + +

    22 February 2018

    +

    Buggy123 updated:

      -
    • Adds bz to cargo
    • -
    • adds kinkmate refill packages to cargo
    • -
    • adds yeehaw to the dj's disco soundboard
    • +
    • Nanotrasen has begun a campaign to inform their employees that you can alt-click to disable morgue tray beeping.
    -

    imsxz updated:

    +

    Jittai / ChuckTheSheep updated:

      -
    • Traitor clowns are now able to purchase clown bombs from their uplinks. Honk!
    • -
    • Clown bombs can now be placed via a small beacon, the same way normal syndicate bombs can be.
    • -
    • clown bomb payload now summons 50 clowns instead of 100
    • +
    • NT has stopped buying re-boxed storebrand Donkpockets and now stocks stations with real, genuine, tasty Donkpockets!
    -

    ninjanomnom updated:

    +

    MetroidLover updated:

      -
    • Functions that aren't intending on actually moving the shuttle yet don't send error messages to admins anymore when seeing if a shuttle *can* move.
    • -
    • Changeling clothing can get bloodied again.
    • -
    • Pointing at squeaky things doesn't make them squeak anymore.
    • -
    • Loaded templates now get placed on top of existing terrain so as to preserve baseturfs. This fixes survival pods walls breaking to lava as well as allows some future fixes.
    • +
    • rebalanced Ninja event to allow it to happen earlier.
    • +
    • fixed Ninja welcome text to no longer tell you to right click your suit.
    -

    oranges updated:

    +

    Naksu updated:

      -
    • removes ketrazine
    • +
    • removed unused poisoned apple variant
    -

    scrubs2009 updated:

    +

    Repukan updated:

      -
    • Candles last longer
    • +
    • fixed windoors dropping more cable than what was used to build them.
    -

    the hatchet man (i eat garbage code) updated:

    +

    Robustin updated:

      -
    • you shitlords picked the wrong virtual anime tits to fuck so im takin away your space bases experimental: lets be fair all you guys did in those was jack off to hentai, and not real man's gachimuchi
    • +
    • The clock cult's marauder limit now works properly, temporarily lower the marauder limit when one has recently been summoned.
    -

    tiji0 updated:

    +

    Super3222, TheMythicGhost, DaedalusGame updated:

      -
    • space kiwis can now be ordered from cargo
    • +
    • Adds a barometer function to the standard atmos analyzer.
    • +
    • Adds a new sprite for the atmos analyzer to resemble a barometer.
    • +
    +

    kevinz000, Denton updated:

    +
      +
    • Nanotrasen's RnD division has integrated all stationary tachyon doppler arrays into the techweb system. Record increasingly large explosions with them and you will generate research points!
    • +
    • Fixed a few typos in the RnD doppler array name/description.
    • +
    + +

    21 February 2018

    +

    Denton updated:

    +
      +
    • Renamed the IDs of various reagents to be more descriptive.
    • +
    • Fixed the descriptions of changeling adrenaling reagents.
    • +
    • Changed Santa event earliest start from 33 minutes & 20 seconds to 30 minutes. Changed shuttle loan earliest start from 6 minutes & 40 seconds to 7 minutes.
    • +
    • Tweaked the message you see when emagging meteor shield satellites.
    • +
    +

    Kevinz000 & Deathride58 updated:

    +
      +
    • A separate round time has been added to status panel. This will start at 00:00:00.
    • +
    • Night shift lighting [if enabled in the same configuration] will activate between station time 7:30 PM and 7:30 AM. This will dim all lights affected, but they will still have the same range.
    • +
    • APCs now have an option to set night lighting mode on or off, regardless of time.
    • +
    +

    Naksu updated:

    +
      +
    • Flightsuits should be controllable again
    • +
    + +

    20 February 2018

    +

    Anonmare updated:

    +
      +
    • Nanotrasen psychologists have identified new phobias emerging amongst the workforce. Nanotrasen's surgeon general advises all personnel to just buck up and deal with it.
    • +
    +

    AverageJoe82 updated:

    +
      +
    • Circuits integrity, charge, and overall circuit composition is displayed on diagnostic huds. If the assembly has dangerous circuits then the status icon will display exclamation points, if the assembly can communicate with something far away a wifi icon will appear next to the status icon, and if the circuit can not operate the status icon will display an 'X'.
    • +
    • AR interface circuit which can modify the status icon if it is not displaying the exclamation points or the 'X'.
    • +
    • Locomotive circuits can no longer be added to assemblies that can't use them.
    • +
    • Fixed a typo in the grenade primer description.
    • +
    • Added flags to circuits that help group subsets of circuits and regulate them.
    • +
    +

    DaedalusGame updated:

    +
      +
    • fixed ghost spawners showing up in the spawner menu when you can't use them
    • +
    • fixed walls under doors breaking to space
    • +
    • changed doors to no longer spawn on top of walls
    • +
    +

    Dax Dupont updated:

    +
      +
    • Adds special tutorial holopads for the hazard course.
    • +
    +

    Jittai updated:

    +
      +
    • Ctrl+Clicking progresses through grab cycle on living mobs (not just humans)
    • +
    +

    Joan updated:

    +
      +
    • The crusher kit now includes an advanced mining scanner.
    • +
    • The resonator kit now includes webbing and a small extinguisher.
    • +
    • The minebot kit now includes a minebot passthrough kinetic accelerator module, which will cause kinetic accelerator shots to pass through minebots. The welding goggles have been replaced with a welding helmet, allowing you to wear mesons and still be able to repair the minebot without eye damage. feature: You can now install kinetic accelerator modkits on minebots. Some exceptions may apply. Crowbar to remove modkits.
    • +
    • Minebots now shoot 33% faster by default(3 seconds to 2). The minebot cooldown upgrade still produces a fire rate of 1 second.
    • +
    • Minebots are now slightly less likely to sit in melee like idiots, and are now healed for 15 instead of 10 when welded.
    • +
    • Sentient minebots are penalized; they cannot have armor and melee upgrades installed, and making them sentient will override those upgrades if they were installed. In addition, they move very slightly slower and have their kinetic accelerator's cooldown increased by 1 second.
    • +
    +

    NTnet circuit fix updated:

    +
      +
    • Now NTnet circuits can recieve sender adress properly.Also, now messages could be sended to multiple recepiens.
    • +
    +

    Xhuis updated:

    +
      +
    • Admins may now spawn a debug circuit printer that can always print circuits, and has infinite metal.
    • +
    • Buttons, number pads, and text pads in integrated circuits now correctly show their labels.
    • +
    • Integrated hypo-injectors can now correctly draw blood.
    • +
    • The circuit analyzer output has been slightly tweaked and includes usage instructions.
    • +
    • The round-end report now shows information about the first person to die in that round.
    • +
    • Added the dish drive. This machine, the future in plate disposal, can be researched from techwebs (Biological Processing) and built with a standard machine frame using two matter bins, a micro manipulator, and a glass sheet.
    • +
    • A circuit board for the dish drive can be found in the chef's and bartender's wardrobes.
    • +
    • You can hit a dish drive with any dish (like a plate or drinking glass), and the dish drive will convert it from matter to energy, allowing it to store an infinite amount of dishes. You can also interact with it to get things back from it.
    • +
    • Dish drives also have an automatic "suction" function that sucks in all loose dishes within four tiles. This can be toggled by activating its circuit board in-hand.
    • +
    • Dish drives automatically beam their stored dishes into any disposal unit that it can see within seven tiles every minute. You can toggle this by alt-clicking its circuit board.
    • +
    • Plastic surgery now lets you choose from a list of ten random names, so you can pick the one that you prefer.
    • +
    • Abductors performing plastic surgery can now give their target spooky subject names, with one normal name available for standard plastique.
    • +
    + +

    19 February 2018

    +

    DaedalusGame updated:

    +
      +
    • Fixed paper bins not catching fire properly
    • +
    • fixed multiserver mining formula
    • +
    +

    Improvedname updated:

    +
      +
    • Fried eggs don't require boiled eggs anymore and just normal eggs
    • +
    +

    Kevinz000 and Naksu updated:

    +
      +
    • Ore stacks will now initialize with proper visuals and no longer show a NO SPRITE text when you gather more than 20 ores to a stack.
    • +
    +

    XDTM updated:

    +
      +
    • Added three new techweb nodes: Advanced Surgery, Experimental Surgery, and Alien Surgery(requires abductor tech)
    • +
    • Added several new surgical procedures, which require these techweb nodes. To enable an advanced surgery, print its relative disk from a protolathe, and load it on an Operating Computer. Advanced surgery can only be performed at operating tables.
    • +
    • You can now intentionally fail surgical procedures by initiating them with disarm intent instead of help intent.
    • +
    • Brain traumas now have a custom resilience system. Some trauma sources can cause traumas which require more extensive treatment, such as the new Lobotomy surgery.
    • +
    • Traitors can now purchase a Brainwashing Surgery Disk for 5 TC.
    • +
    +

    Xhuis updated:

    +
      +
    • New blob tiles are no longer invincible after their blob's death.
    • +
    • Blob nodes no longer produce blob tiles even after the blob's death.
    • +
    +

    coiax updated:

    +
      +
    • Mime's Bane, a toxin that prevents people from emoting while it's in their system, can now be created by mixing 1 part Mute Toxin, 1 part Nothing and 1 part Radium.
    • +
    + +

    18 February 2018

    +

    More Robust Than You updated:

    +
      +
    • Actually fixes SCP 294 overlay problems
    • +
    +

    Naksu updated:

    +
      +
    • Exosuit fabricators can now build RPED and crew pinpointer upgrades for engineering and medical borgs respectively.
    • +
    +

    Ordo updated:

    +
      +
    • Adds a few new liquors to the bar, and a few new cocktails to boot!
    • +
    +

    Xhuis updated:

    +
      +
    • Crew pinpointers now fit on medical belts!
    • +
    +

    YPOQ updated:

    +
      +
    • Bicycles are rideable again
diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index c05ac6d022..8261d04e6a 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/mob/actions/actions_items.dmi b/icons/mob/actions/actions_items.dmi index b16c7e4263..ce7d000409 100644 Binary files a/icons/mob/actions/actions_items.dmi and b/icons/mob/actions/actions_items.dmi differ diff --git a/icons/mob/eyes.dmi b/icons/mob/eyes.dmi index 39f5f1a6f8..4bbe27f09d 100644 Binary files a/icons/mob/eyes.dmi and b/icons/mob/eyes.dmi differ diff --git a/icons/obj/clothing/glasses.dmi b/icons/obj/clothing/glasses.dmi index 5045ccce2b..e7bec8dbe4 100644 Binary files a/icons/obj/clothing/glasses.dmi and b/icons/obj/clothing/glasses.dmi differ diff --git a/icons/obj/recycling.dmi b/icons/obj/recycling.dmi index 7aaacf4524..4e072c9006 100644 Binary files a/icons/obj/recycling.dmi and b/icons/obj/recycling.dmi differ diff --git a/icons/obj/supermatter.dmi b/icons/obj/supermatter.dmi index 64e2675873..92a9dfe270 100644 Binary files a/icons/obj/supermatter.dmi and b/icons/obj/supermatter.dmi differ diff --git a/modular_citadel/code/datums/uplink_items_cit.dm b/modular_citadel/code/datums/uplink_items_cit.dm index ed412bb547..16130de96d 100644 --- a/modular_citadel/code/datums/uplink_items_cit.dm +++ b/modular_citadel/code/datums/uplink_items_cit.dm @@ -128,8 +128,6 @@ throw_speed = 2 throw_range = 4 w_class = WEIGHT_CLASS_BULKY - max_w_class = WEIGHT_CLASS_NORMAL - max_combined_w_class = 21 attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") resistance_flags = FLAMMABLE max_integrity = 150 diff --git a/modular_citadel/code/game/machinery/cryopod.dm b/modular_citadel/code/game/machinery/cryopod.dm index 6e10070011..9cd7c880a1 100644 --- a/modular_citadel/code/game/machinery/cryopod.dm +++ b/modular_citadel/code/game/machinery/cryopod.dm @@ -173,8 +173,8 @@ find_control_computer() return ..() -/obj/machinery/cryopod/proc/find_control_computer(urgent = 0) - for(var/obj/machinery/computer/cryopod/C in area_contents(get_area(src))) +/obj/machinery/cryopod/proc/find_control_computer(urgent = 0,area/A) + for(var/obj/machinery/computer/cryopod/C in A) control_computer = C break @@ -417,7 +417,7 @@ if(!Adjacent(user)) return - + if(target == user) visible_message("[user] starts climbing into the cryo pod.") else @@ -426,7 +426,7 @@ if(occupant) to_chat(user, "\The [src] is in use.") return - + close_machine(target) to_chat(target, "If you ghost, log out or close your client now, your character will shortly be permanently removed from the round.") diff --git a/modular_citadel/code/game/machinery/wishgranter.dm b/modular_citadel/code/game/machinery/wishgranter.dm index 33ee2e4e18..a383fe1c80 100644 --- a/modular_citadel/code/game/machinery/wishgranter.dm +++ b/modular_citadel/code/game/machinery/wishgranter.dm @@ -38,7 +38,7 @@ to_chat(user, "[powah] materializes into your hands!") else to_chat(user, "[powah] materializes onto the floor.") - var/obj/machinery/power/supermatter_shard/powerwish = new /obj/machinery/power/supermatter_shard(loc) + var/obj/machinery/power/supermatter_crystal/powerwish = new /obj/machinery/power/supermatter_crystal(loc) powerwish.damage = 700 //right at the emergency threshold powerwish.produces_gas = FALSE charges-- diff --git a/modular_citadel/code/game/objects/items/storage/firstaid.dm b/modular_citadel/code/game/objects/items/storage/firstaid.dm index cc42eb5d57..82d7df4a00 100755 --- a/modular_citadel/code/game/objects/items/storage/firstaid.dm +++ b/modular_citadel/code/game/objects/items/storage/firstaid.dm @@ -39,9 +39,14 @@ throw_range = 7 var/empty = FALSE item_state = "firstaid" - w_class = WEIGHT_CLASS_SMALL - max_combined_w_class = 5 //half that of regular kits - storage_slots = 5 + +/obj/item/storage/hypospraykit/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_w_class = WEIGHT_CLASS_SMALL + STR.max_combined_w_class = 5 + STR.max_items = 5 + STR.cant_hold = typecacheof(list(/obj/item/disk/nuclear)) /obj/item/storage/hypospraykit/regular icon_state = "firstaid-mini" @@ -107,7 +112,6 @@ name = "combat hypospray kit" desc = "A hypospray kit best suited for combat situations." icon_state = "tactical-mini" - max_w_class = WEIGHT_CLASS_NORMAL /obj/item/storage/hypospraykit/tactical/PopulateContents() if(empty) @@ -121,9 +125,14 @@ name = "deluxe hypospray kit" desc = "A kit containing a Deluxe hypospray and Vials." icon_state = "tactical-mini" - max_w_class = WEIGHT_CLASS_NORMAL - storage_slots = 6 - max_combined_w_class = 6 + +/obj/item/storage/hypospraykit/cmo/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_w_class = WEIGHT_CLASS_SMALL + STR.max_combined_w_class = 6 + STR.max_items = 6 + STR.cant_hold = typecacheof(list(/obj/item/disk/nuclear)) /obj/item/storage/hypospraykit/cmo/PopulateContents() if(empty) diff --git a/modular_citadel/code/modules/custom_loadout/custom_items.dm b/modular_citadel/code/modules/custom_loadout/custom_items.dm index c3421976fb..481a105749 100644 --- a/modular_citadel/code/modules/custom_loadout/custom_items.dm +++ b/modular_citadel/code/modules/custom_loadout/custom_items.dm @@ -316,13 +316,17 @@ icon_override = 'icons/mob/custom_w.dmi' icon_state = "darksheath" item_state = "darksheath" - storage_slots = 1 - rustle_jimmies = FALSE w_class = WEIGHT_CLASS_BULKY - max_w_class = WEIGHT_CLASS_BULKY - can_hold = list( + +/obj/item/storage/belt/sabre/darksabre/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 1 + STR.rustle_sound = FALSE + STR.max_w_class = WEIGHT_CLASS_BULKY + STR.can_hold = typecacheof(list( /obj/item/toy/sword/darksabre - ) + )) /obj/item/clothing/neck/cloak/green name = "Generic Green Cloak" diff --git a/modular_citadel/code/modules/custom_loadout/load_to_mob.dm b/modular_citadel/code/modules/custom_loadout/load_to_mob.dm index 64eec2ba06..c9aab1d906 100644 --- a/modular_citadel/code/modules/custom_loadout/load_to_mob.dm +++ b/modular_citadel/code/modules/custom_loadout/load_to_mob.dm @@ -54,7 +54,7 @@ var/obj/item/loaded = loaded_atom var/obj/item/storage/S = H.get_item_by_slot(slot_back) if(istype(S)) - S.handle_item_insertion(loaded, TRUE, H) //Force it into their backpack + S.SendSignal(COMSIG_TRY_STORAGE_INSERT,loaded, TRUE, H) //Force it into their backpack continue if(!H.put_in_hands(loaded)) //They don't have one/somehow that failed, put it in their hands loaded.forceMove(T) //Guess we're just dumping it on the floor! diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index 68780d0890..ebf114c2de 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -2,7 +2,8 @@ name = "Mammal" id = "mammal" default_color = "4B4B4B" - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,SPECIES_ORGANIC) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR) + inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "snout", "taur") default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "body_markings" = "husky", "mam_tail" = "husky", "mam_ears" = "husky", "mam_body_markings" = "husky", "taur" = "None") attack_verb = "claw" @@ -32,7 +33,8 @@ id = "avian" say_mod = "chirps" default_color = "BCAC9B" - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,SPECIES_ORGANIC) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR) + inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) mutant_bodyparts = list("snout", "wings", "taur", "mam_tail", "mam_body_markings", "taur") default_features = list("snout" = "Sharp", "wings" = "None", "taur" = "None", "mam_body_markings" = "Hawk") attack_verb = "peck" @@ -61,7 +63,8 @@ name = "Aquatic" id = "aquatic" default_color = "BCAC9B" - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,SPECIES_ORGANIC) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR) + inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) mutant_bodyparts = list("mam_tail", "mam_body_markings", "mam_ears", "taur") default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF","mam_tail" = "shark", "mam_body_markings" = "None", "mam_ears" = "None") attack_verb = "bite" @@ -91,7 +94,8 @@ name = "Insect" id = "insect" default_color = "BCAC9B" - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,SPECIES_ORGANIC) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR) + inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID, MOB_BUG) mutant_bodyparts = list("mam_body_markings", "mam_ears", "mam_tail", "taur", "moth_wings") default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_body_markings" = "moth", "mam_tail" = "None", "mam_ears" = "None", "moth_wings" = "None") attack_verb = "flutter" //wat? @@ -122,7 +126,8 @@ id = "xeno" say_mod = "hisses" default_color = "00FF00" - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,SPECIES_ORGANIC) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS) + inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) mutant_bodyparts = list("xenotail", "xenohead", "xenodorsal", "legs", "taur","mam_body_markings") default_features = list("xenotail"="xeno","xenohead"="standard","xenodorsal"="standard","mcolor" = "0F0","mcolor2" = "0F0","mcolor3" = "0F0","taur" = "None","mam_body_markings" = "xeno") attack_verb = "slash" @@ -146,60 +151,6 @@ //EXOTIC// //These races will likely include lots of downsides and upsides. Keep them relatively balanced.// -/* -/datum/species/xeno - name = "Xenomorph" - id = "xeno" - say_mod = "hisses" - eyes = "none" - species_traits = list() - mutant_organs = list(/obj/item/organ/tongue/alien) - mutant_bodyparts = list("xenohead", - "xenodorsal", - "xenotail") - default_features = list("xenohead"="Hunter", - "xenodorsal"="Dorsal Tubes", - "xenotail"="Xenomorph Tail") - attack_verb = "slash" - attack_sound = 'sound/weapons/slash.ogg' - miss_sound = 'sound/weapons/slashmiss.ogg' - burnmod = 1.75 - heatmod = 1.75 - darksight = 4 //Just above slimes - exotic_blood = "xblood" - damage_overlay_type = "xeno" - no_equip = list(slot_glasses) //MY EYES, THEY'RE GONE - meat = /obj/item/reagent_containers/food/snacks/meat/slab/xeno - skinned_type = /obj/item/stack/sheet/animalhide/xeno -// safe_toxins_max = 32 //Too much of anything is bad. -// whitelisted = 1 -// whitelist = list("talkingcactus") //testing whitelisting - -/datum/species/xeno/on_species_gain(mob/living/carbon/C, datum/species/old_species) - ..() - var/obj/effect/decal/cleanable/xenoblood/xgibs/XG - if(istype(C.gib_type, XG)) - return - else - C.gib_type = XG - -/datum/species/xeno/on_species_loss(mob/living/carbon/C) - ..() - var/obj/effect/decal/cleanable/xenoblood/xgibs/XG - var/obj/effect/decal/cleanable/blood/gibs/HG - if(istype(C.gib_type, XG)) - C.gib_type = HG - else - return - -/datum/reagent/toxin/acid/xenoblood - name = "acid blood" - id = "xblood" - description = "A highly corrosive substance, it is capable of burning through most natural or man-made materials in short order." - color = "#66CC00" - toxpwr = 0 - acidpwr = 12 */ - //misc /mob/living/carbon/human/dummy diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm index df9d5b4ec6..08d9d73f00 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm @@ -5,7 +5,8 @@ default_color = "00FF00" blacklisted = 0 sexes = 0 - species_traits = list(MUTCOLORS,NOEYES) + species_traits = list(MUTCOLORS,NOEYES,NOTRANSSTING) + inherent_biotypes = list(MOB_ROBOTIC, MOB_HUMANOID) mutant_bodyparts = list("ipc_screen", "ipc_antenna") default_features = list("ipc_screen" = "Blank", "ipc_antenna" = "None") meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/ipc diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index a13b4ae852..7c5154a773 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -7,7 +7,7 @@ name = "Slimeperson" id = "slimeperson" default_color = "00FFFF" - species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD) + species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD) inherent_traits = list(TRAIT_TOXINLOVER) mutant_bodyparts = list("mam_tail", "mam_ears", "taur") default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None") diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm index 402ba97346..a0b304aae0 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm @@ -158,16 +158,15 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! desc = "Fetch the thing!" icon = 'icons/mob/dogborg.dmi' icon_state = "dbag" - //Can hold one big item at a time. Drops contents on unequip.(see inventory.dm) - w_class = 5 - max_w_class = 2 - max_combined_w_class = 2 - storage_slots = 1 - collection_mode = 0 - can_hold = list() // any - cant_hold = list(/obj/item/disk/nuclear) - + w_class = WEIGHT_CLASS_BULKY +/obj/item/storage/bag/borgdelivery/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_w_class = WEIGHT_CLASS_BULKY + STR.max_combined_w_class = 5 + STR.max_items = 1 + STR.cant_hold = typecacheof(list(/obj/item/disk/nuclear)) //Tongue stuff /obj/item/soap/tongue diff --git a/modular_citadel/code/modules/vore/eating/digest_act_vr.dm b/modular_citadel/code/modules/vore/eating/digest_act_vr.dm index faa458ad56..f5f1242493 100644 --- a/modular_citadel/code/modules/vore/eating/digest_act_vr.dm +++ b/modular_citadel/code/modules/vore/eating/digest_act_vr.dm @@ -5,7 +5,7 @@ // Ye default implementation. /obj/item/proc/digest_act(var/atom/movable/item_storage = null) for(var/obj/item/O in contents) - if(istype(O,/obj/item/storage/internal)) //Dump contents from dummy pockets. + if(istype(O,/obj/item/storage)) //Dump contents from dummy pockets. for(var/obj/item/SO in O) if(item_storage) SO.forceMove(item_storage) diff --git a/strings/sillytips.txt b/strings/sillytips.txt index f65f8b483a..27686890cc 100644 --- a/strings/sillytips.txt +++ b/strings/sillytips.txt @@ -28,4 +28,5 @@ Just the tip? Some people are unable to read text on a game where half of it is based on text. As the Captain, you can use a whetstone to sharpen your fancy fountain pen for extra robustness. As the Lawyer, you are the last bastion of roleplay-focused jobs. Even the curator got a whip to go fight people with, that sellout! -There are at least 11 ways to get through plastic flaps. How many can you name? \ No newline at end of file +There are at least 11 ways to get through plastic flaps. How many can you name? +Don't worry, you can always circlejerk your hate on the discord about furries. \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index f851aa65c4..5e793c7e16 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -289,6 +289,7 @@ #include "code\datums\mind.dm" #include "code\datums\mutable_appearance.dm" #include "code\datums\mutations.dm" +#include "code\datums\numbered_display.dm" #include "code\datums\outfit.dm" #include "code\datums\position_point_vector.dm" #include "code\datums\profiling.dm" @@ -344,6 +345,15 @@ #include "code\datums\components\thermite.dm" #include "code\datums\components\wet_floor.dm" #include "code\datums\components\decals\blood.dm" +#include "code\datums\components\storage\storage.dm" +#include "code\datums\components\storage\concrete\_concrete.dm" +#include "code\datums\components\storage\concrete\bag_of_holding.dm" +#include "code\datums\components\storage\concrete\bluespace.dm" +#include "code\datums\components\storage\concrete\implant.dm" +#include "code\datums\components\storage\concrete\pockets.dm" +#include "code\datums\components\storage\concrete\rped.dm" +#include "code\datums\components\storage\concrete\special.dm" +#include "code\datums\components\storage\concrete\stack.dm" #include "code\datums\diseases\_disease.dm" #include "code\datums\diseases\_MobProcs.dm" #include "code\datums\diseases\anxiety.dm" @@ -883,7 +893,6 @@ #include "code\game\objects\items\storage\dakis.dm" #include "code\game\objects\items\storage\fancy.dm" #include "code\game\objects\items\storage\firstaid.dm" -#include "code\game\objects\items\storage\internal.dm" #include "code\game\objects\items\storage\lockbox.dm" #include "code\game\objects\items\storage\secure.dm" #include "code\game\objects\items\storage\storage.dm" @@ -994,7 +1003,8 @@ #include "code\game\objects\structures\transit_tubes\transit_tube.dm" #include "code\game\objects\structures\transit_tubes\transit_tube_construction.dm" #include "code\game\objects\structures\transit_tubes\transit_tube_pod.dm" -#include "code\game\turfs\ChangeTurf.dm" +#include "code\game\turfs\baseturf_skipover.dm" +#include "code\game\turfs\change_turf.dm" #include "code\game\turfs\closed.dm" #include "code\game\turfs\open.dm" #include "code\game\turfs\turf.dm" @@ -1056,6 +1066,7 @@ #include "code\modules\admin\verbs\ak47s.dm" #include "code\modules\admin\verbs\atmosdebug.dm" #include "code\modules\admin\verbs\bluespacearty.dm" +#include "code\modules\admin\verbs\borgpanel.dm" #include "code\modules\admin\verbs\BrokenInhands.dm" #include "code\modules\admin\verbs\buildmode.dm" #include "code\modules\admin\verbs\cinematic.dm" @@ -1339,7 +1350,6 @@ #include "code\modules\cargo\expressconsole.dm" #include "code\modules\cargo\order.dm" #include "code\modules\cargo\packs.dm" -#include "code\modules\cargo\vg_clothing_packs.dm" #include "code\modules\cargo\exports\gear.dm" #include "code\modules\cargo\exports\intel.dm" #include "code\modules\cargo\exports\large_objects.dm" @@ -2703,15 +2713,6 @@ #include "modular_citadel\code\modules\admin\holder2.dm" #include "modular_citadel\code\modules\admin\secrets.dm" #include "modular_citadel\code\modules\admin\topic.dm" -#include "modular_citadel\code\modules\antagonists\cit_crewobjectives.dm" -#include "modular_citadel\code\modules\antagonists\cit_miscreants.dm" -#include "modular_citadel\code\modules\antagonists\crew_objectives\cit_crewobjectives_cargo.dm" -#include "modular_citadel\code\modules\antagonists\crew_objectives\cit_crewobjectives_civilian.dm" -#include "modular_citadel\code\modules\antagonists\crew_objectives\cit_crewobjectives_command.dm" -#include "modular_citadel\code\modules\antagonists\crew_objectives\cit_crewobjectives_engineering.dm" -#include "modular_citadel\code\modules\antagonists\crew_objectives\cit_crewobjectives_medical.dm" -#include "modular_citadel\code\modules\antagonists\crew_objectives\cit_crewobjectives_science.dm" -#include "modular_citadel\code\modules\antagonists\crew_objectives\cit_crewobjectives_security.dm" #include "modular_citadel\code\modules\antagonists\cult\blood_magic.dm" #include "modular_citadel\code\modules\arousal\arousal.dm" #include "modular_citadel\code\modules\arousal\organs\breasts.dm" diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index 6476446710..f2a15d915f 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -1,18 +1,18 @@ -require=function t(e,n,a){function r(o,s){if(!n[o]){if(!e[o]){var p="function"==typeof require&&require;if(!s&&p)return p(o,!0);if(i)return i(o,!0);var u=Error("Cannot find module '"+o+"'");throw u.code="MODULE_NOT_FOUND",u}var c=n[o]={exports:{}};e[o][0].call(c.exports,function(t){var n=e[o][1][t];return r(n?n:t)},c,c.exports,t,e,n,a)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o2?u[2]:void 0,l=Math.min((void 0===c?o:r(c,o))-p,o-s),d=1;for(s>p&&p+l>s&&(d=-1,p+=l-1,s+=l-1);l-- >0;)p in n?n[s]=n[p]:delete n[s],s+=d,p+=d;return n}},{76:76,79:79,80:80}],6:[function(t,e,n){"use strict";var a=t(80),r=t(76),i=t(79);e.exports=[].fill||function(t){for(var e=a(this),n=i(e.length),o=arguments,s=o.length,p=r(s>1?o[1]:void 0,n),u=s>2?o[2]:void 0,c=void 0===u?n:r(u,n);c>p;)e[p++]=t;return e}},{76:76,79:79,80:80}],7:[function(t,e,n){var a=t(78),r=t(79),i=t(76);e.exports=function(t){return function(e,n,o){var s,p=a(e),u=r(p.length),c=i(o,u);if(t&&n!=n){for(;u>c;)if(s=p[c++],s!=s)return!0}else for(;u>c;c++)if((t||c in p)&&p[c]===n)return t||c;return!t&&-1}}},{76:76,78:78,79:79}],8:[function(t,e,n){var a=t(17),r=t(34),i=t(80),o=t(79),s=t(9);e.exports=function(t){var e=1==t,n=2==t,p=3==t,u=4==t,c=6==t,l=5==t||c;return function(d,f,h){for(var m,g,v=i(d),b=r(v),y=a(f,h,3),x=o(b.length),_=0,w=e?s(d,x):n?s(d,0):void 0;x>_;_++)if((l||_ in b)&&(m=b[_],g=y(m,_,v),t))if(e)w[_]=g;else if(g)switch(t){case 3:return!0;case 5:return m;case 6:return _;case 2:w.push(m)}else if(u)return!1;return c?-1:p||u?u:w}}},{17:17,34:34,79:79,80:80,9:9}],9:[function(t,e,n){var a=t(38),r=t(36),i=t(83)("species");e.exports=function(t,e){var n;return r(t)&&(n=t.constructor,"function"!=typeof n||n!==Array&&!r(n.prototype)||(n=void 0),a(n)&&(n=n[i],null===n&&(n=void 0))),new(void 0===n?Array:n)(e)}},{36:36,38:38,83:83}],10:[function(t,e,n){var a=t(11),r=t(83)("toStringTag"),i="Arguments"==a(function(){return arguments}());e.exports=function(t){var e,n,o;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=(e=Object(t))[r])?n:i?a(e):"Object"==(o=a(e))&&"function"==typeof e.callee?"Arguments":o}},{11:11,83:83}],11:[function(t,e,n){var a={}.toString;e.exports=function(t){return a.call(t).slice(8,-1)}},{}],12:[function(t,e,n){"use strict";var a=t(46),r=t(31),i=t(60),o=t(17),s=t(69),p=t(18),u=t(27),c=t(42),l=t(44),d=t(82)("id"),f=t(30),h=t(38),m=t(65),g=t(19),v=Object.isExtensible||h,b=g?"_s":"size",y=0,x=function(t,e){if(!h(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!f(t,d)){if(!v(t))return"F";if(!e)return"E";r(t,d,++y)}return"O"+t[d]},_=function(t,e){var n,a=x(e);if("F"!==a)return t._i[a];for(n=t._f;n;n=n.n)if(n.k==e)return n};e.exports={getConstructor:function(t,e,n,r){var c=t(function(t,i){s(t,c,e),t._i=a.create(null),t._f=void 0,t._l=void 0,t[b]=0,void 0!=i&&u(i,n,t[r],t)});return i(c.prototype,{clear:function(){for(var t=this,e=t._i,n=t._f;n;n=n.n)n.r=!0,n.p&&(n.p=n.p.n=void 0),delete e[n.i];t._f=t._l=void 0,t[b]=0},"delete":function(t){var e=this,n=_(e,t);if(n){var a=n.n,r=n.p;delete e._i[n.i],n.r=!0,r&&(r.n=a),a&&(a.p=r),e._f==n&&(e._f=a),e._l==n&&(e._l=r),e[b]--}return!!n},forEach:function(t){for(var e,n=o(t,arguments.length>1?arguments[1]:void 0,3);e=e?e.n:this._f;)for(n(e.v,e.k,this);e&&e.r;)e=e.p},has:function(t){return!!_(this,t)}}),g&&a.setDesc(c.prototype,"size",{get:function(){return p(this[b])}}),c},def:function(t,e,n){var a,r,i=_(t,e);return i?i.v=n:(t._l=i={i:r=x(e,!0),k:e,v:n,p:a=t._l,n:void 0,r:!1},t._f||(t._f=i),a&&(a.n=i),t[b]++,"F"!==r&&(t._i[r]=i)),t},getEntry:_,setStrong:function(t,e,n){c(t,e,function(t,e){this._t=t,this._k=e,this._l=void 0},function(){for(var t=this,e=t._k,n=t._l;n&&n.r;)n=n.p;return t._t&&(t._l=n=n?n.n:t._t._f)?"keys"==e?l(0,n.k):"values"==e?l(0,n.v):l(0,[n.k,n.v]):(t._t=void 0,l(1))},n?"entries":"values",!n,!0),m(e)}}},{17:17,18:18,19:19,27:27,30:30,31:31,38:38,42:42,44:44,46:46,60:60,65:65,69:69,82:82}],13:[function(t,e,n){var a=t(27),r=t(10);e.exports=function(t){return function(){if(r(this)!=t)throw TypeError(t+"#toJSON isn't generic");var e=[];return a(this,!1,e.push,e),e}}},{10:10,27:27}],14:[function(t,e,n){"use strict";var a=t(31),r=t(60),i=t(4),o=t(38),s=t(69),p=t(27),u=t(8),c=t(30),l=t(82)("weak"),d=Object.isExtensible||o,f=u(5),h=u(6),m=0,g=function(t){return t._l||(t._l=new v)},v=function(){this.a=[]},b=function(t,e){return f(t.a,function(t){return t[0]===e})};v.prototype={get:function(t){var e=b(this,t);return e?e[1]:void 0},has:function(t){return!!b(this,t)},set:function(t,e){var n=b(this,t);n?n[1]=e:this.a.push([t,e])},"delete":function(t){var e=h(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},e.exports={getConstructor:function(t,e,n,a){var i=t(function(t,r){s(t,i,e),t._i=m++,t._l=void 0,void 0!=r&&p(r,n,t[a],t)});return r(i.prototype,{"delete":function(t){return o(t)?d(t)?c(t,l)&&c(t[l],this._i)&&delete t[l][this._i]:g(this)["delete"](t):!1},has:function(t){return o(t)?d(t)?c(t,l)&&c(t[l],this._i):g(this).has(t):!1}}),i},def:function(t,e,n){return d(i(e))?(c(e,l)||a(e,l,{}),e[l][t._i]=n):g(t).set(e,n),t},frozenStore:g,WEAK:l}},{27:27,30:30,31:31,38:38,4:4,60:60,69:69,8:8,82:82}],15:[function(t,e,n){"use strict";var a=t(29),r=t(22),i=t(61),o=t(60),s=t(27),p=t(69),u=t(38),c=t(24),l=t(43),d=t(66);e.exports=function(t,e,n,f,h,m){var g=a[t],v=g,b=h?"set":"add",y=v&&v.prototype,x={},_=function(t){var e=y[t];i(y,t,"delete"==t?function(t){return m&&!u(t)?!1:e.call(this,0===t?0:t)}:"has"==t?function(t){return m&&!u(t)?!1:e.call(this,0===t?0:t)}:"get"==t?function(t){return m&&!u(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof v&&(m||y.forEach&&!c(function(){(new v).entries().next()}))){var w,k=new v,E=k[b](m?{}:-0,1)!=k,S=c(function(){k.has(1)}),C=l(function(t){new v(t)});C||(v=e(function(e,n){p(e,v,t);var a=new g;return void 0!=n&&s(n,h,a[b],a),a}),v.prototype=y,y.constructor=v),m||k.forEach(function(t,e){w=1/e===-(1/0)}),(S||w)&&(_("delete"),_("has"),h&&_("get")),(w||E)&&_(b),m&&y.clear&&delete y.clear}else v=f.getConstructor(e,t,h,b),o(v.prototype,n);return d(v,t),x[t]=v,r(r.G+r.W+r.F*(v!=g),x),m||f.setStrong(v,t,h),v}},{22:22,24:24,27:27,29:29,38:38,43:43,60:60,61:61,66:66,69:69}],16:[function(t,e,n){var a=e.exports={version:"1.2.6"};"number"==typeof __e&&(__e=a)},{}],17:[function(t,e,n){var a=t(2);e.exports=function(t,e,n){if(a(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,a){return t.call(e,n,a)};case 3:return function(n,a,r){return t.call(e,n,a,r)}}return function(){return t.apply(e,arguments)}}},{2:2}],18:[function(t,e,n){e.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},{}],19:[function(t,e,n){e.exports=!t(24)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{24:24}],20:[function(t,e,n){var a=t(38),r=t(29).document,i=a(r)&&a(r.createElement);e.exports=function(t){return i?r.createElement(t):{}}},{29:29,38:38}],21:[function(t,e,n){var a=t(46);e.exports=function(t){var e=a.getKeys(t),n=a.getSymbols;if(n)for(var r,i=n(t),o=a.isEnum,s=0;i.length>s;)o.call(t,r=i[s++])&&e.push(r);return e}},{46:46}],22:[function(t,e,n){var a=t(29),r=t(16),i=t(31),o=t(61),s=t(17),p="prototype",u=function(t,e,n){var c,l,d,f,h=t&u.F,m=t&u.G,g=t&u.S,v=t&u.P,b=t&u.B,y=m?a:g?a[e]||(a[e]={}):(a[e]||{})[p],x=m?r:r[e]||(r[e]={}),_=x[p]||(x[p]={});m&&(n=e);for(c in n)l=!h&&y&&c in y,d=(l?y:n)[c],f=b&&l?s(d,a):v&&"function"==typeof d?s(Function.call,d):d,y&&!l&&o(y,c,d),x[c]!=d&&i(x,c,f),v&&_[c]!=d&&(_[c]=d)};a.core=r,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,e.exports=u},{16:16,17:17,29:29,31:31,61:61}],23:[function(t,e,n){var a=t(83)("match");e.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[a]=!1,!"/./"[t](e)}catch(r){}}return!0}},{83:83}],24:[function(t,e,n){e.exports=function(t){try{return!!t()}catch(e){return!0}}},{}],25:[function(t,e,n){"use strict";var a=t(31),r=t(61),i=t(24),o=t(18),s=t(83);e.exports=function(t,e,n){var p=s(t),u=""[t];i(function(){var e={};return e[p]=function(){return 7},7!=""[t](e)})&&(r(String.prototype,t,n(o,p,u)),a(RegExp.prototype,p,2==e?function(t,e){return u.call(t,this,e)}:function(t){return u.call(t,this)}))}},{18:18,24:24,31:31,61:61,83:83}],26:[function(t,e,n){"use strict";var a=t(4);e.exports=function(){var t=a(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},{4:4}],27:[function(t,e,n){var a=t(17),r=t(40),i=t(35),o=t(4),s=t(79),p=t(84);e.exports=function(t,e,n,u){var c,l,d,f=p(t),h=a(n,u,e?2:1),m=0;if("function"!=typeof f)throw TypeError(t+" is not iterable!");if(i(f))for(c=s(t.length);c>m;m++)e?h(o(l=t[m])[0],l[1]):h(t[m]);else for(d=f.call(t);!(l=d.next()).done;)r(d,h,l.value,e)}},{17:17,35:35,4:4,40:40,79:79,84:84}],28:[function(t,e,n){var a=t(78),r=t(46).getNames,i={}.toString,o="object"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(t){try{return r(t)}catch(e){return o.slice()}};e.exports.get=function(t){return o&&"[object Window]"==i.call(t)?s(t):r(a(t))}},{46:46,78:78}],29:[function(t,e,n){var a=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=a)},{}],30:[function(t,e,n){var a={}.hasOwnProperty;e.exports=function(t,e){return a.call(t,e)}},{}],31:[function(t,e,n){var a=t(46),r=t(59);e.exports=t(19)?function(t,e,n){return a.setDesc(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},{19:19,46:46,59:59}],32:[function(t,e,n){e.exports=t(29).document&&document.documentElement},{29:29}],33:[function(t,e,n){e.exports=function(t,e,n){var a=void 0===n;switch(e.length){case 0:return a?t():t.call(n);case 1:return a?t(e[0]):t.call(n,e[0]);case 2:return a?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return a?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return a?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},{}],34:[function(t,e,n){var a=t(11);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==a(t)?t.split(""):Object(t)}},{11:11}],35:[function(t,e,n){var a=t(45),r=t(83)("iterator"),i=Array.prototype;e.exports=function(t){return void 0!==t&&(a.Array===t||i[r]===t)}},{45:45,83:83}],36:[function(t,e,n){var a=t(11);e.exports=Array.isArray||function(t){return"Array"==a(t)}},{11:11}],37:[function(t,e,n){var a=t(38),r=Math.floor;e.exports=function(t){return!a(t)&&isFinite(t)&&r(t)===t}},{38:38}],38:[function(t,e,n){e.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},{}],39:[function(t,e,n){var a=t(38),r=t(11),i=t(83)("match");e.exports=function(t){var e;return a(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==r(t))}},{11:11,38:38,83:83}],40:[function(t,e,n){var a=t(4);e.exports=function(t,e,n,r){try{return r?e(a(n)[0],n[1]):e(n)}catch(i){var o=t["return"];throw void 0!==o&&a(o.call(t)),i}}},{4:4}],41:[function(t,e,n){"use strict";var a=t(46),r=t(59),i=t(66),o={};t(31)(o,t(83)("iterator"),function(){return this}),e.exports=function(t,e,n){t.prototype=a.create(o,{next:r(1,n)}),i(t,e+" Iterator")}},{31:31,46:46,59:59,66:66,83:83}],42:[function(t,e,n){"use strict";var a=t(48),r=t(22),i=t(61),o=t(31),s=t(30),p=t(45),u=t(41),c=t(66),l=t(46).getProto,d=t(83)("iterator"),f=!([].keys&&"next"in[].keys()),h="@@iterator",m="keys",g="values",v=function(){return this};e.exports=function(t,e,n,b,y,x,_){u(n,e,b);var w,k,E=function(t){if(!f&&t in A)return A[t];switch(t){case m:return function(){return new n(this,t)};case g:return function(){return new n(this,t)}}return function(){return new n(this,t)}},S=e+" Iterator",C=y==g,P=!1,A=t.prototype,O=A[d]||A[h]||y&&A[y],T=O||E(y);if(O){var R=l(T.call(new t));c(R,S,!0),!a&&s(A,h)&&o(R,d,v),C&&O.name!==g&&(P=!0,T=function(){return O.call(this)})}if(a&&!_||!f&&!P&&A[d]||o(A,d,T),p[e]=T,p[S]=v,y)if(w={values:C?T:E(g),keys:x?T:E(m),entries:C?E("entries"):T},_)for(k in w)k in A||i(A,k,w[k]);else r(r.P+r.F*(f||P),e,w);return w}},{22:22,30:30,31:31,41:41,45:45,46:46,48:48,61:61,66:66,83:83}],43:[function(t,e,n){var a=t(83)("iterator"),r=!1;try{var i=[7][a]();i["return"]=function(){r=!0},Array.from(i,function(){throw 2})}catch(o){}e.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var i=[7],o=i[a]();o.next=function(){return{done:n=!0}},i[a]=function(){return o},t(i)}catch(s){}return n}},{83:83}],44:[function(t,e,n){e.exports=function(t,e){return{value:e,done:!!t}}},{}],45:[function(t,e,n){e.exports={}},{}],46:[function(t,e,n){var a=Object;e.exports={create:a.create,getProto:a.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:a.getOwnPropertyDescriptor,setDesc:a.defineProperty,setDescs:a.defineProperties,getKeys:a.keys,getNames:a.getOwnPropertyNames,getSymbols:a.getOwnPropertySymbols,each:[].forEach}},{}],47:[function(t,e,n){var a=t(46),r=t(78);e.exports=function(t,e){for(var n,i=r(t),o=a.getKeys(i),s=o.length,p=0;s>p;)if(i[n=o[p++]]===e)return n}},{46:46,78:78}],48:[function(t,e,n){e.exports=!1},{}],49:[function(t,e,n){e.exports=Math.expm1||function(t){return 0==(t=+t)?t:t>-1e-6&&1e-6>t?t+t*t/2:Math.exp(t)-1}},{}],50:[function(t,e,n){e.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&1e-8>t?t-t*t/2:Math.log(1+t)}},{}],51:[function(t,e,n){e.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:0>t?-1:1}},{}],52:[function(t,e,n){var a,r,i,o=t(29),s=t(75).set,p=o.MutationObserver||o.WebKitMutationObserver,u=o.process,c=o.Promise,l="process"==t(11)(u),d=function(){var t,e,n;for(l&&(t=u.domain)&&(u.domain=null,t.exit());a;)e=a.domain,n=a.fn,e&&e.enter(),n(),e&&e.exit(),a=a.next;r=void 0,t&&t.enter()};if(l)i=function(){u.nextTick(d)};else if(p){var f=1,h=document.createTextNode("");new p(d).observe(h,{characterData:!0}),i=function(){h.data=f=-f}}else i=c&&c.resolve?function(){c.resolve().then(d)}:function(){s.call(o,d)};e.exports=function(t){var e={fn:t,next:void 0,domain:l&&u.domain};r&&(r.next=e),a||(a=e,i()),r=e}},{11:11,29:29,75:75}],53:[function(t,e,n){var a=t(46),r=t(80),i=t(34);e.exports=t(24)(function(){var t=Object.assign,e={},n={},a=Symbol(),r="abcdefghijklmnopqrst";return e[a]=7,r.split("").forEach(function(t){n[t]=t}),7!=t({},e)[a]||Object.keys(t({},n)).join("")!=r})?function(t,e){for(var n=r(t),o=arguments,s=o.length,p=1,u=a.getKeys,c=a.getSymbols,l=a.isEnum;s>p;)for(var d,f=i(o[p++]),h=c?u(f).concat(c(f)):u(f),m=h.length,g=0;m>g;)l.call(f,d=h[g++])&&(n[d]=f[d]);return n}:Object.assign},{24:24,34:34,46:46,80:80}],54:[function(t,e,n){var a=t(22),r=t(16),i=t(24);e.exports=function(t,e){var n=(r.Object||{})[t]||Object[t],o={};o[t]=e(n),a(a.S+a.F*i(function(){n(1)}),"Object",o)}},{16:16,22:22,24:24}],55:[function(t,e,n){var a=t(46),r=t(78),i=a.isEnum;e.exports=function(t){return function(e){for(var n,o=r(e),s=a.getKeys(o),p=s.length,u=0,c=[];p>u;)i.call(o,n=s[u++])&&c.push(t?[n,o[n]]:o[n]);return c}}},{46:46,78:78}],56:[function(t,e,n){var a=t(46),r=t(4),i=t(29).Reflect;e.exports=i&&i.ownKeys||function(t){var e=a.getNames(r(t)),n=a.getSymbols;return n?e.concat(n(t)):e}},{29:29,4:4,46:46}],57:[function(t,e,n){"use strict";var a=t(58),r=t(33),i=t(2);e.exports=function(){for(var t=i(this),e=arguments.length,n=Array(e),o=0,s=a._,p=!1;e>o;)(n[o]=arguments[o++])===s&&(p=!0);return function(){var a,i=this,o=arguments,u=o.length,c=0,l=0;if(!p&&!u)return r(t,n,i);if(a=n.slice(),p)for(;e>c;c++)a[c]===s&&(a[c]=o[l++]);for(;u>l;)a.push(o[l++]);return r(t,a,i)}}},{2:2,33:33,58:58}],58:[function(t,e,n){e.exports=t(29)},{29:29}],59:[function(t,e,n){e.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},{}],60:[function(t,e,n){var a=t(61);e.exports=function(t,e){for(var n in e)a(t,n,e[n]);return t}},{61:61}],61:[function(t,e,n){var a=t(29),r=t(31),i=t(82)("src"),o="toString",s=Function[o],p=(""+s).split(o);t(16).inspectSource=function(t){return s.call(t)},(e.exports=function(t,e,n,o){"function"==typeof n&&(n.hasOwnProperty(i)||r(n,i,t[e]?""+t[e]:p.join(e+"")),n.hasOwnProperty("name")||r(n,"name",e)),t===a?t[e]=n:(o||delete t[e],r(t,e,n))})(Function.prototype,o,function(){return"function"==typeof this&&this[i]||s.call(this)})},{16:16,29:29,31:31,82:82}],62:[function(t,e,n){e.exports=function(t,e){var n=e===Object(e)?function(t){return e[t]}:e;return function(e){return(e+"").replace(t,n)}}},{}],63:[function(t,e,n){e.exports=Object.is||function(t,e){return t===e?0!==t||1/t===1/e:t!=t&&e!=e}},{}],64:[function(t,e,n){var a=t(46).getDesc,r=t(38),i=t(4),o=function(t,e){if(i(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,n,r){try{r=t(17)(Function.call,a(Object.prototype,"__proto__").set,2),r(e,[]),n=!(e instanceof Array)}catch(i){n=!0}return function(t,e){return o(t,e),n?t.__proto__=e:r(t,e),t}}({},!1):void 0),check:o}},{17:17,38:38,4:4,46:46}],65:[function(t,e,n){"use strict";var a=t(29),r=t(46),i=t(19),o=t(83)("species");e.exports=function(t){var e=a[t];i&&e&&!e[o]&&r.setDesc(e,o,{configurable:!0,get:function(){return this}})}},{19:19,29:29,46:46,83:83}],66:[function(t,e,n){var a=t(46).setDesc,r=t(30),i=t(83)("toStringTag");e.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,i)&&a(t,i,{configurable:!0,value:e})}},{30:30,46:46,83:83}],67:[function(t,e,n){var a=t(29),r="__core-js_shared__",i=a[r]||(a[r]={});e.exports=function(t){return i[t]||(i[t]={})}},{29:29}],68:[function(t,e,n){var a=t(4),r=t(2),i=t(83)("species");e.exports=function(t,e){var n,o=a(t).constructor;return void 0===o||void 0==(n=a(o)[i])?e:r(n)}},{2:2,4:4,83:83}],69:[function(t,e,n){e.exports=function(t,e,n){if(!(t instanceof e))throw TypeError(n+": use the 'new' operator!");return t}},{}],70:[function(t,e,n){var a=t(77),r=t(18);e.exports=function(t){return function(e,n){var i,o,s=r(e)+"",p=a(n),u=s.length;return 0>p||p>=u?t?"":void 0:(i=s.charCodeAt(p),55296>i||i>56319||p+1===u||(o=s.charCodeAt(p+1))<56320||o>57343?t?s.charAt(p):i:t?s.slice(p,p+2):(i-55296<<10)+(o-56320)+65536)}}},{18:18,77:77}],71:[function(t,e,n){var a=t(39),r=t(18);e.exports=function(t,e,n){if(a(e))throw TypeError("String#"+n+" doesn't accept regex!");return r(t)+""}},{18:18,39:39}],72:[function(t,e,n){var a=t(79),r=t(73),i=t(18);e.exports=function(t,e,n,o){var s=i(t)+"",p=s.length,u=void 0===n?" ":n+"",c=a(e);if(p>=c)return s;""==u&&(u=" ");var l=c-p,d=r.call(u,Math.ceil(l/u.length));return d.length>l&&(d=d.slice(0,l)),o?d+s:s+d}},{18:18,73:73,79:79}],73:[function(t,e,n){"use strict";var a=t(77),r=t(18);e.exports=function(t){var e=r(this)+"",n="",i=a(t);if(0>i||i==1/0)throw RangeError("Count can't be negative");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},{18:18,77:77}],74:[function(t,e,n){var a=t(22),r=t(18),i=t(24),o=" \n\x0B\f\r   ᠎              \u2028\u2029\ufeff",s="["+o+"]",p="​…",u=RegExp("^"+s+s+"*"),c=RegExp(s+s+"*$"),l=function(t,e){var n={};n[t]=e(d),a(a.P+a.F*i(function(){return!!o[t]()||p[t]()!=p}),"String",n)},d=l.trim=function(t,e){return t=r(t)+"",1&e&&(t=t.replace(u,"")),2&e&&(t=t.replace(c,"")),t};e.exports=l},{18:18,22:22,24:24}],75:[function(t,e,n){var a,r,i,o=t(17),s=t(33),p=t(32),u=t(20),c=t(29),l=c.process,d=c.setImmediate,f=c.clearImmediate,h=c.MessageChannel,m=0,g={},v="onreadystatechange",b=function(){var t=+this;if(g.hasOwnProperty(t)){var e=g[t];delete g[t],e()}},y=function(t){b.call(t.data)};d&&f||(d=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return g[++m]=function(){s("function"==typeof t?t:Function(t),e)},a(m),m},f=function(t){delete g[t]},"process"==t(11)(l)?a=function(t){l.nextTick(o(b,t,1))}:h?(r=new h,i=r.port2,r.port1.onmessage=y,a=o(i.postMessage,i,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts?(a=function(t){c.postMessage(t+"","*")},c.addEventListener("message",y,!1)):a=v in u("script")?function(t){p.appendChild(u("script"))[v]=function(){p.removeChild(this),b.call(t)}}:function(t){setTimeout(o(b,t,1),0)}),e.exports={set:d,clear:f}},{11:11,17:17,20:20,29:29,32:32,33:33}],76:[function(t,e,n){var a=t(77),r=Math.max,i=Math.min;e.exports=function(t,e){return t=a(t),0>t?r(t+e,0):i(t,e)}},{77:77}],77:[function(t,e,n){var a=Math.ceil,r=Math.floor;e.exports=function(t){return isNaN(t=+t)?0:(t>0?r:a)(t)}},{}],78:[function(t,e,n){var a=t(34),r=t(18);e.exports=function(t){return a(r(t))}},{18:18,34:34}],79:[function(t,e,n){var a=t(77),r=Math.min;e.exports=function(t){return t>0?r(a(t),9007199254740991):0}},{77:77}],80:[function(t,e,n){var a=t(18);e.exports=function(t){return Object(a(t))}},{18:18}],81:[function(t,e,n){var a=t(38);e.exports=function(t,e){if(!a(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!a(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},{38:38}],82:[function(t,e,n){var a=0,r=Math.random();e.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++a+r).toString(36))}},{}],83:[function(t,e,n){var a=t(67)("wks"),r=t(82),i=t(29).Symbol;e.exports=function(t){return a[t]||(a[t]=i&&i[t]||(i||r)("Symbol."+t))}},{29:29,67:67,82:82}],84:[function(t,e,n){var a=t(10),r=t(83)("iterator"),i=t(45);e.exports=t(16).getIteratorMethod=function(t){return void 0!=t?t[r]||t["@@iterator"]||i[a(t)]:void 0}},{10:10,16:16,45:45,83:83}],85:[function(t,e,n){"use strict";var a,r=t(46),i=t(22),o=t(19),s=t(59),p=t(32),u=t(20),c=t(30),l=t(11),d=t(33),f=t(24),h=t(4),m=t(2),g=t(38),v=t(80),b=t(78),y=t(77),x=t(76),_=t(79),w=t(34),k=t(82)("__proto__"),E=t(8),S=t(7)(!1),C=Object.prototype,P=Array.prototype,A=P.slice,O=P.join,T=r.setDesc,R=r.getDesc,L=r.setDescs,j={};o||(a=!f(function(){return 7!=T(u("div"),"a",{get:function(){return 7}}).a}),r.setDesc=function(t,e,n){if(a)try{return T(t,e,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(h(t)[e]=n.value),t},r.getDesc=function(t,e){if(a)try{return R(t,e)}catch(n){}return c(t,e)?s(!C.propertyIsEnumerable.call(t,e),t[e]):void 0},r.setDescs=L=function(t,e){h(t);for(var n,a=r.getKeys(e),i=a.length,o=0;i>o;)r.setDesc(t,n=a[o++],e[n]);return t}),i(i.S+i.F*!o,"Object",{getOwnPropertyDescriptor:r.getDesc,defineProperty:r.setDesc,defineProperties:L});var D="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(","),M=D.concat("length","prototype"),N=D.length,F=function(){var t,e=u("iframe"),n=N,a=">";for(e.style.display="none",p.appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(" @@ -45,7 +39,7 @@ - {{#each sorted_sensors}} + {{#each data.sensors}}